4867202437aab5871527804d491ca159e3238d7d
CRITICAL: - C-1: consultation sender_id 改为从 JWT ctx.user_id 注入,防伪造 - C-2: consultation session 更新改为 CAS 原子操作,防并发丢失 - C-3: 随访记录创建包裹在事务中,保证记录/任务/后续任务一致性 - C-4/C-5/C-6: 唯一索引改为 partial index WHERE deleted_at IS NULL HIGH: - H-1: manage_patient_tags 添加 tag_ids 租户归属校验 - H-2: assign_doctor 添加重复关联检查 - H-3: calendar_view 限制日期范围最多 90 天 - H-4: export_sessions 添加 10000 条上限 - H-5: patient_tag_relation/patient_doctor_relation 添加 version 字段 - H-6: create_schedule 添加医生存在性检查 - H-7: 预约取消排班释放错误改为日志记录 - H-8: follow_up_task.related_appointment_id 添加 FK 约束 MEDIUM: - M-2: 修复 search LIKE 双重 % 包裹问题 - M-3: article_service 错误类型改为 ArticleNotFound - M-4: patient.created 事件移除 PII(姓名) - M-6: lab_report 添加 (tenant_id, report_type) 索引
ERP Platform Base
模块化商业 SaaS ERP 平台底座。
技术栈
| 层级 | 技术 |
|---|---|
| 后端 | Rust (Axum 0.8 + SeaORM + Tokio) |
| 数据库 | PostgreSQL 16+ |
| 缓存 | Redis 7+ |
| 前端 | Vite + React 18 + TypeScript + Ant Design 5 |
项目结构
erp/
├── crates/
│ ├── erp-core/ # 基础类型、错误、事件总线、模块 trait
│ ├── erp-common/ # 共享工具
│ ├── erp-auth/ # 身份与权限 (Phase 2)
│ ├── erp-workflow/ # 工作流引擎 (Phase 4)
│ ├── erp-message/ # 消息中心 (Phase 5)
│ ├── erp-config/ # 系统配置 (Phase 3)
│ └── erp-server/ # Axum 服务入口
│ └── migration/ # SeaORM 数据库迁移
├── apps/web/ # React SPA 前端
├── docker/ # Docker 开发环境
└── docs/ # 文档
快速开始
1. 启动基础设施
cd docker && docker compose up -d
2. 启动后端
cargo run -p erp-server
3. 启动前端
cd apps/web && pnpm install && pnpm dev
4. 访问
- 前端: http://localhost:5173
- 后端 API: http://localhost:3000
开发命令
cargo check # 编译检查
cargo test --workspace # 运行测试
cargo run -p erp-server # 启动后端
cd apps/web && pnpm dev # 启动前端
Description
Languages
Rust
59.2%
TypeScript
32.2%
JavaScript
2.8%
SCSS
2.7%
Python
2.1%
Other
1%