5.7 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: 让用户从“我的项目”看到一键生成进度,并通过服务器任务 ID 跨页面、跨缓存恢复同一个生成任务。
Architecture: 服务端增加按当前用户查询“每项目最新一键任务”的轻量只读接口;项目列表把任务总览与项目数据合并展示;生成工作台使用路由 taskId 恢复任务,并保留本地缓存作为兼容回退。
Tech Stack: Java 8、Spring MVC、MyBatis、JUnit 4、Vue 3、Vue Router、Element Plus、Node test runner、Vite。
Global Constraints
- 不新增数据库表或数据库迁移。
- 总览 DTO 不得包含
requestPayload或resultPayload。 - 所有任务查询必须按当前登录
userId隔离。 - 现有
localStorage恢复逻辑保留为兼容兜底。 - 明文开发凭据和 TLS 跳过配置保持不变。
- 工作区包含其他未提交改造,本轮不自动创建 Git 提交。
Task 1: 最新一键生成任务总览接口
Files:
- Create:
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/AiGenerationTaskOverview.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
Interfaces:
-
Produces:
List<AiGenerationTaskOverview> listOneClickTaskOverview(Long userId) -
Produces:
GET /front/project/ai-tasks/one-click-overview -
添加轻量 DTO 测试,确认不存在请求和结果 Payload 字段。
-
添加 Mapper 查询,一次返回当前用户每个项目最新的
one_click_project任务。 -
添加服务映射和空用户校验。
-
添加当前登录用户控制器入口。
-
运行
mvn -pl ruoyi-generator -am "-Dtest=AiGenerationTaskServiceImplTest" "-Dsurefire.failIfNoSpecifiedTests=false" test,期望聚焦测试通过。 -
运行
mvn -pl ruoyi-admin -am "-Dtest=FrontProjectControllerRunPreviewTest" "-Dsurefire.failIfNoSpecifiedTests=false" test,期望聚焦测试通过。
Task 2: 项目列表生成状态与继续入口
Files:
- Modify:
easycode-web/src/api/project.js - Modify:
easycode-web/src/views/ProjectListView.vue - Test:
easycode-web/src/views/projectListView.test.mjs
Interfaces:
-
Consumes:
listOneClickTaskOverview(): Promise<AiGenerationTaskOverview[]> -
Produces:
openOneClickTask(project),路由查询包含projectId、mode=one-click和可选taskId -
添加总览 API 客户端。
-
在项目列表增加稳定宽度的状态、进度和当前步骤视图。
-
使用图标按钮进入对应一键生成任务。
-
对进度接口失败做降级,保留项目列表主体。
-
运行
node --test src/views/projectListView.test.mjs,期望全部通过。
Task 3: 生成页服务器任务恢复
Files:
- Modify:
easycode-web/src/views/GenerateView.vue - Test:
easycode-web/src/views/generateView.test.mjs
Interfaces:
-
Produces:
restoreTaskById(id, taskId, expectedGenerateType) -
Produces:
syncOneClickTaskRoute(id, taskId) -
先添加路由任务恢复和新任务路由同步的失败测试。
-
从
route.query.taskId加载并校验服务器任务。 -
没有路由任务时回退到现有本地缓存恢复。
-
监听同项目内的
taskId变化,同时避免项目加载期和同任务重复轮询。 -
切换任务前使旧通道轮询失效,并防止旧轮询的收尾逻辑覆盖新任务状态。
-
新任务创建后立即同步地址栏;同步失败不终止任务轮询。
-
运行
node --test src/views/generateView.test.mjs,期望全部通过。
Task 4: 文档与完整验证
Files:
-
Create:
docs/superpowers/specs/2026-07-11-one-click-task-overview-resume-design.md -
Create:
docs/superpowers/plans/2026-07-11-one-click-task-overview-resume.md -
Modify:
docs/superpowers/specs/2026-07-10-ai-software-factory-roadmap.md -
记录本轮主线校正、设计边界和实施步骤。
-
解析 MyBatis XML,确认 Mapper 文件有效。
-
运行 EasyCode 页面契约测试和生产构建。
-
运行
ruoyi-admin全量测试。 -
核对本轮 diff,确认没有数据库迁移、开发凭据或无关模块改动。
Verification Record
- EasyCode 主流程页面契约:47 项通过,0 失败。
AiGenerationTaskServiceImplTest:16 项通过,0 失败。FrontProjectControllerRunPreviewTest:12 项通过,0 失败。ruoyi-admin全量:39 项通过,0 失败。easycode-web生产构建:通过,保留既有大 Chunk 与第三方 PURE 注解警告。- MyBatis XML:成功解析并找到
selectLatestTasksForUserByType。 - EasyCode 开发服务:
http://localhost:5174返回 HTTP 200。 - 单独运行管理端测试前发现本地 Maven 仓库仍是旧
ruoyi-generator包;安装当前模块产物后,同一全量命令通过。该问题未通过业务代码绕过。