Files
hms/wiki/testing.md
iven 40b5141832
Some checks failed
CI / rust-check (push) Has been cancelled
CI / rust-test (push) Has been cancelled
CI / frontend-build (push) Has been cancelled
CI / security-audit (push) Has been cancelled
docs: 全面更新 wiki 文档至当前实现状态
9 个 wiki 页面全部更新:
- index: 关键数字更新(15 crate/48 表/50 迁移/6 模块)
- erp-health: 从"规划中"更新为"已实现"(18 实体/14 权限)
- erp-server: 6 模块注册/8 环境变量/5 后台任务
- database: 50 迁移/48 表/健康模块迁移(m000042-m000050)
- frontend: 10 健康路由/12 共享组件/7 健康 API/3 单元测试
- miniprogram: 20 页面/10 服务/9 组件
- testing: 93 后端测试+3 前端测试/全链路验证结果
- erp-core: 新增 erp-health 集成契约
- architecture: 6 模块实现状态表/预约 CAS/PII 加密
2026-04-25 11:57:20 +08:00

159 lines
5.2 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-04-25
status: stable
tags: [testing, verification]
---
# 测试与验证
> 从 [[index]] 导航。关联: [[infrastructure]] [[database]] [[frontend]] [[erp-server]] [[erp-health]]
## 1. 设计决策
- **真实数据库优先** — 集成测试用真实 PostgreSQL不用内存模拟
- **分层验证** — 编译检查 → 单元测试 → 功能验证 → 生产构建
- **环境配置统一由 [[infrastructure]] 管理** — 连接信息、启动命令、登录凭据见该页
## 2. 关键文件 + 验证清单
### 测试分布
| Crate | 测试数 | 覆盖 |
|-------|--------|------|
| erp-auth | 8 | 密码哈希、TTL 解析 |
| erp-core | 6 | RBAC 权限检查 |
| erp-workflow | 16 | BPMN 解析、表达式求值 |
| erp-plugin-prototype | 6 | WASM 插件集成 |
| erp-health (validation) | 57 | 输入验证纯函数测试 |
| **后端总计** | **93** | |
| 前端 (vitest) | 3 | 健康常量、useThemeMode hook、StatusTag 组件 |
| E2E (playwright) | 4 spec | 登录、用户管理、插件、租户隔离 |
### 编译 + 测试
```bash
cargo check # 编译无错误
cargo test --workspace # 全量测试
cargo clippy -- -D warnings # Lint 无警告
cargo fmt --check # 格式检查
cd apps/web && pnpm build # 前端生产构建
cd apps/web && pnpm test # 前端单元测试 (vitest)
cd apps/web && pnpm test:e2e # E2E 测试 (playwright)
```
### 功能验证端点
| 端点 | 说明 |
|------|------|
| `http://localhost:3000/api/v1/health` | 健康检查 |
| `http://localhost:3000/api/docs/openapi.json` | OpenAPI 文档 |
| `http://localhost:5174` | 前端页面 |
### API 快速测试
```bash
# 登录获取 Token
curl -s http://localhost:3000/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"Admin@2026"}'
```
### 前端性能基准2026-04-18 Lighthouse
Accessibility / SEO / Best Practices 均 100LCP 840msCLS 0.02
### 微信小程序验证
```bash
cd apps/miniprogram && pnpm build:weapp # 构建
# 在微信开发者工具中打开 apps/miniprogram 项目
# 点击"编译" → 勾选协议 → 点击"微信一键登录"
```
验证点:登录成功 → 首页加载 → 各 Tab 页面可访问
## 3. 代码逻辑
### 健康模块全链路验证结果2026-04-25
| 链路 | API | 前端 UI | 状态 |
|------|-----|---------|------|
| 医生 CRUD | 创建/搜索/编辑 | 医护管理页面 | ✅ |
| 排班管理 | 创建/列表/日历 | 排班管理页面 | ✅ |
| 预约管理 | 创建+状态流转 | 预约列表/新建弹窗 | ✅ |
| 随访管理 | 创建→进行→完成 | 随访列表/操作 | ✅ |
| 咨询管理 | 创建会话+消息 | 咨询列表/导出 | ✅ |
| 患者详情 | 详情/编辑/标签 | 详情页+健康数据标签 | ✅ |
### erp-health validation.rs 测试覆盖
57 个纯函数测试覆盖:
- 患者信息验证(姓名、身份证、手机号、性别、血型)
- 预约验证(日期、时段、类型)
- 随访任务验证(计划日期、类型)
- 咨询会话验证
- 体征数据验证(血压范围、心率、体重、血糖)
- 文章验证
### 集成契约
| 方向 | 模块 | 触发时机 |
|------|------|---------|
| 依赖 ← | [[infrastructure]] | 环境准备、连接信息 |
| 验证 → | [[erp-server]] | 健康检查、API 测试 |
| 验证 → | [[frontend]] | 生产构建 |
| 验证 → | [[erp-health]] | 健康模块全链路验证 |
**不变量**: 功能验证需要后端服务运行中,编译检查必须先于测试通过
### 数据库常用查询
```bash
# 连接数据库
D:\postgreSQL\bin\psql.exe -U postgres -h localhost -d erp
```
```sql
SELECT version FROM seaql_migrations ORDER BY version; -- 迁移记录(应为 50 条)
SELECT code, name FROM permissions WHERE deleted_at IS NULL ORDER BY code; -- 权限列表
SELECT count(*) FROM patient WHERE deleted_at IS NULL; -- 患者数量
```
## 4. 活跃问题 + 陷阱
### 测试覆盖空白
| 领域 | 当前状态 | 优先级 |
|------|---------|--------|
| erp-health service 层集成测试 | 无 | P0 |
| erp-health handler 层测试 | 无 | P1 |
| 前端健康模块组件测试 | 仅 StatusTag | P1 |
| E2E 健康模块测试 | 无 | P1 |
### 活跃问题
| 问题 | 级别 | 状态 |
|------|------|------|
| display_name 存储 XSS HTML | P1 | 待修复 |
| antd vendor chunk 2.9MB (gzip ~400KB) | P3 | 待优化 |
### 历史教训
- CRM 权限码与实体名不一致 → 403详见 [[wasm-plugin]] 权限命名铁律)
- `AppError::Internal` 无日志 → 500 静默(已加 `tracing::error`
- `build_scope_sql` 参数索引硬编码 → SQL 参数错位(已动态化)
- 已应用迁移文件被删除 → 启动失败(创建 stub 迁移修复)
⚠️ 首次 `cargo run` 需编译整个 workspace含 wasmtime后续增量快
⚠️ Redis 不可达时限流自动降级为 fail-open
## 5. 变更记录
| 日期 | 变更 |
|------|------|
| 2026-04-25 | 全面更新93 后端测试 + 3 前端测试、健康模块全链路验证结果、测试覆盖空白清单 |
| 2026-04-24 | 添加微信小程序验证步骤 |
| 2026-04-23 | 重构为 5 节结构,去除与 infrastructure.md 重复 |
| 2026-04-18 | Lighthouse 审计 + 性能优化 |