Files
ai-contract-platform/project-docs/V2-final-production-readiness-audit-2026-08-11.md
yuqei c24f7a4f1e
Build and Test Quality Gate / Contract Web typecheck and build (pull_request) Successful in 2m58s
Build and Test Quality Gate / Python tests and Contract API migration (pull_request) Failing after 15m25s
Security Quality Gate / npm audit, Bandit, pip-audit, detect-secrets (pull_request) Successful in 5m14s
fix: align release benchmark with abuse limits
2026-08-11 17:36:33 +08:00

6.5 KiB
Raw Permalink Blame History

AI 合同平台 V2 最终生产就绪审计

日期:2026-08-11

结论

当前候选版本中可由代码和自动化完成的功能、回归、安全扫描与共享预发布技术验证已通过,最终差异审查未留下已知代码级 P0/P1。本轮修复了 Contract 调用 AI Platform 时固定使用 SDK 30 秒超时的问题,并在真实动态 Provider 上完成了合同审查闭环;同时关闭了生产 Web API 前缀丢失问题。

正式生产仍为 No-Go。未启动 production compose,未修改 DNS,未切换生产流量。阻断原因是具名法务、生产基础设施、双节点现场演练和 support access 外部安全集成尚无真实验收证据;这些证据不得由 AI、mock、模板或共享预发布结果代替。

本轮技术闭环

  1. Contract API 新增 CONTRACT_API_AI_PLATFORM_TIMEOUT_SECONDS,范围为 1..600 秒,默认 30 秒;review worker、手工 run-once 和 Legal QA 代理均显式传递到 SDK。
  2. 共享预发布 Provider 请求预算为 180 秒,Contract 调用预算为 240 秒,避免同期限竞态。
  3. production preflight 强制 Contract timeout 至少比 Provider timeout 多 5 秒,并拒绝缺失、非数字、非有限值、越界和倒置预算。
  4. Nginx 为同步 /contract/api/v1/legal/qa 设置独立 660 秒上限,覆盖 Contract 允许的 600 秒最大值;其他 Contract 路由仍保持 120 秒。
  5. Compose 的 migrate、Contract API 和 review worker 三个服务均映射 timeout;共享预发布部署脚本显式写入 Contract 240 秒和 Provider 180 秒,避免重部署恢复默认 30 秒。
  6. 生产 Web 使用 /contract、/ai 边缘前缀时,Contract 与 AI 请求均保留 base path。统一出口还会规范化 33 个旧 AI 代理路由生成的无前缀 URL;角色判断和 Contract 公共健康检查使用移除边缘前缀后的逻辑 API 路径,避免修复路由时引入权限回归。
  7. release gate 的实时 benchmark 默认调整为每场景 15 次、并发 3、预热 2;包含探测请求后仍低于 enforce 模式最严格的每用户 20 次/分钟读取门槛,不关闭或绕过反滥用。独立性能压测仍保留显式大负载能力。
  8. 身份执行器、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/。证据不包含服务密钥。

正式生产阻断项

  1. 具名法务尚未对 10 张知识卡和 18 条真实 Provider 结果签署精确技术包,因此没有真实 acceptance_run_id、receipt v2 或 promotion bundle。
  2. 四份公开政策及合同生成、条款推荐黄金资产仍缺具名法务正式版本、生效时间和审批记录。
  3. support access 尚未接入真实 IdP/MFA、会话绑定、跨节点撤销、真实资源读取、告警消费和具名隐私/法务批准;当前必须保持 deny-only。
  4. 尚无正式 /etc/yuqei/production.env、production secrets、不可变镜像清单和非模板 production preflight 证据。
  5. 正式 TLS 证书、DNS、异地备份挂载、恢复演练和阿里云前端切流证据不存在。
  6. 尚未部署至少两个独立生产节点,无法执行真实 canary、撤销 SLA、kill switch 和完整回滚演练。
  7. 生产容量与回滚空间仍需运维确认;共享服务器根盘处于 92% 高水位。

固定上线顺序

  1. 具名法务签署精确技术包和共享 evidence。
  2. 在共享预发布执行 finalize,生成并验证真实 acceptance_run_id、receipt v2 和 promotion bundle。
  3. 建立 production env/secrets、TLS、异地备份和不可变镜像,运行非模板 preflight、备份恢复及容量门禁。
  4. 部署至少两个生产节点,不切流。
  5. 执行只读 canary、跨节点撤销 SLA、kill switch 和回滚演练。
  6. 由法务、安全、隐私和运维具名批准后,另行授权 DNS/流量切换。

上述阻断项全部关闭前,禁止启动 production compose,也禁止把共享预发布重命名或宣称为生产。