From 075536660aafab6f6bf151f11122611c27f2f091 Mon Sep 17 00:00:00 2001 From: iven Date: Mon, 1 Jun 2026 20:57:28 +0800 Subject: [PATCH] =?UTF-8?q?docs(specs):=2030=20=E5=A4=A9=E8=A1=8C=E5=8A=A8?= =?UTF-8?q?=E8=AE=A1=E5=88=92=20=E2=80=94=20=E8=B4=A8=E9=87=8F+=E4=BD=93?= =?UTF-8?q?=E9=AA=8C+=E6=9E=B6=E6=9E=84=E4=B8=89=E4=BD=8D=E4=B8=80?= =?UTF-8?q?=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 多专家组头脑风暴综合报告: - 质量保障: 前端测试 4 批次 ~120 用例 + CI/CD + Docker 验证 - 核心体验: 编辑器文字/图片/贴纸 + 班级闭环 + 家长 PIPL - 架构演进: Feature Flag + 状态管理统一 + 环境配置 - 30 天时间线: Week1 编辑器 → Week2 班级 → Week3 测试 → Week4 收尾 --- .../specs/2026-06-01-30-day-action-plan.md | 184 ++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 docs/superpowers/specs/2026-06-01-30-day-action-plan.md diff --git a/docs/superpowers/specs/2026-06-01-30-day-action-plan.md b/docs/superpowers/specs/2026-06-01-30-day-action-plan.md new file mode 100644 index 0000000..fb89c2e --- /dev/null +++ b/docs/superpowers/specs/2026-06-01-30-day-action-plan.md @@ -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 验证**: +- 创建多阶段 Dockerfile(rust: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体验专家 + 系统架构专家*