eab91174db
Co-Authored-By: Claude <noreply@anthropic.com>
101 lines
7.1 KiB
Markdown
101 lines
7.1 KiB
Markdown
# 5-compliance-PCM · 安全与合规验收清单(T-9.3)
|
||
|
||
> 项目缩写:**PCM** 上游:`0-req-PCM.md`(NFR/约束)、`1-prd-PCM.md`(§8 合规)、`4-arch-PCM.md`
|
||
> 用途:上线前安全与合规基线核查。逐项标注现状、证据(代码位置)与上线前必办事项。
|
||
> 状态图例:✅ 已实现 ⚠️ 部分(V1 占位/待补强) ❌ 待办 🔴 外部阻塞(待运营方/法务/医生)
|
||
|
||
> ⚠️ 说明:本清单为**工程自检基线**,不替代法务/DPO 的正式合规评审与(如适用)监管注册评估。
|
||
|
||
---
|
||
|
||
## 1. 监管定位声明(NFR-2 / C-1)
|
||
|
||
- 产品定位:**健康管理 / 临床决策支持**,**非诊断、非急救替代、非处方**。
|
||
- 工程体现:
|
||
- AI 决策建议对中/高风险 `requiresHumanConfirmation=true`,系统不自动执行临床决策(人工兜底)。
|
||
- 知识问答强制 RAG + 溯源,无依据明确告知并建议就医,不超纲生成。
|
||
- 红旗急症仅给"立即就医"提示并通知医护,不下诊断结论。
|
||
- 孕妇端/家属端知情同意文案明示"提供健康陪伴与信息参考,不替代医生的诊断与治疗"。
|
||
- 🔴 **上线前必办**:监管定位与合规边界的**最终确认**(C-1,待运营方/法务);若功能演进触及 SaMD 边界须重新评估 NMPA 注册。
|
||
|
||
---
|
||
|
||
## 2. 合规核对清单
|
||
|
||
### NFR-1 安全合规(PIPL / 数据安全法)—— 拆分逐项
|
||
|
||
| 项 | 要求 | 现状 | 证据 / 说明 |
|
||
|----|------|------|-------------|
|
||
| 1.1 知情同意 | 使用前签署,留存可审计 | ✅ | `auth.service.ts`:孕妇/家属未签 `consent` 拒绝注册;`consentSigned` 留存;前端登录页含同意勾选 + 隐私政策页 |
|
||
| 1.2 身份认证 | 会话安全、令牌校验 | ✅ | 全局 `JwtAuthGuard` 校验签名令牌 + 过期;`token.ts` HMAC + 过期;8h TTL |
|
||
| 1.3 分级权限 | 按角色访问控制 | ⚠️ | 能力级:`CapabilitiesGuard` + `rbac.ts` 矩阵,越权 403。**记录级**(仅本人/负责个案/绑定孕妇)待补(无用户↔孕妇关联表) |
|
||
| 1.4 口令保护 | 不明文存储 | ✅ | `password.ts`:scrypt + 16B 随机盐 + `timingSafeEqual`;最短 8 位。生产建议 argon2/bcrypt |
|
||
| 1.5 传输加密 | TLS | ❌ | 应用层未含 TLS;须在入口(nginx/ingress/网关)终止 TLS。**上线前必办** |
|
||
| 1.6 存储加密 | 敏感字段加密、最小化 | ✅ | PostgreSQL 持久化(auth/audit/patient/observation,`DATABASE_URL` 门控);**敏感 PII/PHI 字段级加密已落地**——patient(姓名/孕产史/日期/风险因素)、observation(测量值) 经 AES-256-GCM 入 `enc` 列(`field-sealer.ts`/`field-crypto.ts`),实跑验证库内为密文、不含明文。非敏感元数据留明文列以供检索。生产经 KMS 注入 `FIELD_ENCRYPTION_KEY` 并轮换 |
|
||
| 1.7 数据最小化 | 仅采所需 | ⚠️ | 建档/录入 DTO 仅收必要字段;代码示例/日志未回显敏感值。缺正式数据分级清单 |
|
||
| 1.8 留存与删除 | 留存策略 + 删除权 | ❌ | 未实现数据留存期与删除/导出(PIPL 主体权利)。**上线前必办** |
|
||
| 1.9 审计日志 | 关键操作留痕 | ✅ | `audit.service.ts` 记录注册/登录/越权(access:deny);`audit.controller.ts` 仅 `audit:read`(admin)可查。**持久化可用**:PG `audit_log`(`DATABASE_URL` 门控),已实跑入库+重启存活验证。生产再加防篡改/WORM 与归档 |
|
||
|
||
### NFR-2 监管定位 / C-1
|
||
| 项 | 现状 | 证据 |
|
||
|----|------|------|
|
||
| 非诊断定位的工程约束 | ✅ | 人工兜底 + RAG 不超纲 + 红旗仅就医提示(见 §1) |
|
||
| 监管定位最终确认 | 🔴 外部 | C-1,待运营方/法务确认 |
|
||
|
||
### NFR-3 可解释性
|
||
| 项 | 现状 | 证据 |
|
||
|----|------|------|
|
||
| 风险/预警可追溯 | ✅ | `Alert` 含 `ruleIds`+`messages`+`observationId`;`scenarios.spec.ts` S1 断言可追溯 |
|
||
| AI 建议可解释 | ✅ | `Recommendation.rationale` 溯源到预警说明 |
|
||
| 问答溯源 | ✅ | `QaAnswer.citations`(标题/来源/权威级别) |
|
||
|
||
### NFR-4 临床安全 / C-4
|
||
| 项 | 现状 | 证据 |
|
||
|----|------|------|
|
||
| 红旗人工兜底 | ✅ | `redflag.service.ts` 即时就医 + 通知管理师/医生 + 升级高风险;S3 测试 |
|
||
| 高风险 AI 必须人工确认 | ✅ | `recommendation.ts` 中/高风险 `requiresHumanConfirmation=true`;工作台"确认采纳"门控 |
|
||
| 误报/漏报责任边界与处置 SLA | ❌ | 责任边界与 SLA 为运营/医疗制度,未在系统固化。**上线前必办(制度+配置)** |
|
||
|
||
### NFR-9 可观测/审计
|
||
| 项 | 现状 | 证据 |
|
||
|----|------|------|
|
||
| 全链路审计 | ⚠️ | 已覆盖鉴权/越权;处置/配置类操作的审计点待逐步补全;存储须持久化 |
|
||
|
||
### 约束核查
|
||
| 约束 | 现状 | 证据 / 说明 |
|
||
|------|------|-------------|
|
||
| C-1 监管定位(🔴最高) | 🔴 外部 | 待最终确认 |
|
||
| C-2 设备指标清单(🔴最高) | 🔴 外部 | 待运营方;V1 以手动录入兜底,不阻塞上线核心闭环 |
|
||
| C-3 数据合规隐私(🔴最高) | ⚠️ | 同意/审计/口令已实现;传输/存储加密、留存删除待办(见 1.5/1.6/1.8) |
|
||
| C-4 红旗+人工兜底(🟠高) | ✅ | 见 NFR-4 |
|
||
| C-5 低质量数据不驱动高风险(🟠高) | ✅ | `quality-control.ts` 拒绝不可信值,rejected 不进入分析;S1 测试断言 |
|
||
| C-6 RAG 溯源不超纲 + 高风险人工确认(🟡中) | ✅ | 见 NFR-3 / NFR-4 |
|
||
|
||
---
|
||
|
||
## 3. 上线前必办(阻塞项)
|
||
|
||
1. ❌ **传输加密 TLS**(1.5):入口层 TLS 终止 + HSTS。
|
||
2. ✅ **存储加密与持久化**(1.6 / T-1.2):全部领域仓储已迁移 PostgreSQL(auth/audit/patient/observation/analysis/caseflow/reminder/knowledge)+ 敏感字段 AES-256-GCM 加密入库,本地 PG 全闭环 + 重启存活验证。**剩**:生产 KMS 密钥管理与轮换。
|
||
3. ❌ **数据留存与删除/导出**(1.8):留存期策略 + 主体删除/导出(PIPL 权利)。
|
||
4. ⚠️ **审计持久化**(1.9):PG `audit_log` 持久化已落地;**剩** 生产防篡改/WORM 存储与归档策略。
|
||
5. ⚠️ **记录级授权**(1.3):用户↔孕妇关联,强制"仅本人/负责个案/绑定孕妇"。
|
||
6. ❌ **误报/漏报责任边界与处置 SLA**(NFR-4):制度化并在系统配置/留痕。
|
||
7. 🔴 **监管定位最终确认**(C-1)+ 医学阈值/红旗规则由医生确认(外部)。
|
||
8. 🔁 **密钥与配置**:`AUTH_SECRET` 强随机 + 轮换;密钥管理(KMS/Secrets);勿用默认值。
|
||
|
||
---
|
||
|
||
## 4. 验收结论
|
||
|
||
- V1 工程层面已落地:知情同意、认证、能力级 RBAC、口令哈希、可解释/可追溯、人工兜底、RAG 不超纲、数据质控、审计(内存)。
|
||
- **不满足"无条件上线"**:传输/存储加密、数据留存删除、审计持久化、记录级授权、监管定位确认为阻塞项(§3)。
|
||
- 建议:完成 §3 阻塞项(多数依赖 PostgreSQL 持久化与部署层 TLS)后,由法务/DPO 正式评审再灰度上线(T-9.4)。
|
||
|
||
---
|
||
|
||
## 变更记录
|
||
| 日期 | 变更 | 说明 |
|
||
|------|------|------|
|
||
| T-9.3 | 创建 | 基于代码现状的安全与合规验收基线;映射 NFR-1/2/3/4/9 与 C-1~C-6 |
|