Files
nj/wiki/index.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

4.8 KiB
Raw Blame History

title, updated, status
title updated status
暖记知识库首页 2026-06-01 active

暖记 (Nuanji) — 知识库

温暖治愈风格的手写手账日记 App,面向小学生首发,核心价值是保留真实笔迹。从 architecture 导航。

关键数字

最后更新: 2026-06-01 | 基线: main (c2a9579)

指标
Rust crate 8 个6 基座 + 1 入口 + erp-diary
Rust 总代码 ~51,459 行256 个 .rs 文件)
erp-diary 新增 5,108 行41 个文件)
Dart 文件 70 个(~18,398 行,含生成代码 6,128 行)
SeaORM Entity 15 个erp-diary + 50+(基座)
数据库迁移 56 个41 基座 + 15 diary
BLoC 模块 12 个5 flutter_bloc + 5 ChangeNotifier + 2 混合)
Flutter features 16 个
Isar Collection 3 个JournalEntry / JournalElement / PendingOperation
后端测试 ~50 个通过
前端测试 0 个(最大技术债)
flutter analyze 0 error / 1 warning / 18 info
Git 提交 20 次
技术债 10 已记录 + 9 新发现

代码量分布

组件 代码行数 文件数 占比
erp-plugin (WASM 插件运行时) 11,312 28 16.2%
erp-auth (认证/权限) 7,458 39 10.6%
erp-workflow (BPMN 引擎) 5,410 27 7.7%
erp-config (字典/菜单/设置) 5,111 23 7.3%
erp-diary (暖记业务) 5,108 41 7.3%
erp-server (入口/迁移) ~10,414 72 14.9%
erp-core (事件/加密/审计) 2,774 27 4.0%
erp-message (通知/SSE) 3,872 19 5.5%
Flutter 前端 ~18,398 70 26.3%
合计 ~69,857 ~346 100%

系统数据流

用户手写/涂鸦
     │
     ▼
HandwritingCanvas (Listener → StrokePoint)
     │ Stroke
     ▼
EditorBloc (strokes + elements)
     │ onSave (2s debounce)
     ▼
IsarJournalRepository ──→ Isar 本地数据库
     │                       │
     │                       ▼ (启动恢复)
     │                 SyncEngine (pending queue)
     │                       │ WiFi 可用
     ▼                       ▼
JournalEntry           RemoteJournalRepository
+ JournalElement            │
                            ▼
                      API Client (Dio)
                            │
                            ▼
                      Axum → erp-diary → PostgreSQL

模块导航

  • architecture — 仓库拓扑、基座继承、Feature Flag、多租户、安全合规
  • handwriting-engine — 双层 Canvas、光栅化缓存、perfect_freehand、4 种画笔
  • data-layer — Isar 本地存储、Repository 模式、SyncEngine 离线同步
  • frontend — Flutter BLoC、16 个功能模块、设计系统、响应式布局
  • erp-diary — Rust 后端业务模块、Entity/Service/Handler、API 端点、权限码
  • project-health🆕 项目健康度评估、技术债全景、风险矩阵、改进建议

症状导航

症状 先查 再查 常见根因
笔画卡顿 >16ms handwriting-engine 光栅化缓存 shouldRepaint 守卫失效 / 未用 Listener
编辑器保存失败 data-layer IsarDatabase Isar 未初始化
Isar findAll 未定义 data-layer 扩展方法 缺少 import 'package:isar/isar.dart'
同步版本冲突 data-layer 乐观锁 version 不匹配
深色模式颜色异常 frontend AppTheme token 未适配深色值
API 返回 403 erp-diary 权限守卫 权限码不匹配
迁移执行失败 architecture 多租户 表冲突 / 缺失迁移
上下文窗口耗尽 CLAUDE.md §8 会话交接 长会话未及时交接
手写穿透背景 handwriting-engine 橡皮擦 未用 saveLayer + dstOut
模式切换卡顿 handwriting-engine IgnorePointer if/else 销毁重建 Widget
热重载后 Isar 崩溃 data-layer 初始化 未 close 就 re-open
编辑器加载空白 frontend EditorBloc journalId 有值但未加载 Isar 数据
SyncEngine 队列丢失 data-layer 持久化 退出时未调 persistPendingQueue
SSE 推送不工作 frontend 端口配置 SSE 端口 8080 vs API 端口 3000
班级码验证失败 frontend auth_bloc 班级码后端验证 TODO 未实现

相关文档

文档 位置
产品设计规格 v1.2 docs/superpowers/specs/2026-05-31-nuanji-warm-notes-design.md
实施规划 v2.1 plans/hazy-petting-lampson.md
项目协作规则 CLAUDE.md
技术债看板 docs/tech-debt-board.md
OpenDesign 原型 docs/opendesign/warm-notes-journal-app.md
基座仓库 https://git.stableeasy.com/iven/base.git