Files
gaokao-volunteer-system/EXECUTION_ROADMAP_V10_2026-07-03.md

363 lines
14 KiB
Markdown
Raw Normal View History

# V10 执行路线图 — 82 人天 / 8 SprintV10 选项 B 重写)
> **配套文档**`V10_REFACTOR_STRATEGY_UI_VS_TECH.md`V10 决策)/ 8 个 `SPRINT_X_SX_*.md`
> **编制日期**2026-07-03V10 重写版)
> **技术栈**Vite 5 + React 19 + Zustand 4 + TanStack Query 5 + RHF 7 + Zod + Vitest 2 + Playwright 1.55 + Chromatic
> **PM 决策2026-07-03**
> - Q1技术栈前端工程师选型 → 选项 BVite+React+Zustand+TanStack Query+RHF
> - Q2UI 验收Playwright 视觉回归 + Chromatic
> - Q3代码处置整体重写为新实现
> - Q5文档更新更新 SPRINT_2-8 全部文档
---
## ⚠️ V10 vs V2 关键差异
| 维度 | V2 | V10 | 变化 |
|---|---|---|---|
| 框架 | Next.js 16 | **Vite 5 + React 19** | 重写 |
| 状态管理 | 7 个手写 hook | **Zustand 4** | 简化 |
| 数据获取 | 自写 useChat | **TanStack Query 5** | 升级 |
| 表单 | 受控状态机 | **RHF 7 + Zod** | 升级 |
| 视觉回归 | 无 | **+ Chromatic** | 新增 |
| 验收 | axe / Lighthouse | **+ Chromatic 像素 diff** | 加强 |
| 总估时 | 92 人天 | **82 人天** | **节省 10d** |
| 总子任务 | 470 | **415** | 节省 55 |
---
## 1. 路线图设计原则V10 不变)
| 原则 | 落地方式 |
|---|---|
| **垂直切片** | 每 sprint 都有可演示产物 |
| **风险前置** | B 阶段(最大风险)放第 2-3 sprint |
| **依赖显式化** | 跨 sprint 任务标 ❗,并行任务标 ⚡ |
| **可中断性** | 每 sprint 末交付"Demoable Build" |
| **能力对齐** | 每 sprint 必跑 Lighthouse / axe / Playwright / **Chromatic** |
| **UI/交互 1:1** | V10 核心约束12 项 UI 不变量必须复现 |
---
## 2. 8-Sprint 路线图V10 重写版 · 16 周)
> **假设**1 个前端主程 + 1 个后端联调支持 + 0.5 个设计 review
> **单 sprint 容量**~10 人天V10 平均Sprint 8 10d / Sprint 2 9.5d / Sprint 3 12d
| Sprint | 周次 | 阶段 | 任务数 | 人天 | 关键交付 | Demoable 产物 | 闸门 |
|---|---|---|---|---|---|---|---|
| **S1** | W1 | A 前半 | 14 | 11 | monorepo + 5 组件 + CI | 5 页面 + CI 绿 | G0 ✅ |
| **S2** | W2-3 | A 后半 + B 启动 | 16 | **9.5** | Vite + Zustand + TanStack Query + Chromatic | 8 端点真实化 + 视觉基线 8 页 | G1 |
| **S3** | W4-5 | B 主体 | 15 | **12** | 5 大 V2 新模块 + LLM 4 模 | 端到端 5 模块 + 视觉基线 13 页 | G2 |
| **S4** | W6-7 | B 收口 + C 启动 | 16 | **10** | Lighthouse ≥90 + Poster CLI | 性能报告 + Poster Docker | G3 + G4 |
| **S5** | W8-9 | C 收口 + D 启动 | 16 | **9** | 18 高级组件 + Storybook | Storybook 19 组件 + axe 0 critical | G5 |
| **S6** | W10-11 | D 主体 | 13 | **12** | 7 业务组件 + 暗色审计 | 7 业务组件 + 视觉基线 7×3×3×6 | G6 |
| **S7** | W12-13 | D 收口 + E 启动 | 14 | **9** | i18n + 5 admin 页面 | i18n 中/英 + admin 入口 | G6.1 |
| **S8** | W14-16 | E 主体 | 18 | **10** | 12 后台 + 10 公共门户页 | 全量后台 + 门户 + 视觉收口 | **G7 最终** |
| **合计** | **16 周** | — | **122** | **82 + 11 缓冲 = 93** | — | 生产可发版 | — |
> 8 sprint 总容量 82 人天 + 11 缓冲 = 93 人天。按 4 人/16 周实际可投 = 64 人天 → **结论:单兵执行需 23 周,多人 16 周可完成**(与 V2 一致)。
---
## 3. Sprint 详图V10 关键差异)
### S1W1— 11 人天 · 阶段 A 前半 ✅ 已完成
**入口条件**PM 批准 14 人天预算
**目标**:让原型在 monorepo 里能跑起来CI 灯绿
**已完成**SPRINT_1_CLOSEOUT_2026-07-03.md
- pnpm + Turborepo + root package.json
- cp -r `前端原型代码/``apps/web/`(⚠️ 勘误:原型未在 git 中)
- 5 基础组件Button / Input / Card / Badge / Tabs
- web-ci.ymltypecheck / lint / build / bundle
- G0 闸门pnpm install 1m55s / typecheck 0 errors / lint 0 errors 49 warnings / build 8 routes
**V10 收益**S1 是 V2 → V10 共同基础工时不变11d
---
### S2W2-3— 9.5 人天 · A 后半 + B 启动 ⚠️ V10 简化
**入口条件**S1 G0 通过
**目标**Vite + Zustand + TanStack Query + Chromatic + 8 端点真实化
| 任务 | 人天 | V10 变化 |
|---|---|---|
| Vitest + RTL + MSW + **Chromatic** 配置 | 0.5 | + Chromatic |
| OpenAPI Codegen + Zod schema | 1.0 | 类型 + Zod 联合生成 |
| **Zustand store + 5 query hooks** | 1.0 | **替代 7 手写 hook** |
| RHF 重写 FormCard | 1.0 | **替代 3-step 状态机** |
| **Chromatic 视觉基线 8 页** | 0.5 | **V10 新增** |
| Vite build + bundle 验证 | 0.5 | V10 新增 |
| 其他 7 任务Playwright e2e 等) | 5.0 | 不变 |
**V10 vs V2**18d → 9.5d(节省 8.5d
**退出条件**
- [ ] OpenAPI 30+ 端点类型生成 0 `any`
- [ ] Zustand store 4 slice 完成
- [ ] Chromatic 视觉基线 8 页全提交
- [ ] Vite build bundle < 300KB gzip
- [ ] **G1 闸门**lint 0 warningV10 重写后归零)
---
### S3W4-5— 12 人天 · B 主体 ⚠️ V10 简化
**入口条件**S2 G1 通过
**目标**5 大 V2 新模块 + LLM 4 模 fallback
| 任务 | 人天 | V10 变化 |
|---|---|---|
| useChatOrchestratorV10 重写) | 0.5 | 从 1.5d 简化 |
| 真实 sendMessage + typing | 0.5 | TanStack Query mutation |
| 真实 getHistory + 滚动恢复 | 0.5 | TanStack Query |
| usePlan/useConsultation 真实化 | 0.75 | 不变 |
| useProfile Zustand 版 | 0.5 | 从 1.0d 简化 |
| useAudit + LLM 增强4 模 fallback | 0.75 | 4 模实测 |
| Share Link API4 端点) | 0.75 | 不变 |
| Data Query API3 端点) | 0.75 | 不变 |
| Review Flow API3 端点) | 0.75 | 不变 |
| Portal API2 端点) | 0.5 | 不变 |
| LLM Audit Enhance API | 0.75 | SSE + Zustand 增量 |
| Poster Generate API | 0.5 | 不变 |
| Share Link 统计 + UI | 1.0 | V10 加强 |
| Chromatic 视觉回归S3 增量) | 0.5 | V10 新增 |
| ESLint 0 warning 守门 | 0.5 | V10 关键 |
**V10 vs V2**22d → 12d节省 10d
**退出条件**
- [ ] 5 大新模块端到端跑通
- [ ] LLM 4 模实测可切换 + 自动降级
- [ ] **G2 闸门**lint 0 warning + Chromatic 13 页基线
---
### S4W6-7— 10 人天 · B 收口 + C 启动 ⚠️ V10 简化
**入口条件**S3 G2 通过
**目标**性能达标Lighthouse ≥ 90+ Poster CLI 镜像
| 任务 | 人天 | V10 变化 |
|---|---|---|
| 错误码 → 用户文案映射 | 0.5 | 不变 |
| ErrorBoundary + 离线 + 防重 | 1.5 | RHF 简化 |
| TanStack Query 持久化 | 0.5 | persister 内置 |
| e2e 真实化8 路径) | 2.0 | Playwright 加速 |
| Lighthouse CI | 1.5 | Vite 产物天然高分 |
| Bundle 优化 | 0.5 | V10 简化(已分块) |
| 真实后端回归 | 0.5 | docker compose |
| Poster CLI Docker | 1.0 | 不变 |
| 其他 4 任务 | 2.0 | 不变 |
**V10 vs V2**14d → 10d节省 4d
**退出条件**
- [ ] **G3 闸门**Lighthouse P/A/B/S ≥ 90
- [ ] **G4 闸门**Poster CLI Docker 镜像跑通
- [ ] 8 e2e spec 全绿 + 真实后端 5 模块 200
---
### S5W8-9— 9 人天 · C 收口 + D 启动 ⚠️ V10 升级
**入口条件**S4 G3 + G4 通过
**目标**18 高级组件 + Storybook + axe-core CI
| 任务 | 人天 | V10 变化 |
|---|---|---|
| DataTableTanStack Table + Virtual | 1.0 | **V10 升级** |
| Treereact-arborist | 0.5 | **V10 升级** |
| Chartrecharts + 主题) | 1.0 | V10 主题适配 |
| 11 基础组件Modal/Toast/Tooltip 等) | 3.75 | Radix 头less |
| Storybook 配置 + 19 组件 story | 1.5 | Vite builder |
| **axe-core CI 集成** | 0.5 | **V10 新增** |
**V10 vs V2**12d → 9d节省 3d
**退出条件**
- [ ] **G5 闸门**18 组件 dark story 全覆盖 + axe-core 0 critical
---
### S6W10-11— 12 人天 · D 主体 ⚠️ V10 加强
**入口条件**S5 G5 通过
**目标**7 业务组件 + 暗色审计
| 任务 | 人天 | V10 变化 |
|---|---|---|
| SharePanel + ShareStatusPanel | 1.25 | 不变 |
| DataQueryForm 4 变体 | 1.0 | 不变 |
| DataQueryResult 4 变体 | 1.0 | 不变 |
| ReviewFlow + LLMEnhancement + PosterPreview | 2.0 | 不变 |
| 暗色变体审计 | 1.0 | V10 关键 |
| **Chromatic 视觉回归S6 增量)** | 1.0 | **V10 新增** |
| axe-core 集成(复用 S5 | 0 | V10 收益 |
| 屏幕阅读器 + 键盘测试 | 0.5 | 不变 |
| 替换 alert() 为 Toast | 0.25 | 不变 |
| ESLint 0 warning 守门 | 0.5 | V10 关键 |
**V10 vs V2**11d → 12d+1d Chromatic 验证)
**退出条件**
- [ ] **G6 闸门**7 业务组件 + 暗色审计 0 像素 diff
- [ ] WCAG AA 对比度全通过
---
### S7W12-13— 9 人天 · D 收口 + E 启动 ⚠️ V10 替换
**入口条件**S6 G6 通过
**目标**i18n 中/英 + 5 admin 页面
| 任务 | 人天 | V10 变化 |
|---|---|---|
| **react-intl 接入**(替换 next-intl | 1.0 | V10 替换 |
| 文案审计(中/英) | 0.5 | V10 关键 |
| Chromatic + Lighthouse 收口 | 1.0 | V10 关键 |
| 5 admin 页面Login/Dashboard/Layout/Error/Auth | 2.75 | Vite 友好 |
| 4 订单/案例页面 | 2.0 | 不变 |
| **a11y 全量审计** | 0.75 | **V10 关键** |
| Chromatic 收口S7 增量) | 0.5 | V10 新增 |
**V10 vs V2**10d → 9d节省 1d
**退出条件**
- [ ] **G6.1 闸门**i18n 中/英全覆盖 + Lighthouse ≥ 95 + a11y 0 critical
---
### S8W14-16— 10 人天 · E 主体 ⚠️ V10 合理化
**入口条件**S7 G6.1 通过
**目标**12 后台 + 10 公共门户页
| 任务 | 人天 | V10 变化 |
|---|---|---|
| 8 后台管理页面 | 5.0 | V10 合理化(每页 0.5-1.0d |
| 4 通知/Policy/设置/用户页面 | 2.75 | V10 合理化 |
| **公共门户 React 化10 页)** | 1.0 | V10 关键 |
| **Chromatic 收口S8 最终)** | 0.5 | V10 新增 |
| ESLint 0 warning 守门 | 0.25 | V10 关键 |
| **G7 最终验收** | 0.25 | V10 关键 |
**V10 vs V2**8d → 10d+2d 合理化)
**退出条件**
- [ ] **G7 闸门(最终)**:生产可发版
- 12 后台 + 10 公共门户页全部完成
- pnpm typecheck/lint/test/e2e/storybook/chromatic 全绿
- Lighthouse P/A/B/S ≥ 95
- axe-core 0 critical 0 serious
- bundle < 350KB gzip
- 真实后端 5 模块 + admin 端到端跑通
---
## 4. V10 关键风险闸门(不能跳过)
| 闸门 | 位置 | 失败动作 | V10 关键变化 |
|---|---|---|---|
| **G0** | S1 末 | 暂停 S2修基础 | ✅ 已通过 |
| **G1** | S2 末 | 暂停 S3补 codegen + Zustand | **新增**lint 0 warning |
| **G2** | S3 末 | 暂停 S4与后端对齐 LLM 超时 | **新增**Chromatic 13 页基线 |
| **G3** | S4 末 | 暂停 S5先做性能调优 | 不变 |
| **G4** | S4 末 | 暂停 S5修正 Dockerfile | 不变 |
| **G5** | S5 末 | 暂停 S6先做 axe-core | **加强**axe 0 critical 强制 |
| **G6** | S6 末 | 暂停 S7先做 design pass | **加强**:暗色审计 |
| **G6.1** | S7 末 | 暂停 S8先做 i18n / a11y | **新增**Lighthouse ≥ 95 |
| **G7** | S8 末 | 不发版 | **最终**:生产可发版 |
---
## 5. V10 新增风险登记
| ID | 风险 | 等级 | 缓解 |
|---|---|---|---|
| V10-R1 | UI 1:1 复现遗漏 | 中 | Chromatic 视觉基线 + Playwright 像素比对 |
| V10-R2 | Vite 切框架后 Next.js 能力失效 | 中 | Sprint 4 处理i18n 用 react-intl |
| V10-R3 | Zustand persist 与 SSR 冲突 | 低 | 客户端守卫 |
| V10-R4 | TanStack Query 5 与 React 19 兼容 | 低 | 锁定 5.59.x 稳定版 |
| V10-R5 | RHF + Zod 类型推导慢 | 低 | `z.infer<typeof Schema>` |
| V10-R6 | LLM 4 模 provider 适配 | 中 | 抽象统一接口Sprint 3 末 4 模实测 |
| V10-R7 | SSE 流式与 TanStack Query 兼容 | 中 | Zustand 增量更新 + onMutate |
| V10-R8 | Chromatic 商业配额 | 低 | 8 sprint × 1 次 = 8 次S2-S8 各 1 次) |
| V10-R9 | 整体重写工期超 V2 | 低 | 保留 11d 缓冲S2 中期 gate 评估 |
| V10-R10 | 后台页面工期紧张 | 中 | S8 合理化到 10d |
---
## 6. 团队配置V10 不变)
| 角色 | 数量 | 占比 | 主要 sprint |
|---|---|---|---|
| 前端主程Vite + React 19 | 1 | 60% | 全程 |
| UI/交互设计师 | 0.3 | 15% | S1 / S4-S6 |
| 后端联调 | 0.3 | 15% | S2-S4 |
| QA / a11y | 0.2 | 10% | S4-S7 |
| DevOps | 0.1 | 5% | S4 |
---
## 7. 监控与汇报机制
- **每日**sprint board 更新(按任务 ID 标 in_progress / done
- **每 sprint 末**Demoable Build + 风险闸门报告30 分钟会议)
- **S2/S4/S6/S8 末**:里程碑汇报(含 Lighthouse / axe / e2e / **Chromatic** 截图)
- **S8 末**:上线发布 + 复盘文档
---
## 8. 与上游文档的对齐V10 更新)
| 文档 | 状态 |
|---|---|
| 任务清单基线 | `FRONTEND_TASK_LIST_2026-07-02_V2.md`V2**V10 选项 B 已合并到 SPRINT_2-8** |
| **V10 决策文档** | `V10_REFACTOR_STRATEGY_UI_VS_TECH.md` ⭐ 新增 |
| 技术决策依据 | `FRONTEND_REFACTOR_PLAN_2026-07-02.md` |
| 质量基线 | `REVIEW_REPORT_2026-07-02_SENIOR_DEVELOPER.md` |
| Sprint 1 closeout | `SPRINT_1_CLOSEOUT_2026-07-03.md` ✅ |
| Sprint 2-8 文档 | **已重写为 V10 选项 B** ⭐ |
---
## 9. V10 工时对比汇总
```
Sprint | V2 估时 | V10 估时 | 节省 | 关键变化
S1 | 11d | 11d | 0 | 已完成
S2 | 18d | 9.5d | -8.5 | Zustand + TanStack Query 替代 7 hook
S3 | 22d | 12d | -10 | 5 新模块统一模式
S4 | 14d | 10d | -4 | Vite 性能天然高
S5 | 12d | 9d | -3 | TanStack Table/Virtual 升级
S6 | 11d | 12d | +1 | Chromatic 验证增量
S7 | 10d | 9d | -1 | react-intl 替换 next-intl
S8 | 8d | 10d | +2 | 后台页面合理化
合计 | 106d | 82.5d | -10 | 净节省 10 人天
缓冲 | 14d | 11d | -3 |
总计 | 92d + 14 = 106d | 82d + 11 = 93d |
```
---
## 10. 下一步
**V10 路线图编制完成**。请确认:
1. ✅ Sprint 2-8 文档已按 V10 选项 B 重写
2. ✅ V10 决策文档已归档
3. ✅ 路线图已更新
**等待 PM 确认**
- 立即启动 Sprint 2T-A-14 Vitest + Chromatic 配置)?
- 或先审阅 V10 文档后决策?
---
**V10 路线图版本**v1.02026-07-03
**作者**Senior Developer高级开发工程师
**配套**8 个 SPRINT 文档 + V10_REFACTOR_STRATEGY_UI_VS_TECH.md