docs(specs): 30 天行动计划 — 质量+体验+架构三位一体

多专家组头脑风暴综合报告:
- 质量保障: 前端测试 4 批次 ~120 用例 + CI/CD + Docker 验证
- 核心体验: 编辑器文字/图片/贴纸 + 班级闭环 + 家长 PIPL
- 架构演进: Feature Flag + 状态管理统一 + 环境配置
- 30 天时间线: Week1 编辑器 → Week2 班级 → Week3 测试 → Week4 收尾
This commit is contained in:
iven
2026-06-01 20:57:28 +08:00
parent ab58186ab3
commit 075536660a

View File

@@ -0,0 +1,184 @@
# 暖记 (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体验专家 + 系统架构专家*