iven 898e22c715 feat(mp): Phase 1 测试覆盖 + UX 无障碍 — 106 tests PASS + ARIA + focus ring
测试:
- secure-storage: 26 tests (AES 加解密/明文 fallback/迁移/Base64 边界)
- request.ts: 16 tests (扩展 ResponseCache/patientId 隔离/requestUnlimited)
- mock-api: 修复 getCachedPatientId 缺失导致 health 测试失败

UX 无障碍 (10 组件):
- SegmentTabs/DoctorTabBar: role=tablist/tab + aria-selected
- PrimaryButton/SecondaryButton: role=button + aria-disabled/aria-busy
- Loading/LoadingCard: role=status + aria-live=polite
- EmptyState: role=status + aria-live=polite
- ErrorState: role=alert + aria-live=assertive
- TrendChart tooltip: role=tooltip + aria-live=polite
- FormInput: aria-invalid + aria-label

焦点管理:
- 新增 _focus-ring.scss mixin (focus + focus-visible)
- 5 组件 SCSS 应用 focus-ring
2026-05-22 00:24:06 +08:00

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. 访问

开发命令

cargo check                        # 编译检查
cargo test --workspace             # 运行测试
cargo run -p erp-server            # 启动后端
cd apps/web && pnpm dev            # 启动前端
Description
No description provided
Readme 69 MiB
Languages
Rust 59.2%
TypeScript 32.2%
JavaScript 2.8%
SCSS 2.7%
Python 2.1%
Other 1%