75 lines
2.9 KiB
TypeScript
75 lines
2.9 KiB
TypeScript
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 });
|
||
},
|
||
};
|