6.5 KiB
AI 合同平台 V2 最终生产就绪审计
日期:2026-08-11
结论
当前候选版本中可由代码和自动化完成的功能、回归、安全扫描与共享预发布技术验证已通过,最终差异审查未留下已知代码级 P0/P1。本轮修复了 Contract 调用 AI Platform 时固定使用 SDK 30 秒超时的问题,并在真实动态 Provider 上完成了合同审查闭环;同时关闭了生产 Web API 前缀丢失问题。
正式生产仍为 No-Go。未启动 production compose,未修改 DNS,未切换生产流量。阻断原因是具名法务、生产基础设施、双节点现场演练和 support access 外部安全集成尚无真实验收证据;这些证据不得由 AI、mock、模板或共享预发布结果代替。
本轮技术闭环
- Contract API 新增
CONTRACT_API_AI_PLATFORM_TIMEOUT_SECONDS,范围为1..600秒,默认 30 秒;review worker、手工 run-once 和 Legal QA 代理均显式传递到 SDK。 - 共享预发布 Provider 请求预算为 180 秒,Contract 调用预算为 240 秒,避免同期限竞态。
- production preflight 强制 Contract timeout 至少比 Provider timeout 多 5 秒,并拒绝缺失、非数字、非有限值、越界和倒置预算。
- Nginx 为同步
/contract/api/v1/legal/qa设置独立 660 秒上限,覆盖 Contract 允许的 600 秒最大值;其他 Contract 路由仍保持 120 秒。 - Compose 的 migrate、Contract API 和 review worker 三个服务均映射 timeout;共享预发布部署脚本显式写入 Contract 240 秒和 Provider 180 秒,避免重部署恢复默认 30 秒。
- 生产 Web 使用
/contract、/ai边缘前缀时,Contract 与 AI 请求均保留 base path。统一出口还会规范化 33 个旧 AI 代理路由生成的无前缀 URL;角色判断和 Contract 公共健康检查使用移除边缘前缀后的逻辑 API 路径,避免修复路由时引入权限回归。 - release gate 的实时 benchmark 默认调整为每场景 15 次、并发 3、预热 2;包含探测请求后仍低于 enforce 模式最严格的每用户 20 次/分钟读取门槛,不关闭或绕过反滥用。独立性能压测仍保留显式大负载能力。
- 身份执行器、support access API 和破坏性身份写接口继续关闭。共享预发布 OpenAPI 中包含
execute、support-access或support_access的路由数为 0。
自动化验证
| 范围 | 结果 |
|---|---|
| Contract API 全量 | 286 passed, 3 skipped;跳过项仅为需显式 PostgreSQL URL 的并发专项 |
| AI Platform API、AI worker、Python SDK | 162 passed |
| Infra production release tools | 63 passed |
| 本轮 timeout 定向回归 | 28 passed |
| Contract Web 单元测试 | 17 passed,其中既有入口/会话/工作空间 12 项,生产 API base path、幂等规范化和逻辑权限路径 5 项 |
| Contract Web typecheck | 通过 |
| Next.js production build | 通过,生成 101 个页面/路由 |
| npm audit | 0 vulnerabilities |
| pip-audit | 0 known vulnerabilities |
| Bandit | 0 findings,0 errors |
| tracked source secret scan | 45 个已复核假阳性,0 个新发现 |
git diff --check |
通过 |
另有 3 个真实 PostgreSQL 并发专项已在本轮之前使用 192.168.3.90:5432/yuqei_contract 的随机隔离 schema 完成 3/3,并已清理测试 schema。
共享预发布证据
- 宿主机:
192.168.3.90 - AI Provider:
ccswitch / gpt-5.6-sol - Provider 调用:enabled
- Provider fallback:false
- Provider timeout:180 秒
- Contract timeout:240 秒;API 与 review worker 容器均实际读取为
240.0 - Contract API 镜像:
sha256:5072971b7bdda62036791cc5836faece78b5a8615a98fd98ad5e9b4999e3f51a - Contract review worker 镜像:
sha256:35a76a9f6dd5dd44f6545d029cd0e621ea909251c7aabccd6e4cd860a37f11be - Contract Web 镜像:
sha256:ed6b931d7a104e042da21c5516728cd193190b3cee11e74e41d98a9f517fba4f;已定向部署生产 base-path 修复,容器 healthy,/health与/login均为 HTTP 200,容器内回归5/5 - 真实审查:合同
contract-096914efc203、任务review-e8100aa210d4,约 93 秒后状态为succeeded,并持久化 AI audit run id - post-deploy release gate:
pass;Contract 与 AI schema-check 均为ok,实时 benchmark 以 15 次/场景、并发 3、预热 2 完成 7/7,错误率均为 0,p95 均低于门槛 - 8 个共享预发布服务全部 healthy
- 根盘:92% 使用,约 17 GiB 可用;未自动清理镜像、卷或业务数据
远端 Contract 变更前备份位于 /opt/apps/ai-contract-platform-v2-smoke/.runtime/pre-contract-timeout-20260811-1650/;Web base-path 定向部署前备份位于 /opt/apps/ai-contract-platform-v2-smoke/backups/pre-web-base-path-effbefc.tgz。最新 release gate 证据位于 project-docs/qa-artifacts/v2-release-quality-gate/2026-08-11T17-34-10/;此前 timeout 专项证据位于忽略目录 .runtime/postdeploy-release-gate-timeout-fix-20260811/。证据不包含服务密钥。
正式生产阻断项
- 具名法务尚未对 10 张知识卡和 18 条真实 Provider 结果签署精确技术包,因此没有真实
acceptance_run_id、receipt v2 或 promotion bundle。 - 四份公开政策及合同生成、条款推荐黄金资产仍缺具名法务正式版本、生效时间和审批记录。
- support access 尚未接入真实 IdP/MFA、会话绑定、跨节点撤销、真实资源读取、告警消费和具名隐私/法务批准;当前必须保持 deny-only。
- 尚无正式
/etc/yuqei/production.env、production secrets、不可变镜像清单和非模板 production preflight 证据。 - 正式 TLS 证书、DNS、异地备份挂载、恢复演练和阿里云前端切流证据不存在。
- 尚未部署至少两个独立生产节点,无法执行真实 canary、撤销 SLA、kill switch 和完整回滚演练。
- 生产容量与回滚空间仍需运维确认;共享服务器根盘处于 92% 高水位。
固定上线顺序
- 具名法务签署精确技术包和共享 evidence。
- 在共享预发布执行
finalize,生成并验证真实acceptance_run_id、receipt v2 和 promotion bundle。 - 建立 production env/secrets、TLS、异地备份和不可变镜像,运行非模板 preflight、备份恢复及容量门禁。
- 部署至少两个生产节点,不切流。
- 执行只读 canary、跨节点撤销 SLA、kill switch 和回滚演练。
- 由法务、安全、隐私和运维具名批准后,另行授权 DNS/流量切换。
上述阻断项全部关闭前,禁止启动 production compose,也禁止把共享预发布重命名或宣称为生产。