Files
nj/wiki/project-health.md
iven ab58186ab3 docs(wiki): 全量项目健康度评估 + 技术债全景更新
- 新增 project-health.md — 项目评分/技术债全景/风险矩阵/改进路线图
- 更新 index.md — 代码量分布表/新发现技术债统计/新增症状条目
- 更新 architecture.md — Feature Flag 未实现状态/超大文件发现
- 更新 frontend.md — 状态管理不统一/SSE 端口/测试缺失等 11 项问题
- 更新 erp-diary.md — 代码量分布参考/班级码硬编码问题

基于 4 代理并行深度分析: 后端 Rust 51,459 行 + 前端 Flutter 18,398 行
2026-06-01 18:33:38 +08:00

127 lines
5.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.
---
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 代理并行分析结果 |