docs: V1 测试版本全面端到端测试报告 + 专家评估 + wiki 更新
- 测试报告: 157 端点测试, Health 63% / AI+Dialysis+Plugin 92.4% - 专家评估: 产品7.3/架构7.6/安全7.0/测试4.1/UX7.6, 综合6.2 B- - CRITICAL×2: 空标签名500 + 媒体库路由冲突 - CONDITIONAL GO: 修复 P0 问题后可发布 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -203,6 +203,32 @@ impl ErpModule for AuthModule {
|
||||
- RLS 行级安全 — PostgreSQL Row Level Policy,中间件 SET `app.current_tenant_id`
|
||||
- Dead Letter — 失败事件自动写入 dead_letter_events 表
|
||||
|
||||
### DTO 输入校验规范
|
||||
|
||||
> **历史教训**: 2026-05-19 全系统 DTO 审计发现 44 处校验缺失(跨 6 个 crate),根因是 Update 结构体与 Create 结构体校验不对称。以下为强制规范。
|
||||
|
||||
**DTO 编写铁律:**
|
||||
|
||||
1. **所有请求结构体必须 `derive(Validate)`** — 包括 `Create*Req`、`Update*Req`、`Assign*Req`、查询参数等
|
||||
2. **Update 与 Create 校验对称** — `Create*Req` 有 `#[validate(length(...))]` 的字段,`Update*Req` 对应字段也必须有,不允许降级
|
||||
3. **枚举字段必须自定义校验** — `status`、`type`、`method`、`channel` 等有限集合字段,使用 `#[validate(custom(function = "..."))]` 限制合法值
|
||||
4. **Vec 字段必须检查非空** — `role_ids`、`permission_ids`、`scopes` 等用 `#[validate(length(min = 1))]`
|
||||
5. **密码字段加 max 限制** — `max = 128`,防止 bcrypt DoS
|
||||
6. **URL 字段必须防 SSRF** — 禁止 `localhost`/`127.0.0.1`/`0.0.0.0`,仅允许 `http://`/`https://` 协议
|
||||
7. **数值范围必须限定** — `rate_limit`、`timeout`、`token_lifetime` 等用 `#[validate(range(min, max))]`
|
||||
8. **handler 层必须调用 `validate()`** — 每个接收 `Json<T>` 的 handler 函数体内第一行必须 `req.validate().map_err(|e| AppError::Validation(e.to_string()))?`
|
||||
|
||||
**校验清单(新增 DTO 时逐项确认):**
|
||||
|
||||
- [ ] `derive(Validate)` 已添加
|
||||
- [ ] 字符串字段有 `length(min, max)` 限制
|
||||
- [ ] 枚举字段有 `custom` 校验函数
|
||||
- [ ] 集合字段有 `length(min = 1)` 非空检查
|
||||
- [ ] 数值字段有 `range(min, max)` 范围检查
|
||||
- [ ] URL 字段有协议和 SSRF 校验
|
||||
- [ ] handler 层调用了 `.validate()`
|
||||
- [ ] dto.rs 文件底部有对应的单元测试
|
||||
|
||||
## 5. 代码逻辑
|
||||
|
||||
⚡ **不变量**: 模块间只通过 EventBus 和 trait 通信,无直接依赖
|
||||
@@ -233,6 +259,7 @@ impl ErpModule for AuthModule {
|
||||
|
||||
| 日期 | 变更 |
|
||||
|------|------|
|
||||
| 2026-05-19 | 新增 §4 DTO 输入校验规范:44 处校验缺失修复总结 + 强制铁律 + 新增 DTO 检查清单 |
|
||||
| 2026-05-01 | 审计数据更新:模块状态表刷新(772 测试 / 328 路由 / 50 权限码)、审计发现清单 |
|
||||
| 2026-04-26 | 从 CLAUDE.md 迁移:目录结构、模块开发规范(§5)、安全注意事项(§7) |
|
||||
| 2026-04-25 | 全面更新:6 模块已实现状态表、预约 CAS 决策、PII 加密不变量、健康模块集成 |
|
||||
|
||||
Reference in New Issue
Block a user