Files
agent/mock/workflow.ts

75 lines
2.9 KiB
TypeScript
Raw Normal View History

2026-02-16 12:46:37 +08:00
import { Request, Response } from 'express';
import { WorkflowTask } from '../src/pages/WorkflowOrchestrator/data';
// 模拟内存数据库
let workflowData: WorkflowTask[] = [
{
id: 'wf-001',
name: '自动化 UI 部署任务',
status: 'executing',
progress: 30,
currentStepId: 'step-2',
createTime: '2024-03-20 10:00:00',
steps: [
{ id: 'step-1', agentName: 'Planning Agent', status: 'success', startTime: '10:00', logs: '已完成架构设计与需求拆解。' },
{ id: 'step-2', agentName: 'Frontend Agent', status: 'executing', startTime: '10:05', logs: '正在编写 ProTable 组件代码,应用 Design Tokens...' },
{ id: 'step-3', agentName: 'QA Agent', status: 'thinking', startTime: '10:10', logs: '待执行回归测试。' },
],
},
{
id: 'wf-002',
name: '后端 API 重构',
status: 'success',
progress: 100,
currentStepId: 'step-2',
createTime: '2024-03-20 09:30:00',
steps: [
{ id: 'step-1', agentName: 'Architect', status: 'success', startTime: '09:30', logs: 'API 路径规范化已通过。' },
{ id: 'step-2', agentName: 'Backend Dev', status: 'success', startTime: '09:45', logs: '完成 Swagger 契约自动生成。' },
],
},
{
id: 'wf-003',
name: '性能压力测试',
status: 'failed',
progress: 65,
currentStepId: 'step-2',
createTime: '2024-03-20 11:00:00',
steps: [
{ id: 'step-1', agentName: 'DevOps Agent', status: 'success', startTime: '11:00', logs: '环境已就绪。' },
{ id: 'step-2', agentName: 'QA Agent', status: 'failed', startTime: '11:15', logs: '内存溢出错误JVM heap size exceeded.' },
],
},
];
export default {
'GET /api/workflow/list': (req: Request, res: Response) => {
// 动态更新逻辑:每次列表请求都模拟进度步进
workflowData = workflowData.map((task) => {
if (task.status === 'executing' && task.progress < 100) {
const nextProgress = Math.min(task.progress + 5, 100);
return {
...task,
progress: nextProgress,
status: nextProgress === 100 ? 'success' : 'executing',
};
}
return task;
});
res.send({ data: workflowData, total: workflowData.length });
},
'POST /api/workflow/:id/control': (req: Request, res: Response) => {
const { id } = req.params;
const { action } = req.body;
workflowData = workflowData.map((task) => {
if (task.id === id) {
if (action === 'retry') return { ...task, status: 'executing', progress: 0 };
if (action === 'stop') return { ...task, status: 'failed' };
}
return task;
});
res.send({ success: true });
},
};