feat: add system test validation and router admin controls

This commit is contained in:
john
2026-07-04 23:01:30 +08:00
parent d2b97491ef
commit f63bb894d9
12 changed files with 981 additions and 3 deletions
+67
View File
@@ -97,6 +97,8 @@ export function createAdminApp(services) {
loadMindSpaceConfig,
updateMindSpaceConfig,
memoryV2ConfigService,
adminSystemTestService,
systemTestAccountService,
wordFilterService,
planCatalogService,
subscriptionService,
@@ -315,6 +317,71 @@ export function createAdminApp(services) {
res.json(result);
});
adminApi.get('/system-tests/accounts', requireAdmin, async (_req, res) => {
if (!systemTestAccountService) {
return res.status(503).json({ message: '系统测试账号服务未启用' });
}
const accounts = await systemTestAccountService.listAccounts();
res.json({ accounts });
});
adminApi.post('/system-tests/accounts', requireAdmin, async (req, res) => {
if (!systemTestAccountService) {
return res.status(503).json({ message: '系统测试账号服务未启用' });
}
const result = await systemTestAccountService.createAccount({
label: req.body?.label,
username: req.body?.username,
password: req.body?.password,
updatedBy: req.currentUser.id,
});
if (!result.ok) {
return res.status(400).json({ message: result.message ?? '保存测试账号失败' });
}
res.status(201).json({ account: result.account });
});
adminApi.delete('/system-tests/accounts/:accountId', requireAdmin, async (req, res) => {
if (!systemTestAccountService) {
return res.status(503).json({ message: '系统测试账号服务未启用' });
}
const result = await systemTestAccountService.deleteAccount(req.params.accountId);
if (!result.ok) {
return res.status(404).json({ message: result.message ?? '测试账号不存在' });
}
res.status(204).end();
});
adminApi.post('/system-tests/skill-validation', requireAdmin, async (req, res) => {
if (!adminSystemTestService?.runSkillValidation) {
return res.status(503).json({ message: '系统测试服务未启用' });
}
const accountId = String(req.body?.accountId ?? '').trim();
let username = String(req.body?.username ?? '').trim();
let password = String(req.body?.password ?? '');
const skillName = String(req.body?.skillName ?? '').trim();
if (accountId) {
if (!systemTestAccountService) {
return res.status(503).json({ message: '系统测试账号服务未启用' });
}
const account = await systemTestAccountService.getAccountSecret(accountId);
if (!account) {
return res.status(404).json({ message: '所选测试账号不存在,请刷新后重试' });
}
username = account.username;
password = account.password;
}
if (!username || !password) {
return res.status(400).json({ message: '请输入账号和密码' });
}
const result = await adminSystemTestService.runSkillValidation({
username,
password,
skillName,
});
res.json(result);
});
adminApi.get('/wechat/bindings', requireAdmin, async (req, res) => {
if (!wechatAdmin) return res.status(503).json({ message: '服务号管理未启用' });
res.json(await wechatAdmin.listBindings(req.query));