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,102 @@
# 项目一键生成任务总览与跨会话恢复 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` 包;安装当前模块产物后,同一全量命令通过。该问题未通过业务代码绕过。