Files
yidaima/RuoYi-Vue/docs/superpowers/plans/2026-07-11-one-click-task-overview-resume.md

5.7 KiB
Raw Permalink Blame History

项目一键生成任务总览与跨会话恢复 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 不得包含 requestPayloadresultPayload
  • 所有任务查询必须按当前登录 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),路由查询包含 projectIdmode=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 失败。
  • AiGenerationTaskServiceImplTest16 项通过0 失败。
  • FrontProjectControllerRunPreviewTest12 项通过0 失败。
  • ruoyi-admin 全量39 项通过0 失败。
  • easycode-web 生产构建:通过,保留既有大 Chunk 与第三方 PURE 注解警告。
  • MyBatis XML成功解析并找到 selectLatestTasksForUserByType
  • EasyCode 开发服务:http://localhost:5174 返回 HTTP 200。
  • 单独运行管理端测试前发现本地 Maven 仓库仍是旧 ruoyi-generator 包;安装当前模块产物后,同一全量命令通过。该问题未通过业务代码绕过。