5.1 KiB
项目一键生成历史与阶段恢复 Implementation Plan
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: 让用户查看项目历次一键生成,理解失败阶段,并从服务器判定的最近检查点继续生成。
Architecture: 使用现有任务、阶段和检查点表计算最近 20 条轻量历史摘要;复用现有任务重试与检查点恢复内核;前端用独立 Drawer 组件承载历史展示与操作。
Tech Stack: Java 8、Spring MVC、MyBatis、JUnit 4、Vue 3、Element Plus、Node test runner、Vite。
Global Constraints
- 不新增数据库表或迁移。
- 不向历史响应暴露请求、结果或检查点 Payload。
- 恢复起点只能由服务器根据可信检查点决定。
- 当前用户必须拥有项目,且不能并发重试同项目的另一个活动一键任务。
- 工作区存在其他改造,本轮不自动提交或回退无关变更。
Task 1: 轻量任务历史契约
Files:
-
Create:
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/AiGenerationTaskHistoryItem.java -
Modify:
ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/front/AiGenerationTaskMapper.java -
Modify:
ruoyi-generator/src/main/resources/mapper/front/AiGenerationTaskMapper.xml -
Modify:
ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/IAiGenerationTaskService.java -
Modify:
ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/AiGenerationTaskServiceImpl.java -
Modify:
ruoyi-admin/src/main/java/com/ruoyi/web/controller/front/FrontProjectController.java -
Test:
ruoyi-generator/src/test/java/com/ruoyi/generator/service/front/AiGenerationTaskServiceImplTest.java -
Test:
ruoyi-admin/src/test/java/com/ruoyi/web/controller/front/FrontProjectControllerRunPreviewTest.java -
先添加服务和控制器失败测试,固定所有权、20 条限制和轻量字段。
-
添加 History DTO 与显式 MyBatis result map。
-
一次查询任务、最近失败阶段、最近完成阶段和检查点恢复位置。
-
添加
listOneClickTaskHistory(Long userId, Long projectId)和 GET API。 -
运行聚焦后端测试。
Task 2: 历史重试并发保护
Files:
-
Modify:
ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/AiGenerationTaskServiceImpl.java -
Test:
ruoyi-generator/src/test/java/com/ruoyi/generator/service/front/AiGenerationTaskServiceImplTest.java -
添加“另一个同类型任务活动时拒绝旧任务重试”的失败测试。
-
在预留额度前检查
selectActiveTaskByProjectType,同一任务除外。 -
重跑任务服务测试,确认现有重试行为不回归。
Task 3: 历史 Drawer 组件
Files:
-
Create:
easycode-web/src/components/OneClickGenerationHistoryDrawer.vue -
Create:
easycode-web/src/components/oneClickGenerationHistoryDrawer.test.mjs -
Modify:
easycode-web/src/api/project.js -
先添加 API 与组件契约失败测试。
-
添加历史 API 客户端。
-
实现加载、刷新、空状态、失败诊断、查看任务和继续事件。
-
历史加载失败保持在 Drawer 内,不污染项目工作台。
-
运行组件契约测试。
Task 4: 接入项目列表与生成工作台
Files:
-
Modify:
easycode-web/src/views/ProjectListView.vue -
Modify:
easycode-web/src/views/projectListView.test.mjs -
Modify:
easycode-web/src/views/GenerateView.vue -
Modify:
easycode-web/src/views/generateView.test.mjs -
项目列表增加生成记录图标并携带
history=1。 -
生成工作台挂载 Drawer,处理路由打开与关闭。
-
查看历史任务时复用
restoreTaskById并同步taskId。 -
继续生成前确认恢复阶段,再复用现有
retryTask。 -
活动任务期间禁用历史重试,并在完成后刷新 Drawer。
-
运行项目列表与生成工作台契约测试。
Task 5: 文档与回归
Files:
-
Modify:
docs/superpowers/specs/2026-07-10-ai-software-factory-roadmap.md -
Modify:
docs/superpowers/specs/2026-07-11-one-click-generation-history-recovery-design.md -
Modify:
docs/superpowers/plans/2026-07-11-one-click-generation-history-recovery.md -
更新 P1-I 实施记录与验证结果。
-
解析 Mapper XML 并执行后端聚焦测试。
-
执行前端主流程契约测试和生产构建。
-
执行
ruoyi-admin全量测试。 -
检查差异,确认没有数据库迁移和无关配置改动。
Verification Record
AiGenerationTaskServiceImplTest与AiGenerationTaskHistoryMapperContractTest:19 项通过。FrontProjectControllerRunPreviewTest:13 项通过;ruoyi-admin全量:40 项通过。- EasyCode 历史抽屉、项目列表与生成工作台契约:53 项通过。
- EasyCode 生产构建通过,开发服务
http://localhost:5174返回 HTTP 200。 AiGenerationTaskMapper.xml已成功解析;本轮未新增数据库迁移,未修改开发凭据与 TLS 配置。