--- title: 项目健康度评估 updated: 2026-06-01 status: active tags: [health, tech-debt, risk, improvement] --- # 项目健康度评估 > 从 [[index]] 导航。本文档基于 2026-06-01 全量代码分析生成。 ## 总体评分 | 维度 | 评分 | 说明 | |------|------|------| | 架构设计 | ⭐⭐⭐⭐⭐ | 模块化 ErpModule trait、分层清晰、基座复用 | | 代码质量 | ⭐⭐⭐⭐ | Rust 错误处理规范、Flutter 注释质量高、分层一致 | | 测试覆盖 | ⭐⭐ | 后端 ~50 测试尚可、前端 **0 测试** 是最大短板 | | 安全合规 | ⭐⭐⭐⭐⭐ | PIPL 合规框架完整、PII 加密、RLS 多租户隔离 | | 文档维护 | ⭐⭐⭐⭐⭐ | wiki 6 页 + 技术债看板 + CLAUDE.md,同步度高 | | DevOps | ⭐⭐ | Docker 配置完善但未验证、CI/CD 缺失、无自动化 | | 功能完整度 | ⭐⭐⭐⭐ | 后端完整闭环、前端核心模块 85%+、班级/家长模块待完善 | ## 技术债全景 ### 已记录(10 条) | 编号 | 债务 | 优先级 | 预估 | |------|------|--------|------| | TD-1 | authorId 硬编码 'local' | P0 | 0.5 天 | | TD-3 | Docker 部署未验证 | P0 | 0.5 天 | | TD-7 | Settings 持久化未实现 | P1 | 0.5 天 | | TD-8 | 编辑器不加载已有日记 | P1 | 1 天 | | TD-4 | toImage() 同步阻塞主线程 | P1 | 1 天 | | TD-2 | CI/CD 未建立 | P2 | 1 天 | | TD-5 | 前端测试为零 | P2 | 3 天 | | TD-6 | 画布尺寸变化缓存过渡 | P2 | 1 天 | | TD-9 | Isar FTS 搜索未实现 | P2 | 1 天 | | TD-10 | SyncEngine 蜂窝数据未支持 | P3 | 0.5 天 | ### 新发现(9 条) | 编号 | 债务 | 优先级 | 预估 | 位置 | |------|------|--------|------|------| | NEW-1 | 前端测试缺失(TD-5 补充:0 回归保护) | **Critical** | 3 天 | `app/test/` | | NEW-2 | SSE 端口不一致 (8080 vs 3000) | **Critical** | 0.5 天 | `sse_notification_service.dart:42` | | NEW-3 | Dockerfile 不存在(生产部署引用) | **High** | 1 天 | `docker-compose.production.yml` | | NEW-4 | API base URL 硬编码 localhost | **High** | 0.5 天 | `api_client.dart:29` | | NEW-5 | 班级码后端验证未实现 | **High** | 1 天 | `auth_bloc.dart:141` TODO | | NEW-6 | Prometheus exporters 未定义 | **Medium** | 0.5 天 | `prometheus.yml` 引用 | | NEW-7 | 25 处通用 catch(e) 静默吞异常 | **Medium** | 1 天 | 各 BLoC 文件 | | NEW-8 | Feature Flag 未实现(计划中有但未落地) | **Medium** | 2 天 | `erp-server/Cargo.toml` | | NEW-9 | 状态管理不统一(BLoC vs ChangeNotifier) | **Low** | 2 天 | 5 个功能模块 | ## 前端模块完成度矩阵 | 模块 | 完成度 | 关键缺失 | |------|--------|---------| | 手写引擎 | **95%** | toImage 异步化 | | 编辑器 | **95%** | 文字输入/图片上传为占位 | | 认证 | **85%** | 班级码后端验证 TODO | | 首页 | **90%** | — | | 设计系统 | **90%** | `core/utils/` 空目录 | | 设置 | **85%** | 持久化未实现 | | 日历 | **85%** | 周视图/时间线未实现 | | 数据层 | **85%** | SyncEngine 缺少网络监听 | | 班级 | **80%** | — | | 心情统计 | **80%** | — | | 个人中心 | **80%** | — | | 贴纸 | **70%** | 应用贴纸为 SnackBar 占位 | | 模板 | **65%** | 应用模板为 SnackBar 占位 | | 成就 | **65%** | 视图页面空壳 | | 教师 | **60%** | 班级码硬编码 'a1b2c3' | | 家长 | **40%** | 全部为 SnackBar 占位 | | 搜索 | **30%** | Isar FTS 未集成 | ## 后端 Crate 依赖图 ``` erp-core ← erp-auth ← erp-server ← erp-config ← erp-server ← erp-message ← erp-server ← erp-workflow ← erp-server ← erp-plugin ← erp-server ← erp-diary ← erp-server ``` **依赖健康度**: 无循环依赖、无跨业务 crate 直接依赖、通过 EventBus 模块间通信 ✅ ## 风险矩阵 | 风险 | 概率 | 影响 | 缓解 | |------|------|------|------| | 前端无测试导致回归 | 高 | 高 | TD-5: 建立核心 BLoC/Repository 单元测试 | | Feature Flag 未实现限制扩展 | 中 | 中 | NEW-8: 补充 Cargo features 配置 | | Docker 生产部署无法构建 | 高 | 高 | NEW-3: 创建 Dockerfile + 验证 | | SSE 端口不匹配致推送失败 | 确定 | 中 | NEW-2: 统一为 3000 端口 | | 手写 toImage 卡 UI | 中 | 中 | TD-4: compute() isolate 异步光栅化 | | 大文件超 800 行限制 | 中 | 低 | erp-plugin manifest.rs(1809) + data_service.rs(1907) 需拆分 | ## 改进建议路线图 ### 第一阶段(1-2 天)— 紧急修复 1. **NEW-2**: SSE 端口统一为 3000 2. **TD-1**: authorId 接入 AuthBloc 3. **NEW-4**: API base URL 环境配置化 ### 第二阶段(3-5 天)— 基础设施 4. **TD-2**: CI/CD 基础流水线 5. **TD-3 + NEW-3**: Docker 部署验证 + Dockerfile 创建 6. **TD-5**: 核心模块单元测试(AuthBloc, EditorBloc, JournalRepository) ### 第三阶段(持续)— 质量提升 7. **NEW-7**: 通用 catch(e) → 类型化异常处理 8. **NEW-8**: Feature Flag 配置落地 9. **TD-4**: toImage() 异步光栅化 10. **TD-8**: 编辑器加载已有日记 ## 变更记录 | 日期 | 变更 | |------|------| | 2026-06-01 | 初始创建 — 基于 4 代理并行分析结果 |