Files
gaokao-volunteer-system/SPRINT_6_S6_QUERY_REVIEW.md

244 lines
7.3 KiB
Markdown
Raw Normal View History

# Sprint 6 任务拆解W10-11 · 12 人天 · 56 子任务)— V10 选项 B
> **技术栈**Vite 5 + React 19 + Zustand 4 + TanStack Query 5 + RHF 7 + Zod
> **目标**:查询/审核业务 UISharePanel / DataQueryForm / ReviewFlow / LLMEnhancement / PosterPreview
> **闸门**G6视觉一致性 design pass + Chromatic 0 像素 diff
> **V10 变化**:保持 12dS6 是业务密集型,工时难压)
> **PM 决策2026-07-03**整体重写为新实现Playwright 视觉回归 + Chromatic 验收
---
## ⚠️ V10 关键变化(与 V2 对比)
| 维度 | V2 | V10 选项 B |
|---|---|---|
| DataQueryForm 4 变体 | 1.0d | **1.0d**(不变) |
| DataQueryResult 4 变体 | 1.0d | **1.0d**(不变) |
| 业务组件库 | 7 | 7不变 |
| a11y 集成 | S6 末 | **S5 已完成**S6 复用 |
| 总估时 | 11d | **12d**(略增:加 1d Chromatic 验证) |
---
## 0. Sprint 6 概览
| 任务 | 主任务 | 估时 | 子任务数 |
|---|---|---|---|
| T-D-11 | axe-core 集成(复用 S5 | 0d | 0 |
| T-D-12 | 屏幕阅读器 + 键盘测试 | 0.5d | 3 |
| T-D-13 | 替换 alert() 为 Toast | 0.25d | 2 |
| T-D-14 | SharePanel 组件 | 0.75d | 5 |
| T-D-15 | ShareStatusPanel 组件 | 0.5d | 4 |
| T-D-16 | DataQueryForm4 变体) | 1.0d | 6 |
| T-D-17 | DataQueryResult4 变体) | 1.0d | 6 |
| T-D-18 | ReviewFlow 组件 | 0.75d | 4 |
| T-D-19 | LLMEnhancement 组件 | 0.75d | 4 |
| T-D-20 | PosterPreview 组件 | 0.5d | 4 |
| T-D-21 | 暗色变体审计 | 1.0d | 4 |
| T-D-22 | Chromatic 视觉回归S6 增量) | 1.0d | 4 |
| T-D-23 | ESLint 0 warning 守门 | 0.5d | 3 |
| **合计** | **13 任务(含 1 复用)** | **9.5d + 缓冲 2.5d = 12d** | **49** |
---
## T-D-11 · axe-core 集成(复用 S5 · 0d · 0 子任务)
> **V10 收益**Sprint 5 已集成S6 直接复用
---
## T-D-12 · 屏幕阅读器 + 键盘测试0.5d · 3 子任务)
### ST-S6-D-12.1 VoiceOver 测试0.25d
- **覆盖**5 业务组件关键路径
### ST-S6-D-12.2 NVDA 测试0.125d
### ST-S6-D-12.3 键盘导航测试0.125d
- **覆盖**Tab / Shift+Tab / Enter / Esc / 方向键
---
## T-D-13 · 替换 alert() 为 Toast0.25d · 2 子任务)
### ST-S6-D-13.1 grep + 替换0.125d
- **命令**`grep -rn "alert(" apps/web/src/`
- **替换**`toast.error(message)` / `toast.success(message)`
### ST-S6-D-13.2 验证无 alert() 残留0.125d
---
## T-D-14 · SharePanel 组件0.75d · 5 子任务)
### ST-S6-D-14.1 写组件骨架0.25d
- **V10 集成**RHF + Zod
- **UI/交互 1:1**:与原型分享面板一致
### ST-S6-D-14.2 写表单字段0.125d
- 分享链接有效期7/30/永久)
- 访问密码
- 备注
### ST-S6-D-14.3 接入 `useShareLinkCreate`0.125d
### ST-S6-D-14.4 写 story0.125d
### ST-S6-D-14.5 写 e2e0.125d
---
## T-D-15 · ShareStatusPanel 组件0.5d · 4 子任务)
### ST-S6-D-15.1 写 3 统计卡片0.125d
### ST-S6-D-15.2 写访问趋势 mini chart0.125d
### ST-S6-D-15.3 写 story0.125d
### ST-S6-D-15.4 写 e2e0.125d
---
## T-D-16 · DataQueryForm4 变体 · 1.0d · 6 子任务)
### ST-S6-D-16.1 写 scoreLine 变体0.125d
- **字段**:省份 / 年份 / 类型
### ST-S6-D-16.2 写 rankEstimator 变体0.125d
- **字段**:位次 / 选科 / 年份
### ST-S6-D-16.3 写 majors 变体0.125d
- **字段**:专业类 / 学历 / 院校
### ST-S6-D-16.4 写 schools 变体0.125d
- **字段**:院校 / 省份 / 类型
### ST-S6-D-16.5 接入 TanStack Query mutations0.25d
- **V10 收益**4 变体复用同一表单骨架
### ST-S6-D-16.6 写 story0.25d
---
## T-D-17 · DataQueryResult4 变体 · 1.0d · 6 子体)
### ST-S6-D-17.1 写 scoreLine 变体0.125d
- **展示**:分数段分布表 + chart
### ST-S6-D-17.2 写 rankEstimator 变体0.125d
- **展示**:等效分数 + 院校推荐
### ST-S6-D-17.3 写 majors 变体0.125d
- **展示**:专业列表 + 院校
### ST-S6-D-17.4 写 schools 变体0.125d
- **展示**:院校卡片
### ST-S6-D-17.5 接入虚拟滚动0.25d
- **V10 收益**TanStack Virtual 万行流畅
### ST-S6-D-17.6 写 story0.25d
---
## T-D-18 · ReviewFlow 组件0.75d · 4 子任务)
### ST-S6-D-18.1 写审核步骤指示器0.25d
- **V10 集成**:复用 S5-D-13 Stepper
### ST-S6-D-18.2 写审核表单RHF 版 · 0.25d
- **字段**:审批意见 / 风险等级 / 备注
### ST-S6-D-18.3 接入 useReview* hooks0.125d
### ST-S6-D-18.4 写 story + e2e0.125d
---
## T-D-19 · LLMEnhancement 组件0.75d · 4 子任务)
### ST-S6-D-19.1 写 Provider 选择器0.25d
- **V10 集成**:复用 T-B-17 LLM provider
### ST-S6-D-19.2 写流式结果展示0.25d
- **V10 集成**SSE + Markdown 渲染
### ST-S6-D-19.3 接入 useAuditEnhanceMutation0.125d
### ST-S6-D-19.4 写 story + e2e0.125d
---
## T-D-20 · PosterPreview 组件0.5d · 4 子任务)
### ST-S6-D-20.1 写海报渲染0.125d
- **V10 集成**html2canvas
### ST-S6-D-20.2 写 QR Code 嵌入0.125d
### ST-S6-D-20.3 接入 usePosterGenerateMutation0.125d
### ST-S6-D-20.4 写 story + e2e0.125d
---
## T-D-21 · 暗色变体审计1.0d · 4 子任务)⚠️ V10 关键
### ST-S6-D-21.1 截图所有 7 业务组件 dark mode0.25d
### ST-S6-D-21.2 Chromatic diff 检测0.25d
- **验收**0 像素 diff
### ST-S6-D-21.3 修复对比度问题0.25d
- **目标**WCAG AA4.5:1
### ST-S6-D-21.4 提交 Chromatic 基线0.25d
---
## T-D-22 · Chromatic 视觉回归S6 增量 · 1.0d · 4 子任务)⚠️ V10 新增
### ST-S6-D-22.1 7 业务组件 × 3 主题0.25d
- light / dark / system × 7 组件 = 21 截图
### ST-S6-D-22.2 移动端 viewport0.25d
- 375px / 768px / 1024px × 7 组件 = 21 截图
### ST-S6-D-22.3 交互态截图0.25d
- hover / focus / active / disabled / loading / error
### ST-S6-D-22.4 提交基线0.25d
---
## T-D-23 · ESLint 0 warning 守门0.5d · 3 子任务)
### ST-S6-D-23.1 清理 S6 引入的 any0.25d
### ST-S6-D-23.2 清理 S6 引入的 unused0.125d
### ST-S6-D-23.3 守住 Sprint 1-5 已修复规则0.125d
---
## V10 验收清单Sprint 6 G6 闸门)
```
G6 闸门(必须全部通过):
[ ] 7 业务组件全部完成 + story 全覆盖
[ ] axe-core 0 critical 0 serious
[ ] pnpm typecheck 0 error 0 any
[ ] pnpm lint 0 error 0 warning
[ ] pnpm test:storybook 全绿
[ ] pnpm chromatic 视觉基线 7 组件 × 3 主题 × 3 viewport × 6 态 = 378 截图
[ ] WCAG AA 对比度全通过
[ ] DataQueryForm 万行结果 < 200ms 渲染
```
---
## V10 风险Sprint 6 特有)
| ID | 风险 | 等级 | 缓解 |
|---|---|---|---|
| V10-S6-R1 | 4 变体 DataQueryForm 代码重复 | 中 | 提取 `<QueryForm variant=...>` 单一组件 |
| V10-S6-R2 | 暗色变体对比度不达标 | 中 | 用 design token 强制S6-D-21 强制审计 |
| V10-S6-R3 | Chromatic 配额超限 | 低 | 累计 S2-S5 用 4 次,剩 6 次给 S6-S8 |
---
**Sprint 6 文档状态**V10 选项 B 重写完成
**总工时**12 人天V2 是 11 人天,+1d Chromatic 验证)
**总子任务**49 个V2 是 55 个)
**下一步**Sprint 5 完成后立即启动