feat: harden RC prompt assets and tenant authentication
Security Quality Gate / npm audit, Bandit, pip-audit, detect-secrets (pull_request) Failing after 12m22s

This commit is contained in:
2026-07-13 12:01:54 +08:00
parent e1cf8a23d0
commit e206153ad4
71 changed files with 4427 additions and 155 deletions
@@ -0,0 +1,116 @@
# AI 合同平台 V2 运营上线评估
日期:2026-07-13
## 结论
- **内部 UAT / 受控单租户试点:有条件可进入。** 当前版本需先部署到 `192.168.3.90` smoke,并通过本文列出的安全、身份和真实 AI 抽样门槛。
- **公开多企业 SaaS 生产:当前 No-Go。** 阻断项不是模板或 Prompt 数量,而是真实邮件交付、真实 AI Provider 评估、内容法务签批和本轮身份安全改动尚未完成远端验证。
- 不建议继续横向增加模板数量。下一阶段应优先完成内容治理、真实模型质量评估和生产运行保障。
## 当前能力
| 领域 | 当前状态 | 运营判断 |
| --- | --- | --- |
| 合同模板 | V1 / 打包资产 / smoke 运行时均为 30,30 个模板可全量生成 | 数量和工程完整性达标,外部商用前仍需法务签批 |
| 标准条款 / 审查规则 | 8 / 8,具备草稿、校验、发布、下线、回滚和推荐闭环 | 可试点,需要明确业务负责人和复审周期 |
| Prompt | V1 / 打包资产 / smoke 已发布资产均为 46 | 资产齐套;本轮已修正法律问答和行业审查 Prompt 选择,但尚未在真实模型上验收 |
| 法律全文库 | smoke 运行时 789,867 条,已有版本表和法规影响扫描 | 规模达标;重点转为时效性、来源、失效标记和抽样准确性 |
| 合同主链路 | 起草、审批、审查、条款修复、版本、归档、Word/PDF 报告、文件仓库已闭环 | 可进入 UAT |
| 租户与账号 | 注册公司、邀请、登录、密码重置和管理页已具备 | 邮件仍是开发交付模式;SSO 仅有配置存储,不是完整登录流程 |
| AI 运行 | smoke Provider 调用关闭并启用 fallback | 只能验证工程链路,不能作为生产 AI 质量证据 |
资产精确核对证据:
- `project-docs/qa-artifacts/v2-asset-count/v2-asset-count-2026-07-13T02-53-18.128434+00-00.json`
- 模板:`30 / 30 / 30`
- 标准条款:`8 / 8 / 8`
- 审查规则:`8 / 8 / 8`
- Prompt:`46 / 46 / 46`
## 本轮安全硬化
本轮本地代码已完成:
1. Web 会话从可篡改的 Base64 JSON 改为带有效期的 HMAC 签名 cookie,并启用 `HttpOnly`、`SameSite=Lax` 和生产 `Secure`。
2. Contract API 不再在生产环境无条件信任 `X-Tenant-Id` / `X-User-Id`,由受控 Web 代理密钥建立信任边界。
3. 身份管理接口锁定当前租户,普通租户不能通过 `tenant_id` 查询参数访问其他企业。
4. AI Platform 增加服务密钥;33 个 Web AI 代理路由统一从签名会话注入租户和用户身份。
5. Contract API、审查 worker 和 Python SDK 支持向 AI Platform 传递服务密钥。
6. 生产响应不再返回邀请原始 token 和邮箱开发验证码。
这些变更在本地测试和生产构建通过,但在部署到 smoke 前仍属于“本地已修、远端待验”。
## 生产阻断项
### P0-1 远端发布候选验证
- 部署当前代码到 `192.168.3.90` smoke。
- 验证无代理密钥直连 Contract API / AI Platform 数据接口返回 `401`。
- 验证 Web 登录后合同、模板、文件、AI Trace、知识库均正常。
- 复跑两套 schema-check、资产精确核对、Docker smoke、核心接口压测和安全扫描。
### P0-2 真实 AI Provider 与质量验收
- 配置可用 Provider、base URL 和 secret ref。
- `AI_PLATFORM_PROVIDER_CALL_MODE=enabled`。
- `AI_PLATFORM_PROVIDER_FALLBACK_ENABLED=false`。
- 用真实模型复跑 generation / review / legal QA / clause recommendation 黄金样本。
- 每个高风险模板至少由法务抽样一次,检查风险命中、引用准确、建议可执行和幻觉。
### P0-3 邮件与账号安全
- 接入真实邮件服务,发送验证码、密码重置和邀请链接。
- 增加验证码错误次数、发送频率、IP / 账号限流和通用防枚举响应。
- 当前 runtime config 在 production 会明确报错 `identity_email_delivery`,不能通过改一个布尔配置假装完成。
- SSO 未实现实际 SAML/OIDC 发起、回调和账号绑定。生产首发可禁用 SSO,但不能对外宣称已支持。
### P0-4 内容法务签批
30 个模板不需要继续扩容,需补齐运营治理信息:
- 内容负责人和法务审批人。
- 审批日期、生效版本、适用法域、最近复审日期。
- 关键法律依据及其有效性。
- 高风险模板至少覆盖劳动、股权转让、投资、对赌、股东会决议。
- 条款、规则和 Prompt 同样需要 owner、发布审批和回滚责任人。
### P0-5 生产运行保障
- 正式域名 HTTPS、反向代理、CORS 和后端端口暴露策略确认。
- 生产 secrets 与 smoke secrets 完全隔离。
- PostgreSQL、文件仓库备份恢复和应用回滚再演练一次。
- API 错误率、p95/p99、数据库连接、worker 心跳、AI 失败率和备份结果接入告警。
- 明确隐私政策、数据保留期、客户数据删除流程和人工支持责任人。
## 模板与 Prompt 优化策略
### 模板
工程质量门已覆盖变量完整性、正文生成和格式,不再以“再加模板”作为上线进度。上线前重点是:
- 删除业务不理解、重复或无法可靠填写的变量。
- 对必填字段提供明确业务名称和填写约束。
- 用真实业务样本检查生成正文,而不是只检查能否生成。
- 对高风险模板建立季度或法规变更触发复审。
### Prompt
46 个 Prompt 已齐套,当前不建议继续堆数量。下一步应建立真实模型评估矩阵:
- 任务:合同生成、审查、法律问答、条款推荐。
- 指标:引用准确率、风险召回率、误报率、建议可执行率、结构化输出成功率、成本和延迟。
- 分层:合同类型、风险等级、文本长度、是否有知识库依据。
- 每次 Prompt 发布必须记录评估结果、审批人和回滚版本。
## 上线决策门
满足以下条件后,才建议创建新的不可变 RC tag 并进入生产发布审批:
1. 本轮身份 / AI 服务鉴权代码已提交、CI 全绿并完成远端 smoke。
2. 真实 AI Provider 黄金样本通过,fallback 关闭。
3. 真实邮件发送、限流和防枚举回归通过。
4. 30 个模板和关键 Prompt 有具名法务签批记录。
5. 安全扫描、接口压测、备份恢复、回滚和监控告警均有最新证据。
在这些条件完成前,系统可以用于内部验收和受控试点,但不应开放公开多企业注册和正式付费承诺。