Files
nj/docs/superpowers/specs/2026-06-01-30-day-action-plan.md
iven 075536660a docs(specs): 30 天行动计划 — 质量+体验+架构三位一体
多专家组头脑风暴综合报告:
- 质量保障: 前端测试 4 批次 ~120 用例 + CI/CD + Docker 验证
- 核心体验: 编辑器文字/图片/贴纸 + 班级闭环 + 家长 PIPL
- 架构演进: Feature Flag + 状态管理统一 + 环境配置
- 30 天时间线: Week1 编辑器 → Week2 班级 → Week3 测试 → Week4 收尾
2026-06-01 20:57:28 +08:00

185 lines
7.1 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.
# 暖记 (Warm Notes) — 30 天行动计划:质量保障 + 核心体验 + 架构演进
> **版本**: 1.0
> **日期**: 2026-06-01
> **来源**: 多专家组头脑风暴(质量保障 / UX体验 / 系统架构)
> **目标**: 从当前状态推进到小学生可用的 MVP
---
## 1. 项目现状快照
| 指标 | 值 |
|------|-----|
| 后端 Rust | 51,459 行8 个 crate~50 测试 |
| 前端 Flutter | 18,398 行70 文件,**0 测试** |
| 技术债 | 10 已记录 + 9 新发现 |
| CI/CD | 无 |
| Docker | 配置存在但未验证Dockerfile 缺失 |
## 2. 三维分析矩阵
### 2.1 质量保障QA 专家)
**核心发现**:前端 0 测试是最大风险。没有测试保障,任何重构都可能引入回归 Bug。
**策略**:由内向外,先逻辑后 UI。
| 批次 | 目标 | 用例数 | 工时 |
|------|------|--------|------|
| 1 | InMemoryJournalRepository + SyncEngine + EditorBloc | ~40 | 16h |
| 2 | AuthBloc + HomeBloc + CalendarBloc + MoodBloc | ~35 | 24h |
| 3 | IsarJournalRepository + RemoteJournalRepository | ~20 | 32h |
**CI/CD 设计**
- PR 触发cargo fmt/check/clippy/test + flutter analyze/test + cargo audit
- Main 触发:上述 + Docker 构建验证
- 质量门禁:必须通过全部检查 + 1 人 Code Review
**Docker 验证**
- 创建多阶段 Dockerfilerust:alpine → alpine
- docker-compose 添加 server service
- verify.sh 自动化健康检查
### 2.2 核心体验UX 专家)
**核心发现**:编辑器的文字/图片/贴纸工具全为占位,班级互动有 5 个断点。小学生"第一个 30 分钟"的体验路径断裂。
**编辑器 P0 缺口**
| 缺口 | 现状 | 方案 | 工时 |
|------|------|------|------|
| 文字输入 | 工具栏显示静态文字 | 叠加式 TextField + 小/中/大字号 | 16h |
| 图片上传 | 无反应 | image_picker + 压缩 + 拖拽 | 12h |
| 贴纸接入 | 仅切换模式 | 编辑器贴纸面板 → 放置 | 8h |
| 模板传递 | 忽略 template 参数 | EditorPage 读取 template 查询参数 | 8h |
**班级流程 5 个断点**
```
断点1: 班级码硬编码 'a1b2c3' → 需接入后端 API 生成
断点2: 班级码验证跳过 (TODO) → 需调用后端验证
断点3: 编辑器无分享选项 → 需添加分享 BottomSheet
断点4: 老师查看无只读模式 → 需 readonly 参数
断点5: 无评语输入入口 → 需评语 BottomSheet
```
**家长中心 PIPL 合规**Phase 1 必须 4 功能(关联/查看/导出/删除),约 30h。
**搜索替代**:标签+心情筛选先行6h无需 Isar FTS。
### 2.3 架构演进(架构专家)
**核心发现**Feature Flag 在规划中设计完善但未落地;状态管理两种模式混用;环境配置硬编码。
**Feature Flag 落地**2h
- `erp-server/Cargo.toml` 添加 `[features] default = ["diary"]`
- `main.rs` 6 个区域用 `#[cfg(feature = "diary")]` 包裹
**状态管理统一**2 天,第二批):
- 5 个 ChangeNotifier → flutter_bloc + sealed class
- app.dart 移除 provider 依赖,统一 BlocProvider
**超大文件拆分**(第三批):
- manifest.rs (1809行) → 8 个子文件
- data_service.rs (1907行) → 6 个子文件
- module.rs (1283行) → 事件处理器独立
- main.rs (820行) → bootstrap/router/seed 模块
**环境配置**4h
- 新建 AppConfig 类,`--dart-define` 注入
- 修复 SSE 端口 8080 → 3000
## 3. 综合决策
### 3.1 优先级取舍
| 交锋点 | 决策 | 理由 |
|--------|------|------|
| 先测试 vs 先功能 | **功能优先 + 关键路径同步写测试** | 产品不可用比测试缺失更致命 |
| 状态管理统一 | **第二批再做** | 当前不阻塞开发,统一需要 2 天集中投入 |
| Feature Flag | **第三批与 CI/CD 同步** | Flag 是给 CI 用的CI 建好了再落地 |
| 家长中心 | **仅做 PIPL 最低 4 功能** | 30h 已是极限,时间限制等 Phase 2 |
### 3.2 风险预警
| 风险 | 缓解策略 |
|------|---------|
| 编辑器文字输入比预期复杂 | 先做最简版(固定位置 TextField后续迭代 |
| 家长中心 30h 可能低估 | 仅做 4 个核心功能,不做时间限制 |
| 测试和功能并行阻塞 | 测试只覆盖纯逻辑层,不测 UI |
## 4. 30 天行动时间线
### Week 1核心路径打通 — 编辑器体验(~44h
> 目标:小学生可以写出包含手写+文字+贴纸+照片的完整日记
| 任务 | 工时 | 交付物 |
|------|------|--------|
| 编辑器文字输入 | 16h | 叠加式 TextField + 小/中/大字号 + 颜色选择 |
| 编辑器图片上传 | 12h | image_picker + 压缩 + 拖拽定位 |
| 编辑器贴纸接入 | 8h | 贴纸面板 → 选择 → 放置到画布 |
| 模板数据传递 | 8h | EditorPage 读取 template 参数并预填充 |
### Week 2班级互动闭环 + 测试基础(~52h
> 目标:老师→学生→分享→点评 闭环可走通
| 任务 | 工时 | 交付物 |
|------|------|--------|
| 班级码生成+验证 | 14h | 前后端联调6 位随机码 + 5 次锁定 |
| 分享到班级 | 8h | 编辑器完成按钮 → 分享/私密 BottomSheet |
| 老师只读查看+点评 | 12h | readonly 模式 + 评语 BottomSheet |
| 前端第一批测试 | 16h | EditorBloc + InMemoryRepo + SyncEngine (~40 用例) |
| 添加测试依赖 | 2h | bloc_test + mocktail |
### Week 3质量保障体系~42h
> 目标CI 自动化 + 核心模块 80% 测试覆盖
| 任务 | 工时 | 交付物 |
|------|------|--------|
| 前端第二批测试 | 24h | AuthBloc + HomeBloc + CalendarBloc + MoodBloc (~35 用例) |
| 后端 P0 单元测试 | 10h | journal/sync/class service 核心逻辑 |
| CI/CD 流水线 | 8h | pr-check.yml + main-merge.yml |
### Week 4收尾 + 架构治理(~48h
> 目标:搜索可用 + PIPL 合规 + 部署就绪
| 任务 | 工时 | 交付物 |
|------|------|--------|
| 搜索替代方案 | 6h | 标签+心情筛选(无 FTS |
| 家长中心最小集 | 30h | 关联/查看/导出/删除 4 功能 |
| Docker 部署验证 | 6.5h | Dockerfile + docker-compose + verify.sh |
| 环境配置统一 | 4h | AppConfig + SSE 端口修复 |
| Feature Flag 落地 | 2h | Cargo.toml [features] + main.rs 条件编译 |
## 5. 成功标准
30 天后验收清单:
- [ ] 小学生可以写出包含 **手写 + 文字 + 贴纸 + 照片** 的完整日记
- [ ] **老师布置 → 学生写作 → 分享到班级 → 老师点评** 闭环可演示
- [ ] 前端 **~80 个测试** 覆盖核心 BLoC 和 Repository
- [ ] CI 自动运行 cargo check + flutter analyze + 测试
- [ ] Docker 一键启动PG + Redis + Axum
- [ ] 家长可查看孩子日记 + 导出/删除数据PIPL 合规)
- [ ] 搜索可按标签和心情筛选日记
## 6. 总工时估算
| 方向 | 工时 | 占比 |
|------|------|------|
| 核心体验(编辑器+班级+家长) | ~122h | 55% |
| 质量保障(测试+CI+Docker | ~100h | 38% |
| 架构治理Feature Flag+环境配置) | ~20h | 7% |
| **合计** | **~186h** | 100% |
> 按 1 人每天 6h 有效开发时间,约 31 个工作日(~6 周)。
---
*本文档由多专家组头脑风暴综合生成:质量保障专家 + UX体验专家 + 系统架构专家*