Files
nj/wiki/index.md

124 lines
5.4 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-07
status: active
---
# 暖记 (Nuanji) — 知识库
> **温暖治愈风格的手写手账日记 App**,面向小学生首发,核心价值是保留真实笔迹。从 [[architecture]] 导航。
## 关键数字
> 最后更新: 2026-06-07 | 基线: main (4cb91f3)
| 指标 | 值 |
|------|-----|
| Rust crate | 8 个6 基座 + 1 入口 + erp-diary |
| Rust 总代码 | ~52,000 行 |
| erp-diary 新增 | ~5,600 行45 个文件) |
| Dart 文件 | 112 个(~27,000 行) |
| 管理端前端 (React) | ~317 个 TypeScript 文件 |
| SeaORM Entity | 15 个erp-diary + 50+(基座) |
| 数据库迁移 | 58 个42 基座 + 15 diary + 1 role seed |
| 后端测试 | 88 个通过 ✅ |
| 前端测试 | 15 个文件、203 个用例通过 ✅1 个失败待修) |
| flutter analyze | 0 error ✅ |
| Git 提交 | 107 次 |
## 三端架构
```
┌─────────────────────────────────────────────────────┐
│ 暖记系统 │
├──────────┬──────────────────┬───────────────────────┤
│ 后端 API │ 管理端 Web │ 学生端 App │
│ Rust/Axum │ React/Ant Design │ Flutter │
│ :3000 │ :5174 │ :8080 │
│ │ │ │
│ erp-diary │ 用户管理 │ 手写日记 │
│ erp-auth │ 角色权限 │ 日历/心情 │
│ erp-core │ 审计日志 │ 班级/分享 │
│ erp-config│ 系统配置 │ 贴纸/模板 │
│ ... │ 插件管理 │ 成就/设置 │
├──────────┴──────────────────┴───────────────────────┤
│ PostgreSQL 16 + Redis 7 │
└─────────────────────────────────────────────────────┘
```
## 系统数据流
```
用户手写/涂鸦
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
```
## 一键启动
```bash
./scripts/dev.sh # 启动全部 (后端 + 管理端 + 学生端)
./scripts/dev.sh backend # 只启动后端 API
./scripts/dev.sh admin # 只启动管理端 (React, :5174)
./scripts/dev.sh app # 只启动学生端 (Flutter, :8080)
./scripts/dev.sh stop # 停止所有服务
```
管理端默认账号: `admin / admin123`
## 模块导航
- [[architecture]] — 仓库拓扑、基座继承、Feature Flag、多租户、安全合规、三端架构
- [[admin-web]] — 🆕 管理端 React 前端、Ant Design、从 HMS 基座复用
- [[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 未初始化 |
| 同步版本冲突 | [[data-layer]] | 乐观锁 | version 不匹配 |
| 深色模式颜色异常 | [[frontend]] | AppTheme | token 未适配深色值 |
| API 返回 403 | [[erp-diary]] | 权限守卫 | 权限码不匹配 |
| 管理端登录白屏 | [[admin-web]] | Vite proxy | 后端未启动或端口不对 |
| CORS 跨域错误 | [[architecture]] | config/default.toml | allowed_origins 未包含前端端口 |
| 端口占用启动失败 | `scripts/dev.sh stop` | netstat | 旧进程未清理 |
| 班级码验证失败 | [[frontend]] | auth_bloc | 班级码后端验证 TODO |
| Profile 页白屏 | [[frontend]] | UserRoleType | .name 应改为 .code |
## 相关文档
| 文档 | 位置 |
|------|------|
| 产品设计规格 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 |
| HMS 源码 (只读) | G:\hms |