feat: expand EasyCode software factory workflows

This commit is contained in:
王鹏
2026-07-15 12:48:50 +08:00
parent fcfa4374d7
commit 79dea897bc
1108 changed files with 163774 additions and 21593 deletions

View File

@@ -0,0 +1,96 @@
# 项目一键生成历史与阶段恢复 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`
- [x] 先添加服务和控制器失败测试固定所有权、20 条限制和轻量字段。
- [x] 添加 History DTO 与显式 MyBatis result map。
- [x] 一次查询任务、最近失败阶段、最近完成阶段和检查点恢复位置。
- [x] 添加 `listOneClickTaskHistory(Long userId, Long projectId)` 和 GET API。
- [x] 运行聚焦后端测试。
### 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`
- [x] 添加“另一个同类型任务活动时拒绝旧任务重试”的失败测试。
- [x] 在预留额度前检查 `selectActiveTaskByProjectType`,同一任务除外。
- [x] 重跑任务服务测试,确认现有重试行为不回归。
### 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`
- [x] 先添加 API 与组件契约失败测试。
- [x] 添加历史 API 客户端。
- [x] 实现加载、刷新、空状态、失败诊断、查看任务和继续事件。
- [x] 历史加载失败保持在 Drawer 内,不污染项目工作台。
- [x] 运行组件契约测试。
### 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`
- [x] 项目列表增加生成记录图标并携带 `history=1`
- [x] 生成工作台挂载 Drawer处理路由打开与关闭。
- [x] 查看历史任务时复用 `restoreTaskById` 并同步 `taskId`
- [x] 继续生成前确认恢复阶段,再复用现有 `retryTask`
- [x] 活动任务期间禁用历史重试,并在完成后刷新 Drawer。
- [x] 运行项目列表与生成工作台契约测试。
### 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`
- [x] 更新 P1-I 实施记录与验证结果。
- [x] 解析 Mapper XML 并执行后端聚焦测试。
- [x] 执行前端主流程契约测试和生产构建。
- [x] 执行 `ruoyi-admin` 全量测试。
- [x] 检查差异,确认没有数据库迁移和无关配置改动。
## Verification Record
- `AiGenerationTaskServiceImplTest``AiGenerationTaskHistoryMapperContractTest`19 项通过。
- `FrontProjectControllerRunPreviewTest`13 项通过;`ruoyi-admin` 全量40 项通过。
- EasyCode 历史抽屉、项目列表与生成工作台契约53 项通过。
- EasyCode 生产构建通过,开发服务 `http://localhost:5174` 返回 HTTP 200。
- `AiGenerationTaskMapper.xml` 已成功解析;本轮未新增数据库迁移,未修改开发凭据与 TLS 配置。