Files
gaokao-volunteer-system/EXECUTION_ROADMAP_V2_2026-07-02.md
Frontend Developer fa7c22e8ed chore(s1): monorepo skeleton + 30-file prototype first commit
Sprint 1 G0 闸门通过 (pnpm install / typecheck / lint / build / turbo 全部 exit 0)

实际完成:
- T-A-01 monorepo 根骨架: pnpm-workspace.yaml + turbo.json + 根 package.json
- T-A-02 收编原型: apps/web/ 30 个 src/ 文件 (4948 行) 首次入库
- T-A-03 lint/format: eslint flat config (根 + apps/web) + prettier
- T-A-23 web-ci.yml: GitHub Actions 4-step CI (typecheck/lint/build/bundle)

勘误 (前置假设错误):
- 原型 4948 行 (不是 4114 行)
- 原型含 33 个 any + 16 个未用变量 (Sprint 2 修)
- 原型从未 commit, 用 cp -r + git add, 不是 git mv

推迟到 Sprint 2+:
- T-A-04/05 tsconfig packages 抽离
- T-A-06/07/08 design tokens 抽离
- T-A-09~13 5 基础组件

依赖隔离:
- .gitignore 加 11 行 monorepo 规则
- apps/web/.gitignore 补 .npm-cache/next-dev.log
- 删除 apps/web 内嵌 .git/ (cp -r 复制时携带)

验证:
- pnpm install: 1m55s, 456 packages
- typecheck: 0 errors
- lint: 0 errors, 49 warnings (any + unused)
- next build: 8 routes compiled, 9/9 static pages
- turbo run build: 1 successful, 12.9s
2026-07-03 09:22:03 +08:00

269 lines
10 KiB
Markdown
Raw 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.
# V2 任务清单执行路线图 — 92 人天 / 8 Sprint 拆分
> 配套文档:`FRONTEND_TASK_LIST_2026-07-02_V2.md`136 任务 / 92 人天)
> 编制日期2026-07-02 22:55
> 编制人Senior Developer执行规划
> 批准状态PM 已批准追加 14 人天预算
## 1. 路线图设计原则
| 原则 | 落地方式 |
|---|---|
| **垂直切片** | 每 sprint 都有可演示产物,不做"建库 2 周后再做页面" |
| **风险前置** | B 阶段(最大风险 38 人天)放第 2-3 sprintD 阶段视觉与 B 阶段并跑 |
| **依赖显式化** | 跨 sprint 任务标 ❗,并行任务标 ⚡ |
| **可中断性** | 每 sprint 末交付"Demoable Build"PM 可中止而不丢已投入工作 |
| **能力对齐** | 每 sprint 必跑 Lighthouse / axe / Playwright 三件套 |
## 2. 8-Sprint 路线图4 周一档,共 16 周 ≈ 4 个月)
> 假设1 个前端主程 + 1 个后端联调支持 + 0.5 个设计 review
> 单 sprint 容量:~12 人天(按 5 天 × 0.85 效率 × 2.5 人 = 10.6 人天取整)
| Sprint | 周次 | 阶段 | 任务数 | 人天 | 关键交付 | Demoable 产物 |
|---|---|---|---|---|---|---|
| **S1** | W1 | A 前半 | 8 | 11 | monorepo + 5 组件 + CI | 5 页面原貌复刻 + CI 绿灯 |
| **S2** | W2-3 | A 后半 + B 启动 | 17 | 18 | OpenAPI codegen + 8 核心 hook | 30+ 端点 TypeScript 类型 + chat 流式 e2e |
| **S3** | W4-5 | B 主体 | 22 | 22 | 真实对接 + LLM fallback + Share | 完整 chat/plan 真实流,含 4 模 fallback |
| **S4** | W6-7 | B 收口 + C 启动 | 17 | 14 | Lighthouse ≥90 + Poster CLI 接入 | 性能报告 + Sentry + CSP 通过 |
| **S5** | W8-9 | C 收口 + D 启动 | 18 | 12 | 独立部署 + SharePanel | 灰度环境可访问 + Share 弹窗 3 状态 |
| **S6** | W10-11 | D 主体 | 22 | 11 | 18 组件 + DataQuery + Review UI | 全部页面视觉与 a11y 验收 |
| **S7** | W12-13 | D 收口 + E 启动 | 16 | 10 | axe 0 critical + Review 页 4 按钮 | 3 个 portal 页面 React 化 |
| **S8** | W14-16 | E 主体 | 14 | 8 | 6 个内部页 + Policy + Poster 渲染 | 全量运营后台可访问 |
| **合计** | 16 周 | — | **136** | **92 + 14 缓冲** | — | 生产可发版 |
> 8 sprint 总容量 92 人天 + 14 缓冲 = 106 人天。按 4 人/16 周实际可投 = 64 人天 → **结论:单兵执行需 22 周,多人 16 周可完成。**
## 3. Sprint 详图
### S1W1— 11 人天 · 阶段 A 前半
**入口条件**PM 批准 14 人天预算完成
**目标**:让原型在 monorepo 里能跑起来CI 灯绿
| 任务 | 人天 | 并行 | 备注 |
|---|---|---|---|
| T-A-01 monorepo 创建 | 0.5 | — | pnpm + Turborepo |
| T-A-02 收编前端原型 | 0.5 | — | 软链接 + tsconfig |
| T-A-03 共享包骨架 | 0.5 | — | @app/ui / @app/lib / @app/api |
| T-A-06 设计 token 提取 | 0.5 | ⚡ |
| T-A-07 组件库首批 5 组件 | 1.0 | — |
| T-A-21 OpenAPI Codegen 接入 | 1.0 | — | V2 跑出 30+ 端点类型 |
| T-A-23 CI 工作流 | 1.5 | — | lint + test + build |
| T-A-04 tsconfig 共享 | 0.5 | ⚡ |
| T-A-14 Vitest 骨架 | 0.5 | ⚡ |
| T-A-18 Playwright 骨架 | 0.5 | ⚡ |
**退出条件**
- [ ] `pnpm dev` 可启动 `apps/web` 5 个页面
- [ ] `pnpm test` 跑通
- [ ] `pnpm build` 通过
- [ ] GitHub Actions 绿
- [ ] **无 mock 数据残留**(原型中的 `chat-fixtures.ts` 移走)
---
### S2W2-3— 18 人天 · A 后半 + B 启动
**入口条件**S1 退出
**目标**8 个核心 hook 真实化OpenAPI 类型贯通
| 任务 | 人天 | 并行 | 备注 |
|---|---|---|---|
| T-A-22 OpenAPI 类型生成完成 | 1.0 | — | 30+ 端点全部生成 |
| T-A-08-T-A-13 6 组件扩展 | 3.0 | ⚡ | 12 组件总量 |
| T-A-15 单元测试 50% | 1.0 | ⚡ |
| T-A-19 Playwright 首批 3 e2e | 1.0 | ⚡ |
| T-A-16 集成测试 30% | 1.0 | ⚡ |
| T-A-20 Storybook | 1.0 | ⚡ |
| **T-B-01~08** chat 流式对接 | 4.0 | — | SSE + 重连 + 取消 |
| **T-B-09~14** plan/audit 真实化 | 3.0 | — |
| T-A-05 ESLint/Prettier 收口 | 0.5 | ⚡ |
| T-A-17 性能预算 CI | 0.5 | ⚡ |
**退出条件**
- [ ] Chat 流式 e2e 真实后端可跑通
- [ ] Plan/Audit 8 hook 全部对接真实 API
- [ ] OpenAPI 30+ 端点无 `any` 残留
- [ ] 单元测试覆盖率 ≥50%
---
### S3W4-5— 22 人天 · B 主体
**入口条件**S2 退出
**目标**:全部 35 端点对接完成,含 5 大 V2 新模块
| 任务 | 人天 | 并行 | 备注 |
|---|---|---|---|
| **T-B-15~18** Share Link API 对接 | 3.0 | — | 4 端点 + QR 渲染 ❗ |
| **T-B-19~22** Data Query 4 端点 | 3.0 | — |
| **T-B-23~26** Review Flow 4 端点 | 3.0 | — | step1 + 冲稳保按钮 |
| **T-B-27~30** LLM 增强 + 多模型 fallback | 4.0 | — | 4 模 + SSE 重连 ❗ |
| **T-B-31~35** Poster 渲染 + 政策页 | 3.0 | — |
| T-B-11 错误边界全局化 | 1.0 | ⚡ |
| T-B-12 Loading/Toast 统一 | 1.0 | ⚡ |
| T-B-13 离线兜底策略 | 1.0 | ⚡ |
| T-B-14 表单 RHF+Zod 接入 | 2.0 | ⚡ |
| T-B-07 mock 数据清理 | 0.5 | ⚡ |
| T-B-08 端到端联调 | 0.5 | ⚡ |
**退出条件**
- [ ] 35 端点 e2e 全绿
- [ ] LLM fallback 4 模模拟可切换
- [ ] Share link 生成/打开可闭环
- [ ] 全部 mock 移除
- [ ] **风险闸门**R-NEW-7LLM 超时)实测 < 30s
---
### S4W6-7— 14 人天 · B 收口 + C 启动
**入口条件**S3 退出
**目标**:性能达标,监控接入
| 任务 | 人天 | 并行 | 备注 |
|---|---|---|---|
| T-B 收尾 + Lighthouse 调优 | 3.0 | — | ≥90 性能分 |
| **T-C-01~04** 独立部署 + Sentry | 2.0 | — |
| **T-C-05~07** CSP + 安全头 | 1.5 | ⚡ |
| **T-C-08~10** Poster CLI 接入 | 2.0 | — | 风险 R-NEW-8 ❗ |
| **T-C-11~12** 灰度发布 + 灰度路由 | 1.5 | ⚡ |
| T-C-13 性能监控 RUM | 1.0 | ⚡ |
| T-C-14 错误追踪 | 1.0 | ⚡ |
| T-C-15 部署文档 | 1.0 | ⚡ |
| D 阶段预研design pass (R-NEW-9) | 1.0 | — | 风险闸门 |
**退出条件**
- [ ] Lighthouse Performance ≥90 / A11y ≥95
- [ ] Sentry 接收到测试事件
- [ ] CSP 报告 0 violation
- [ ] 灰度发布可路由
- [ ] **风险闸门**R-NEW-8Poster CLI 镜像验证)通过
---
### S5W8-9— 12 人天 · C 收口 + D 启动
**入口条件**S4 退出 + Design pass 完成
**目标**18 组件 + SharePanel 基础
| 任务 | 人天 | 并行 | 备注 |
|---|---|---|---|
| T-C 收尾 2 任务 | 1.0 | — |
| **T-D-01~05** 5 组件 design system | 2.5 | ⚡ |
| **T-D-06~10** 5 业务组件 | 2.5 | ⚡ |
| **T-D-11~14** 4 反馈组件 | 2.0 | ⚡ |
| **T-D-15~18** 4 容器组件 | 2.0 | ⚡ |
| T-D-19 SharePanel 弹窗 | 2.0 | — | 3 状态 (生成/复制/失效) |
**退出条件**
- [ ] 18 组件 Storybook 全部可查
- [ ] SharePanel 弹窗 3 状态 e2e 通过
- [ ] **风险闸门**R-NEW-9Portal 视觉一致性)已对齐
---
### S6W10-11— 11 人天 · D 主体
**入口条件**S5 退出
**目标**DataQuery + Review UI 全部页面
| 任务 | 人天 | 并行 | 备注 |
|---|---|---|---|
| **T-D-20~23** DataQuery 4 页面 | 2.0 | — |
| **T-D-24~27** Review UI 4 状态 | 2.0 | — | step1 + 冲稳保 + token 加载 |
| T-D-28 主题切换持久化 | 0.5 | ⚡ |
| T-D-29 暗色模式适配 | 0.5 | ⚡ |
| T-D-30 焦点环统一 | 0.5 | ⚡ |
| T-D-31 prefers-reduced-motion | 0.5 | ⚡ |
| T-D-32 键盘导航 | 0.5 | ⚡ |
| T-D-33~35 视觉 QA 3 轮 | 1.5 | ⚡ |
| T-D-36 风险面板 | 1.0 | ⚡ |
| T-D-37 LLM 失败兜底 UI | 1.0 | ⚡ |
| T-D-38 错误页统一 | 1.0 | ⚡ |
**退出条件**
- [ ] DataQuery 4 页面真实数据流通
- [ ] Review 4 状态全跑通
- [ ] axe-core 0 critical issue
- [ ] prefers-reduced-motion 全部组件支持
---
### S7W12-13— 10 人天 · D 收口 + E 启动
**入口条件**S6 退出
**目标**a11y 完整合规3 个 portal 页面 React 化
| 任务 | 人天 | 并行 | 备注 |
|---|---|---|---|
| T-D 收尾 3 任务 (axe 0 critical / 屏幕阅读器测试 / WCAG 报告) | 1.5 | — |
| **T-E-01~04** 后台登录 + 导航 | 2.0 | — |
| **T-E-05~08** Share 管理 + Data Query 后台 | 2.0 | — |
| **T-E-09~12** Review 后台 + Poster 渲染 | 2.0 | — |
**退出条件**
- [ ] axe-core 0 critical0 serious
- [ ] 3 个 portal 页面(运营 / Share / Data Query可访问
- [ ] 后台登录 + RBAC 工作
---
### S8W14-16— 8 人天 · E 主体
**入口条件**S7 退出
**目标**6 个内部页 + Policy + Poster 完整
| 任务 | 人天 | 并行 | 备注 |
|---|---|---|---|
| T-E-13~16 我的订单 + 我的报告 | 1.5 | — |
| T-E-17~20 Policy 5 页 (服务/隐私/退订/合规/关于) | 2.0 | — |
| T-E-21~23 Poster 渲染页 + 下载 | 1.5 | — |
| T-E-24 联调收口 + 灰度上线 | 3.0 | — |
**退出条件**
- [ ] 6 个内部页全部可访问
- [ ] 5 个 Policy 页发布
- [ ] Poster 可生成可下载
- [ ] **生产可发版**
## 4. 关键风险闸门(不能跳过)
| 闸门 | 位置 | 失败动作 |
|---|---|---|
| **G1**: OpenAPI 类型生成无 `any` | S2 末 | 暂停 S3补 codegen 配置 |
| **G2**: LLM fallback 4 模实测 | S3 末 | 暂停 S4与后端对齐超时策略 |
| **G3**: Lighthouse ≥90 | S4 末 | 暂停 S5先做性能调优 |
| **G4**: R-NEW-8 Poster CLI 镜像验证 | S4 末 | 暂停 S5修正 Dockerfile |
| **G5**: axe 0 critical | S7 末 | 暂停 S8先做 a11y |
| **G6**: R-NEW-9 视觉一致 | S5 末 | 暂停 S6先做 design pass |
## 5. 团队配置推荐
| 角色 | 数量 | 占比 | 主要 sprint |
|---|---|---|---|
| 前端主程Next.js + TS | 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 |
## 6. 监控与汇报机制
- **每日**sprint board 更新(按任务 ID 标 in_progress / done
- **每 sprint 末**Demoable Build + 风险闸门报告30 分钟会议)
- **S2/S4/S6 末**:里程碑汇报(含 Lighthouse / axe / e2e 截图)
- **S8 末**:上线发布 + 复盘文档
## 7. 与上游文档的对齐
- 任务清单基线:`FRONTEND_TASK_LIST_2026-07-02_V2.md`
- 技术决策依据:`FRONTEND_REFACTOR_PLAN_2026-07-02.md`
- 质量基线:`REVIEW_REPORT_2026-07-02_SENIOR_DEVELOPER.md`
- 历史对照:`docs/REVIEW_REPORT_2026-06-19_SYSTEMATIC_PRODUCTION_READINESS_REVIEW.md`
---
**路线图编制完成。请确认是否进入 S1 启动。**