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

103 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 项目一键生成任务总览与跨会话恢复 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`
- [x] 添加轻量 DTO 测试,确认不存在请求和结果 Payload 字段。
- [x] 添加 Mapper 查询,一次返回当前用户每个项目最新的 `one_click_project` 任务。
- [x] 添加服务映射和空用户校验。
- [x] 添加当前登录用户控制器入口。
- [x] 运行 `mvn -pl ruoyi-generator -am "-Dtest=AiGenerationTaskServiceImplTest" "-Dsurefire.failIfNoSpecifiedTests=false" test`,期望聚焦测试通过。
- [x] 运行 `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`
- [x] 添加总览 API 客户端。
- [x] 在项目列表增加稳定宽度的状态、进度和当前步骤视图。
- [x] 使用图标按钮进入对应一键生成任务。
- [x] 对进度接口失败做降级,保留项目列表主体。
- [x] 运行 `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)`
- [x] 先添加路由任务恢复和新任务路由同步的失败测试。
- [x]`route.query.taskId` 加载并校验服务器任务。
- [x] 没有路由任务时回退到现有本地缓存恢复。
- [x] 监听同项目内的 `taskId` 变化,同时避免项目加载期和同任务重复轮询。
- [x] 切换任务前使旧通道轮询失效,并防止旧轮询的收尾逻辑覆盖新任务状态。
- [x] 新任务创建后立即同步地址栏;同步失败不终止任务轮询。
- [x] 运行 `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`
- [x] 记录本轮主线校正、设计边界和实施步骤。
- [x] 解析 MyBatis XML确认 Mapper 文件有效。
- [x] 运行 EasyCode 页面契约测试和生产构建。
- [x] 运行 `ruoyi-admin` 全量测试。
- [x] 核对本轮 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` 包;安装当前模块产物后,同一全量命令通过。该问题未通过业务代码绕过。