docs: 更新 wiki + CLAUDE.md — 三端架构和管理端集成
- wiki/index.md: 更新关键数字、三端架构图、启动命令、症状导航 - wiki/architecture.md: 补充三端架构、来源追溯、活跃问题更新 - wiki/admin-web.md: 新建管理端文档 — 结构/API代理/功能映射/品牌定制清单 - CLAUDE.md: 补充 apps/web 目录、管理端场景化指令、三端启动命令
This commit is contained in:
43
CLAUDE.md
43
CLAUDE.md
@@ -36,8 +36,13 @@ nj/ (一个仓库)
|
|||||||
│ ├── src/service/ # ~12 Service
|
│ ├── src/service/ # ~12 Service
|
||||||
│ ├── src/handler/ # ~10 Handler
|
│ ├── src/handler/ # ~10 Handler
|
||||||
│ └── src/{dto,error,event,state}.rs
|
│ └── src/{dto,error,event,state}.rs
|
||||||
├── app/ # Flutter 前端
|
├── apps/ # 🆕 管理端前端 (从 HMS 基座复用)
|
||||||
├── config/ # 服务器配置
|
│ └── web/ # React + Ant Design + Vite (:5174)
|
||||||
|
│ ├── src/pages/ # 管理页面 (用户/角色/权限/审计...)
|
||||||
|
│ └── vite.config.ts # API 代理 → localhost:3000
|
||||||
|
├── app/ # Flutter 学生端 (:8080)
|
||||||
|
├── scripts/dev.sh # 🆕 统一启动脚本 (自动清理端口)
|
||||||
|
├── config/ # 服务器配置 (CORS=*)
|
||||||
├── docker/ # Docker Compose (PG + Redis)
|
├── docker/ # Docker Compose (PG + Redis)
|
||||||
├── docs/ # 产品文档
|
├── docs/ # 产品文档
|
||||||
│ └── superpowers/specs/ # 设计规格 v1.2
|
│ └── superpowers/specs/ # 设计规格 v1.2
|
||||||
@@ -62,6 +67,7 @@ nj/ (一个仓库)
|
|||||||
| BPMN 工作流 | erp-workflow 继承 | 零开发 |
|
| BPMN 工作流 | erp-workflow 继承 | 零开发 |
|
||||||
| SeaORM 迁移框架 | erp-server 继承 | 零开发 |
|
| SeaORM 迁移框架 | erp-server 继承 | 零开发 |
|
||||||
| OpenAPI 文档 | utoipa 继承 | 零开发 |
|
| OpenAPI 文档 | utoipa 继承 | 零开发 |
|
||||||
|
| 管理端 Web 前端 | HMS apps/web/ 复用 | 零开发 (品牌替换待做) |
|
||||||
| student/teacher/parent 角色 | erp-auth 扩展 | 🆕 ~200 行 |
|
| student/teacher/parent 角色 | erp-auth 扩展 | 🆕 ~200 行 |
|
||||||
| 班级码认证 | erp-auth 扩展 | 🆕 ~500 行 |
|
| 班级码认证 | erp-auth 扩展 | 🆕 ~500 行 |
|
||||||
| 日记 CRUD + 同步 | erp-diary 新增 | 🆕 ~2000 行 |
|
| 日记 CRUD + 同步 | erp-diary 新增 | 🆕 ~2000 行 |
|
||||||
@@ -321,9 +327,12 @@ chore(docker): 添加 PostgreSQL 16 + Redis 7 开发环境
|
|||||||
- 当遇到**新增数据表** → 创建 SeaORM migration + Entity,包含所有标准字段
|
- 当遇到**新增数据表** → 创建 SeaORM migration + Entity,包含所有标准字段
|
||||||
- 当遇到**跨模块通信** → 定义事件类型到 erp-diary/src/event.rs,通过 EventBus 发布
|
- 当遇到**跨模块通信** → 定义事件类型到 erp-diary/src/event.rs,通过 EventBus 发布
|
||||||
- 当遇到**新增 Flutter 功能** → 创建 features/{name}/ 目录,bloc/views/widgets 分层
|
- 当遇到**新增 Flutter 功能** → 创建 features/{name}/ 目录,bloc/views/widgets 分层
|
||||||
|
- 当遇到**管理端修改** → 在 apps/web/ 中修改 React 组件,`pnpm dev` 启动开发服务器
|
||||||
|
- 当遇到**管理端新增页面** → 在 apps/web/src/pages/ 添加,更新 routeConfig.ts + 侧边栏菜单
|
||||||
- 当遇到**手写性能问题** → 检查 shouldRepaint 守卫 + 笔画光栅化缓存 + Listener 替代 GestureDetector
|
- 当遇到**手写性能问题** → 检查 shouldRepaint 守卫 + 笔画光栅化缓存 + Listener 替代 GestureDetector
|
||||||
- 当遇到**同步冲突** → 版本号比对,Phase 1 使用"本地优先"简单策略
|
- 当遇到**同步冲突** → 版本号比对,Phase 1 使用"本地优先"简单策略
|
||||||
- 当遇到**儿童数据** → 确认 PIPL 合规检查清单(家长授权/最小数据/加密/注销机制)
|
- 当遇到**儿童数据** → 确认 PIPL 合规检查清单(家长授权/最小数据/加密/注销机制)
|
||||||
|
- 当遇到**启动端口占用** → `./scripts/dev.sh stop` 清理所有旧进程
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -419,6 +428,7 @@ chore(docker): 添加 PostgreSQL 16 + Redis 7 开发环境
|
|||||||
| 手写引擎 | `wiki/handwriting-engine.md` — 双层 Canvas + 光栅化缓存 |
|
| 手写引擎 | `wiki/handwriting-engine.md` — 双层 Canvas + 光栅化缓存 |
|
||||||
| 数据层 | `wiki/data-layer.md` — Isar + SyncEngine 离线同步 |
|
| 数据层 | `wiki/data-layer.md` — Isar + SyncEngine 离线同步 |
|
||||||
| Flutter 前端 | `wiki/frontend.md` — 16 模块 + BLoC + 设计系统 |
|
| Flutter 前端 | `wiki/frontend.md` — 16 模块 + BLoC + 设计系统 |
|
||||||
|
| 管理端前端 | `wiki/admin-web.md` — React + Ant Design + 品牌定制清单 |
|
||||||
| 后端模块 | `wiki/erp-diary.md` — Entity/Service/Handler 清单 |
|
| 后端模块 | `wiki/erp-diary.md` — Entity/Service/Handler 清单 |
|
||||||
| 技术债看板 | `docs/tech-debt-board.md` — 10 条待偿还债务 |
|
| 技术债看板 | `docs/tech-debt-board.md` — 10 条待偿还债务 |
|
||||||
| 产品设计规格 v1.2 | `docs/superpowers/specs/2026-05-31-nuanji-warm-notes-design.md` |
|
| 产品设计规格 v1.2 | `docs/superpowers/specs/2026-05-31-nuanji-warm-notes-design.md` |
|
||||||
@@ -431,6 +441,35 @@ chore(docker): 添加 PostgreSQL 16 + Redis 7 开发环境
|
|||||||
|
|
||||||
## 10. 开发环境
|
## 10. 开发环境
|
||||||
|
|
||||||
|
### 三端启动
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 一键启动全部 (后端 + 管理端 + 学生端)
|
||||||
|
./scripts/dev.sh
|
||||||
|
|
||||||
|
# 单独启动
|
||||||
|
./scripts/dev.sh backend # Rust Axum → :3000
|
||||||
|
./scripts/dev.sh admin # React Vite → :5174
|
||||||
|
./scripts/dev.sh app # Flutter Web → :8080
|
||||||
|
|
||||||
|
# 停止所有 (自动清理端口)
|
||||||
|
./scripts/dev.sh stop
|
||||||
|
```
|
||||||
|
|
||||||
|
管理端默认账号: `admin / admin123`
|
||||||
|
|
||||||
|
### 环境依赖
|
||||||
|
|
||||||
|
| 服务 | 地址 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| PostgreSQL 16 | localhost:5432 | 数据库 `nuanji` |
|
||||||
|
| Redis 7 | localhost:6379 | 缓存/速率限制 |
|
||||||
|
| Flutter SDK | D:\flutter\bin\flutter.bat | 学生端 |
|
||||||
|
| Node.js + pnpm | - | 管理端 |
|
||||||
|
| Rust toolchain | stable | 后端 |
|
||||||
|
|
||||||
|
### 参考文档
|
||||||
|
|
||||||
| 文档 | 位置 |
|
| 文档 | 位置 |
|
||||||
|------|------|
|
|------|------|
|
||||||
| 产品设计规格 v1.2 | `docs/superpowers/specs/2026-05-31-nuanji-warm-notes-design.md` |
|
| 产品设计规格 v1.2 | `docs/superpowers/specs/2026-05-31-nuanji-warm-notes-design.md` |
|
||||||
|
|||||||
126
wiki/admin-web.md
Normal file
126
wiki/admin-web.md
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
---
|
||||||
|
title: 管理端 Web 前端
|
||||||
|
updated: 2026-06-02
|
||||||
|
status: active
|
||||||
|
tags: [react, antd, vite, admin, typescript]
|
||||||
|
---
|
||||||
|
|
||||||
|
# 管理端 Web 前端
|
||||||
|
|
||||||
|
> 从 [[index]] 导航。关联: [[architecture]] [[erp-diary]]
|
||||||
|
|
||||||
|
## 1. 设计决策
|
||||||
|
|
||||||
|
### Q: 管理端从哪里来?
|
||||||
|
|
||||||
|
从 HMS 基座 (G:\hms/apps/web/) 复制而来,避免重复开发。HMS 已有完整的 React 管理面板(用户/角色/权限/组织/审计等),暖记直接复用。
|
||||||
|
|
||||||
|
### Q: 管理端技术栈?
|
||||||
|
|
||||||
|
React 19 + Ant Design 6 + Vite 8 + TypeScript + Zustand + Tailwind CSS 4。与基座后端 API 完全对接。
|
||||||
|
|
||||||
|
### Q: 为什么不和学生端一起用 Flutter?
|
||||||
|
|
||||||
|
管理端面向管理员/老师,Web 浏览器操作更高效。学生端面向小学生,需要触摸友好的移动端体验。
|
||||||
|
|
||||||
|
## 2. 关键结构
|
||||||
|
|
||||||
|
```
|
||||||
|
apps/web/
|
||||||
|
├── src/
|
||||||
|
│ ├── api/ # API 调用层 (Axios)
|
||||||
|
│ │ ├── client.ts # 基础配置, baseURL=/api/v1
|
||||||
|
│ │ ├── ai/ # AI 分析 API
|
||||||
|
│ │ └── health/ # 健康检查 API
|
||||||
|
│ ├── components/ # 通用组件
|
||||||
|
│ │ ├── Copilot/ # AI 助手
|
||||||
|
│ │ └── MediaPicker/# 媒体选择器
|
||||||
|
│ ├── hooks/ # 自定义 Hooks
|
||||||
|
│ ├── layouts/ # 布局组件 (侧边栏+顶栏)
|
||||||
|
│ ├── pages/ # 页面
|
||||||
|
│ │ ├── dashboard/ # 仪表盘
|
||||||
|
│ │ ├── settings/ # 系统配置
|
||||||
|
│ │ ├── plugins/ # 插件管理
|
||||||
|
│ │ ├── workflow/ # 工作流
|
||||||
|
│ │ ├── messages/ # 消息管理
|
||||||
|
│ │ └── graph/ # 图形编辑器
|
||||||
|
│ ├── stores/ # Zustand 状态
|
||||||
|
│ ├── constants/ # 常量定义
|
||||||
|
│ └── utils/ # 工具函数
|
||||||
|
├── vite.config.ts # Vite 配置 (proxy → localhost:3000)
|
||||||
|
└── package.json # 依赖管理 (pnpm)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. API 代理配置
|
||||||
|
|
||||||
|
`vite.config.ts` 已配置开发代理,所有 `/api` 请求转发到后端:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
proxy: {
|
||||||
|
"/api": { target: "http://localhost:3000", changeOrigin: true },
|
||||||
|
"/uploads": { target: "http://localhost:3000", changeOrigin: true },
|
||||||
|
"/ws": { target: "ws://localhost:3000", ws: true },
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
无需额外 CORS 配置(同源代理)。
|
||||||
|
|
||||||
|
## 4. 功能模块映射
|
||||||
|
|
||||||
|
### 已验证的基座功能
|
||||||
|
|
||||||
|
| 管理端页面 | 后端 API | 状态 |
|
||||||
|
|-----------|---------|------|
|
||||||
|
| 登录 | POST /auth/login | ✅ |
|
||||||
|
| 仪表盘 | GET /health + 统计 | ✅ 部分数据待适配 |
|
||||||
|
| 用户管理 | CRUD /users | ✅ |
|
||||||
|
| 角色权限 | CRUD /roles + /permissions | ✅ |
|
||||||
|
| 审计日志 | GET /audit-logs | ✅ |
|
||||||
|
| 系统配置 | CRUD /config/settings | ✅ |
|
||||||
|
| 菜单管理 | /config/menus | ✅ |
|
||||||
|
| 数据字典 | /config/dictionaries | ✅ |
|
||||||
|
| 插件管理 | /admin/plugins | ✅ |
|
||||||
|
| 消息管理 | /messages | ✅ |
|
||||||
|
|
||||||
|
### 待添加的暖记专用功能
|
||||||
|
|
||||||
|
| 页面 | 说明 | 优先级 |
|
||||||
|
|------|------|--------|
|
||||||
|
| 班级管理 | 查看/创建/管理班级 | HIGH |
|
||||||
|
| 日记审核 | 查看学生日记 + 点评 | HIGH |
|
||||||
|
| 贴纸管理 | 上传/管理贴纸包 | MEDIUM |
|
||||||
|
| 主题管理 | 布置写作主题 | MEDIUM |
|
||||||
|
| 心情统计 | 全校/班级心情趋势 | LOW |
|
||||||
|
|
||||||
|
## 5. 品牌定制清单
|
||||||
|
|
||||||
|
管理端目前仍显示 HMS 品牌,需要替换为暖记品牌:
|
||||||
|
|
||||||
|
| 位置 | 当前值 | 替换为 |
|
||||||
|
|------|--------|--------|
|
||||||
|
| 登录页标题 | "HMS 健康管理平台" | "暖记管理后台" |
|
||||||
|
| 登录页副标题 | "患者管理·健康监测..." | "班级管理·日记审核·成长追踪" |
|
||||||
|
| 侧边栏标题 | "HMS 健康管理平台" | "暖记 Nuanji" |
|
||||||
|
| 底部版权 | "HMS 健康管理平台" | "暖记 Nuanji" |
|
||||||
|
| 页面 title | index.html | "暖记管理后台" |
|
||||||
|
| Logo | HMS logo | 暖记 Logo |
|
||||||
|
| 主题色 | 蓝色系 (Ant Design 默认) | 珊瑚色 (#E07A5F) |
|
||||||
|
| 不需要的页面 | 健康管理/AI分析 | 隐藏或移除 |
|
||||||
|
|
||||||
|
## 6. 启动方式
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 方式一:统一启动脚本
|
||||||
|
./scripts/dev.sh admin
|
||||||
|
|
||||||
|
# 方式二:手动启动
|
||||||
|
cd apps/web
|
||||||
|
pnpm install # 首次需要安装依赖
|
||||||
|
pnpm dev # 启动开发服务器 → http://localhost:5174
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7. 变更记录
|
||||||
|
|
||||||
|
| 日期 | 变更 |
|
||||||
|
|------|------|
|
||||||
|
| 2026-06-02 | 初始创建 — 从 HMS 基座复制管理端前端 |
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
---
|
---
|
||||||
title: 架构决策
|
title: 架构决策
|
||||||
updated: 2026-06-01
|
updated: 2026-06-02
|
||||||
status: active
|
status: active
|
||||||
tags: [architecture, base, multi-tenant, security]
|
tags: [architecture, base, multi-tenant, security, three-tier]
|
||||||
---
|
---
|
||||||
|
|
||||||
# 架构决策
|
# 架构决策
|
||||||
@@ -48,9 +48,35 @@ Android + iOS 跨平台首发。CustomPainter + Listener 手写性能满足 <16m
|
|||||||
```
|
```
|
||||||
HMS (G:\hms) [只读]
|
HMS (G:\hms) [只读]
|
||||||
└─复制→ base.git (https://git.stableeasy.com/iven/base.git)
|
└─复制→ base.git (https://git.stableeasy.com/iven/base.git)
|
||||||
└─克隆→ nj.git (暖记 = 基座 + erp-diary + Flutter)
|
└─克隆→ nj.git (暖记 = 基座 + erp-diary + Flutter + 管理端)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 三端架构
|
||||||
|
|
||||||
|
```
|
||||||
|
nj/
|
||||||
|
├── crates/ # 后端 (Rust Axum, :3000)
|
||||||
|
│ ├── erp-server/ # 入口 + diary feature flag
|
||||||
|
│ └── erp-diary/ # 暖记业务模块
|
||||||
|
├── apps/
|
||||||
|
│ └── web/ # 管理端 (React + Ant Design, :5174)
|
||||||
|
│ └── vite.config.ts # proxy /api → :3000
|
||||||
|
├── app/ # 学生端 (Flutter, :8080)
|
||||||
|
│ └── lib/features/ # 16 功能模块
|
||||||
|
├── scripts/dev.sh # 统一启动脚本 (自动清理端口)
|
||||||
|
└── config/default.toml # 环境配置 (CORS=*)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 来源追溯
|
||||||
|
|
||||||
|
| 组件 | 来源 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| crates/erp-* (基座 6 个) | base.git | 零开发 |
|
||||||
|
| crates/erp-diary | 新增 | ~5100 行 Rust |
|
||||||
|
| apps/web/ | HMS apps/web/ | React 管理面板复用 |
|
||||||
|
| app/ (Flutter) | 新增 | ~19500 行 Dart |
|
||||||
|
| scripts/dev.sh | 新增 | 三端统一启动 |
|
||||||
|
|
||||||
### Cargo Workspace
|
### Cargo Workspace
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -104,12 +130,13 @@ nj/crates/
|
|||||||
|
|
||||||
| 问题 | 级别 | 状态 | 说明 |
|
| 问题 | 级别 | 状态 | 说明 |
|
||||||
|------|------|------|------|
|
|------|------|------|------|
|
||||||
| Feature Flag 未实现 | HIGH | 待做 | erp-server/Cargo.toml 无 `[features]` 段,所有模块无条件编译 |
|
| 管理端品牌仍是 HMS | HIGH | 待做 | 标题/Logo/颜色需替换为暖记品牌 |
|
||||||
| Docker 部署未验证 | HIGH | 待做 | docker/ 配置完善但 Dockerfile 不存在,未实际运行 |
|
| 管理端缺少暖记专用页面 | HIGH | 待做 | 班级管理/日记审核/贴纸管理等页面待添加 |
|
||||||
|
| Docker 部署未验证 | HIGH | 待做 | docker/ 配置完善但 Dockerfile 不存在 |
|
||||||
| 上下文窗口耗尽 | MEDIUM | 已缓解 | CLAUDE.md §8 会话交接机制 |
|
| 上下文窗口耗尽 | MEDIUM | 已缓解 | CLAUDE.md §8 会话交接机制 |
|
||||||
| Windows Defender 锁定 exe | MEDIUM | 需手动 | 排除 target/ 目录 |
|
| Windows Defender 锁定 exe | MEDIUM | 需手动 | 排除 target/ 目录 |
|
||||||
| erp-plugin 超大文件 | LOW | 待重构 | manifest.rs (1809行) + data_service.rs (1907行) 超过 800 行限制 |
|
| erp-plugin 超大文件 | LOW | 待重构 | manifest.rs 1809行 + data_service.rs 1907行 |
|
||||||
| erp-message module.rs 过大 | LOW | 待重构 | 1283 行,事件监听逻辑可拆分 |
|
| Dashboard 部分数据加载失败 | LOW | 待做 | 统计 API 需适配暖记数据模型 |
|
||||||
|
|
||||||
### 历史教训
|
### 历史教训
|
||||||
|
|
||||||
@@ -121,5 +148,6 @@ nj/crates/
|
|||||||
|
|
||||||
| 日期 | 变更 |
|
| 日期 | 变更 |
|
||||||
|------|------|
|
|------|------|
|
||||||
|
| 2026-06-02 | 补充三端架构、管理端复用说明、更新活跃问题 |
|
||||||
| 2026-06-01 | 补充 Feature Flag 状态、超大文件发现 |
|
| 2026-06-01 | 补充 Feature Flag 状态、超大文件发现 |
|
||||||
| 2026-06-01 | 初始创建 — 架构决策、基座剥离记录、集成契约 |
|
| 2026-06-01 | 初始创建 — 架构决策、基座剥离记录、集成契约 |
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: 暖记知识库首页
|
title: 暖记知识库首页
|
||||||
updated: 2026-06-01
|
updated: 2026-06-02
|
||||||
status: active
|
status: active
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -10,39 +10,41 @@ status: active
|
|||||||
|
|
||||||
## 关键数字
|
## 关键数字
|
||||||
|
|
||||||
> 最后更新: 2026-06-01 | 基线: main (c2a9579)
|
> 最后更新: 2026-06-02 | 基线: main (8111471)
|
||||||
|
|
||||||
| 指标 | 值 |
|
| 指标 | 值 |
|
||||||
|------|-----|
|
|------|-----|
|
||||||
| Rust crate | 8 个(6 基座 + 1 入口 + erp-diary) |
|
| Rust crate | 8 个(6 基座 + 1 入口 + erp-diary) |
|
||||||
| Rust 总代码 | ~51,459 行(256 个 .rs 文件) |
|
| Rust 总代码 | ~51,500 行 |
|
||||||
| erp-diary 新增 | 5,108 行(41 个文件) |
|
| erp-diary 新增 | 5,108 行(41 个文件) |
|
||||||
| Dart 文件 | 70 个(~18,398 行,含生成代码 6,128 行) |
|
| Dart 文件 | 74 个(~19,500 行) |
|
||||||
|
| 管理端前端 (React) | ~317 个 TypeScript 文件 |
|
||||||
| SeaORM Entity | 15 个(erp-diary) + 50+(基座) |
|
| SeaORM Entity | 15 个(erp-diary) + 50+(基座) |
|
||||||
| 数据库迁移 | 56 个(41 基座 + 15 diary) |
|
| 数据库迁移 | 58 个(42 基座 + 15 diary + 1 role seed) |
|
||||||
| BLoC 模块 | 12 个(5 flutter_bloc + 5 ChangeNotifier + 2 混合) |
|
| 后端测试 | 77 个通过 ✅ |
|
||||||
| Flutter features | 16 个 |
|
| 前端 BLoC 测试 | 84 个通过 ✅ |
|
||||||
| Isar Collection | 3 个(JournalEntry / JournalElement / PendingOperation) |
|
| flutter analyze | 0 error ✅ |
|
||||||
| 后端测试 | ~50 个通过 |
|
| Git 提交 | 22 次 |
|
||||||
| 前端测试 | **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% |
|
│ 后端 API │ 管理端 Web │ 学生端 App │
|
||||||
| erp-config (字典/菜单/设置) | 5,111 | 23 | 7.3% |
|
│ Rust/Axum │ React/Ant Design │ Flutter │
|
||||||
| erp-diary (暖记业务) | 5,108 | 41 | 7.3% |
|
│ :3000 │ :5174 │ :8080 │
|
||||||
| erp-server (入口/迁移) | ~10,414 | 72 | 14.9% |
|
│ │ │ │
|
||||||
| erp-core (事件/加密/审计) | 2,774 | 27 | 4.0% |
|
│ erp-diary │ 用户管理 │ 手写日记 │
|
||||||
| erp-message (通知/SSE) | 3,872 | 19 | 5.5% |
|
│ erp-auth │ 角色权限 │ 日历/心情 │
|
||||||
| Flutter 前端 | ~18,398 | 70 | 26.3% |
|
│ erp-core │ 审计日志 │ 班级/分享 │
|
||||||
| **合计** | **~69,857** | **~346** | **100%** |
|
│ erp-config│ 系统配置 │ 贴纸/模板 │
|
||||||
|
│ ... │ 插件管理 │ 成就/设置 │
|
||||||
|
├──────────┴──────────────────┴───────────────────────┤
|
||||||
|
│ PostgreSQL 16 + Redis 7 │
|
||||||
|
└─────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
## 系统数据流
|
## 系统数据流
|
||||||
|
|
||||||
@@ -71,14 +73,27 @@ JournalEntry RemoteJournalRepository
|
|||||||
Axum → erp-diary → PostgreSQL
|
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、多租户、安全合规
|
- [[architecture]] — 仓库拓扑、基座继承、Feature Flag、多租户、安全合规、三端架构
|
||||||
|
- [[admin-web]] — 🆕 管理端 React 前端、Ant Design、从 HMS 基座复用
|
||||||
- [[handwriting-engine]] — 双层 Canvas、光栅化缓存、perfect_freehand、4 种画笔
|
- [[handwriting-engine]] — 双层 Canvas、光栅化缓存、perfect_freehand、4 种画笔
|
||||||
- [[data-layer]] — Isar 本地存储、Repository 模式、SyncEngine 离线同步
|
- [[data-layer]] — Isar 本地存储、Repository 模式、SyncEngine 离线同步
|
||||||
- [[frontend]] — Flutter BLoC、16 个功能模块、设计系统、响应式布局
|
- [[frontend]] — Flutter BLoC、16 个功能模块、设计系统、响应式布局
|
||||||
- [[erp-diary]] — Rust 后端业务模块、Entity/Service/Handler、API 端点、权限码
|
- [[erp-diary]] — Rust 后端业务模块、Entity/Service/Handler、API 端点、权限码
|
||||||
- [[project-health]] — 🆕 项目健康度评估、技术债全景、风险矩阵、改进建议
|
- [[project-health]] — 项目健康度评估、技术债全景、风险矩阵、改进建议
|
||||||
|
|
||||||
## 症状导航
|
## 症状导航
|
||||||
|
|
||||||
@@ -86,19 +101,14 @@ JournalEntry RemoteJournalRepository
|
|||||||
|------|------|------|----------|
|
|------|------|------|----------|
|
||||||
| 笔画卡顿 >16ms | [[handwriting-engine]] | 光栅化缓存 | shouldRepaint 守卫失效 / 未用 Listener |
|
| 笔画卡顿 >16ms | [[handwriting-engine]] | 光栅化缓存 | shouldRepaint 守卫失效 / 未用 Listener |
|
||||||
| 编辑器保存失败 | [[data-layer]] | IsarDatabase | Isar 未初始化 |
|
| 编辑器保存失败 | [[data-layer]] | IsarDatabase | Isar 未初始化 |
|
||||||
| Isar `findAll` 未定义 | [[data-layer]] | 扩展方法 | 缺少 `import 'package:isar/isar.dart'` |
|
|
||||||
| 同步版本冲突 | [[data-layer]] | 乐观锁 | version 不匹配 |
|
| 同步版本冲突 | [[data-layer]] | 乐观锁 | version 不匹配 |
|
||||||
| 深色模式颜色异常 | [[frontend]] | AppTheme | token 未适配深色值 |
|
| 深色模式颜色异常 | [[frontend]] | AppTheme | token 未适配深色值 |
|
||||||
| API 返回 403 | [[erp-diary]] | 权限守卫 | 权限码不匹配 |
|
| API 返回 403 | [[erp-diary]] | 权限守卫 | 权限码不匹配 |
|
||||||
| 迁移执行失败 | [[architecture]] | 多租户 | 表冲突 / 缺失迁移 |
|
| 管理端登录白屏 | [[admin-web]] | Vite proxy | 后端未启动或端口不对 |
|
||||||
| 上下文窗口耗尽 | CLAUDE.md §8 | 会话交接 | 长会话未及时交接 |
|
| CORS 跨域错误 | [[architecture]] | config/default.toml | allowed_origins 未包含前端端口 |
|
||||||
| 手写穿透背景 | [[handwriting-engine]] | 橡皮擦 | 未用 saveLayer + dstOut |
|
| 端口占用启动失败 | `scripts/dev.sh stop` | netstat | 旧进程未清理 |
|
||||||
| 模式切换卡顿 | [[handwriting-engine]] | IgnorePointer | if/else 销毁重建 Widget |
|
| 班级码验证失败 | [[frontend]] | auth_bloc | 班级码后端验证 TODO |
|
||||||
| 热重载后 Isar 崩溃 | [[data-layer]] | 初始化 | 未 close 就 re-open |
|
| Profile 页白屏 | [[frontend]] | UserRoleType | .name 应改为 .code |
|
||||||
| 编辑器加载空白 | [[frontend]] | EditorBloc | journalId 有值但未加载 Isar 数据 |
|
|
||||||
| SyncEngine 队列丢失 | [[data-layer]] | 持久化 | 退出时未调 persistPendingQueue |
|
|
||||||
| SSE 推送不工作 | [[frontend]] | 端口配置 | SSE 端口 8080 vs API 端口 3000 |
|
|
||||||
| 班级码验证失败 | [[frontend]] | auth_bloc | 班级码后端验证 TODO 未实现 |
|
|
||||||
|
|
||||||
## 相关文档
|
## 相关文档
|
||||||
|
|
||||||
@@ -110,3 +120,4 @@ JournalEntry RemoteJournalRepository
|
|||||||
| 技术债看板 | `docs/tech-debt-board.md` |
|
| 技术债看板 | `docs/tech-debt-board.md` |
|
||||||
| OpenDesign 原型 | `docs/opendesign/warm-notes-journal-app.md` |
|
| OpenDesign 原型 | `docs/opendesign/warm-notes-journal-app.md` |
|
||||||
| 基座仓库 | https://git.stableeasy.com/iven/base.git |
|
| 基座仓库 | https://git.stableeasy.com/iven/base.git |
|
||||||
|
| HMS 源码 (只读) | G:\hms |
|
||||||
|
|||||||
Reference in New Issue
Block a user