Files
nj/wiki/project-health.md

128 lines
5.5 KiB
Markdown
Raw Permalink 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-07
status: active
tags: [health, tech-debt, risk, improvement]
---
# 项目健康度评估
> 从 [[index]] 导航。本文档基于 2026-06-01 全量代码分析生成2026-06-07 更新。
## 总体评分
| 维度 | 评分 | 说明 |
|------|------|------|
| 架构设计 | ⭐⭐⭐⭐⭐ | 模块化 ErpModule trait、分层清晰、基座复用 |
| 代码质量 | ⭐⭐⭐⭐ | Rust 错误处理规范、Flutter 注释质量高、分层一致 |
| 测试覆盖 | ⭐⭐⭐ | 后端 ~77 测试通过、前端 15 个测试文件 203 个用例(仍有 1 个失败待修)|
| 安全合规 | ⭐⭐⭐⭐⭐ | 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~~ | ~~前端测试缺失0 回归保护)~~ | ~~Critical~~ ✅ | ~~3 天~~ | 15 个测试文件 203 用例auth_bloc 1 个失败待修 |
| ~~NEW-2~~ | ~~SSE 端口不一致 (8080 vs 3000)~~ | ~~Critical~~ ✅ | ~~0.5 天~~ | AppConfig 统一管理,均指向 3000 |
| 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 异步化 |
| 编辑器 | **98%** | 查看模式 + 图层调整已实现,文字输入/图片上传为占位 |
| 认证 | **85%** | 班级码后端验证 TODO |
| 首页 | **90%** | — |
| 设计系统 | **90%** | `core/utils/` 空目录 |
| 设置 | **85%** | 持久化未实现 |
| 日历 | **90%** | 初始加载已修复,周视图/时间线未实现 |
| 数据层 | **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 模块间通信 ✅
## 风险矩阵
| 风险 | 概率 | 影响 | 缓解 |
|------|------|------|------|
| 前端测试覆盖不足 | 中 | 中 | 15 个测试文件已建立auth_bloc 1 个失败待修 |
| Feature Flag 未实现限制扩展 | 中 | 中 | NEW-8: 补充 Cargo features 配置 |
| Docker 生产部署无法构建 | 高 | 高 | NEW-3: 创建 Dockerfile + 验证 |
| ~~SSE 端口不匹配致推送失败~~ | ~~确定~~ ✅ | ~~中~~ | AppConfig 已统一为 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**: 核心模块单元测试~~ ✅ 已有 15 个测试文件,持续补充
### 第三阶段(持续)— 质量提升
7. **NEW-7**: 通用 catch(e) → 类型化异常处理
8. **NEW-8**: Feature Flag 配置落地
9. **TD-4**: toImage() 异步光栅化
10. ~~**TD-8**: 编辑器加载已有日记~~
## 变更记录
| 日期 | 变更 |
|------|------|
| 2026-06-07 | 更新TD-8/NEW-1/NEW-2 已修复,测试覆盖 ⭐⭐→⭐⭐⭐,编辑器 95%→98%,日历 85%→90% |
| 2026-06-01 | 初始创建 — 基于 4 代理并行分析结果 |