Files
hms/plans/audit-summary-2026-04-26.md
iven 83fe89cbcd
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
fix: 全系统审计问题修复 — 安全/数据完整性/功能缺陷/UX (Phase 1-5)
Phase 1 安全热修复:
- P0-1: /uploads 文件服务添加 JWT 认证中间件(支持 header + query param)
- P0-2: analytics/batch 路由从 public 移到 protected_routes
- P0-3: plugin engine SQL 注入修复(format! → 参数化查询)
- P0-new: stats_service compute_avg_field 字段白名单 + FLOAT8 类型转换

Phase 2 数据完整性:
- P0-4: 组织删除级联检查(添加部门存在性校验)
- P0-5: 部门删除级联检查(添加岗位 + 用户存在性校验)
- P0-8: workflow on_tenant_deleted 实现 5 实体批量删除
- P0-7: 并行网关 race condition 修复(consumed → completed 原子转换)

Phase 3 P1 后端 Bug:
- P1-12: plugin host 表名消毒(使用 sanitize_identifier)
- P1-10: workflow deprecated 状态转换(published → deprecated)
- P1-11: workflow 更新验证条件(nodes/edges 任一变化即验证)
- P0-9: 小程序 .gitignore 添加 .env/.env.*/日志
- P1-19: 小程序加密密钥替换为 64 字符强密钥

Phase 4 消息模块:
- P1-5: 通知偏好 GET 路由 + handler
- P1-4: 消息模板 update/delete CRUD + version
- P2-8: mark_all_read SQL 添加 version + 1
- P2-7: markAsRead 改为乐观更新 + 失败回滚

Phase 5 前端修复:
- P2-9: 通知面板点击导航到 /messages
- P2-1: 随访任务患者名批量 ID 解析(替代 UUID 显示)
- P2-5: AppointmentList 分离 patient_id/doctor_id 分别调用 API
- P2-17: PluginMarket installed 字段修正(name → id)
- P3-3: 路由标题 fallback 改为模式匹配(支持 :id 动态路径)
- P2-15: workflow updateDefinition 添加 version 字段
- P3-9: Kanban 版本使用记录实际 version
- P2-21: secure-storage 生产环境无密钥时阻止存储
- P3-11: destroyOnHidden → destroyOnClose
- P3-13: PendingTasks 深色模式 Tag 颜色适配

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-26 19:16:23 +08:00

53 lines
2.0 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.
# HMS 审计摘要 — 一页纸
> 2026-04-26 | 全系统审计Web + 小程序)
## 总览
| | P0 | P1 | P2 | P3 | P4 | 合计 |
|---|---|---|---|---|---|---|
| 安全 | 4 | 2 | 2 | | | 8 |
| 数据完整性 | 5 | 2 | 1 | | | 8 |
| 功能缺失/缺陷 | | 12 | 8 | 5 | | 25 |
| UX/代码质量 | | | 9 | 10 | 6 | 25 |
| 配置/运维 | | 2 | 2 | | | 4 |
| **合计** | **9** | **18** | **22** | **15** | **6** | **72** |
## 必须立即修复Top 5
1. **上传文件无认证** — 医疗文档公开可访问,合规风险极高
2. **SQL 注入**plugin engine `load_plugin_config`)— 改用参数化查询
3. **小程序 .env 未加入 .gitignore** — 含弱加密密钥,可能意外泄露
4. **组织/部门/岗位级联删除缺失** — 软删除后数据完整性破坏
5. **统计报表 500** — PostgreSQL NUMERIC vs Rust f64 类型不匹配
## 模块健康度
| 模块 | 评级 | 核心问题 |
|------|------|---------|
| 用户/权限 | 🟢 | 基本可用email 验证偏松 |
| 组织架构 | 🔴 | 级联删除全部缺失 |
| 工作流 | 🔴 | 大量功能未实现ServiceTask/claim/deprecate/timeout |
| 消息 | 🟡 | 无实时推送,模板/偏好功能半成品 |
| 患者管理 | 🟢 | 基本可用,细节问题 |
| 预约排班 | 🟢 | 正常 |
| 随访咨询 | 🟡 | 患者 UUID 显示 |
| 积分文章 | 🟢 | 正常 |
| 统计报表 | 🔴 | 500 错误 |
| 插件系统 | 🟡 | SQL 注入需修,其他防护好 |
| 系统设置 | 🟢 | 基本可用 |
| **小程序** | 🟡 | .env 安全风险,加密密钥弱 |
## 下一步
1. **修复 9 个 P0**(预计 3-5 天)— 安全和数据完整性
2. **修复高优 P1**(预计 1 周)— 统计报表/实时推送/加密密钥
3. **补全工作流和消息模块**(预计 2-3 周)— 功能闭环
4. **小程序安全加固**(预计 3 天)— .gitignore/密钥/urlCheck
5. **提升前端测试覆盖率**(持续)
## 报告文件
- 详细报告: `plans/audit-report-2026-04-26.md`
- 本摘要: `plans/audit-summary-2026-04-26.md`