docs: 更新 wiki + CLAUDE.md — 三端架构和管理端集成
Some checks failed
Main Merge / backend (push) Has been cancelled
Main Merge / frontend (push) Has been cancelled

- wiki/index.md: 更新关键数字、三端架构图、启动命令、症状导航
- wiki/architecture.md: 补充三端架构、来源追溯、活跃问题更新
- wiki/admin-web.md: 新建管理端文档 — 结构/API代理/功能映射/品牌定制清单
- CLAUDE.md: 补充 apps/web 目录、管理端场景化指令、三端启动命令
This commit is contained in:
iven
2026-06-02 10:11:03 +08:00
parent 8111471e93
commit 0a9e5b1cb3
4 changed files with 251 additions and 47 deletions

View File

@@ -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
View 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 基座复制管理端前端 |

View File

@@ -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 | 初始创建 — 架构决策、基座剥离记录、集成契约 |

View File

@@ -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+(基座) |
| 数据库迁移 | 5641 基座 + 15 diary | | 数据库迁移 | 5842 基座 + 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 |