Files
ai-contract-platform/project-docs/V2-production-infrastructure-provider-acceptance-2026-07-16.md
T
yuqei 7bc74f06f2
Build and Test Quality Gate / Contract Web typecheck and build (pull_request) Successful in 6m47s
Build and Test Quality Gate / Python tests and Contract API migration (pull_request) Failing after 42m10s
Security Quality Gate / npm audit, Bandit, pip-audit, detect-secrets (pull_request) Failing after 16m59s
release: freeze V2 production candidate
2026-07-20 18:39:27 +08:00

4.5 KiB
Raw Blame History

AI 合同平台 V2 生产基础设施与真实 Provider 验收

日期:2026-07-16

本片边界

本片只准备生产基础设施并建立真实模型验收门,不部署生产数据、不启动 production compose、不修改 DNS、不切换阿里云前端流量。

已实现

  1. 新增 backend-only production compose override:应用镜像必须使用 digest,生产卷名稳定,Contract Web 默认不在 3.90 启动。
  2. PostgreSQL、Redis、MinIO、Contract API、AI Platform API 的宿主端口在生产只绑定 127.0.0.1。
  3. 新增 HTTPS Nginx edge,统一提供 /contract/ 和 /ai/,并覆盖客户端伪造的 X-Forwarded-For。
  4. Provider key 使用 Docker secret 文件;secret ref 新增受限 file://,只允许读取配置的 /run/secrets 根目录。
  5. env: secret ref 只允许 AI Provider/OCR 专用变量前缀,不能再读取数据库连接等任意进程环境变量。
  6. 新增只读 production preflight,阻断 smoke/test 库、demo seed、fallback、公开内部端口、默认口令、可变镜像和缺失备份/TLS/Provider secret。
  7. 新增 PostgreSQL、合同文件、MinIO 备份脚本和 SHA-256 manifest。
  8. 新增只读完整性校验和一次性 yuqei_restore_check_* 数据库恢复演练。
  9. 新增最小生产健康探针和 systemd timer,覆盖 schema、Provider、worker、备份新鲜度和磁盘水位。
  10. 新增真实 Provider 验收脚本,覆盖 V1 Phase13 的 10 条法律问答和 8 条合同审查样本。
  11. Web AI 管理代理增加服务端角色门禁:模型、Prompt、runtime 仅 admin;知识库、质量和 Trace 仅 admin/legal,普通已登录用户直接调用返回 403。

Provider 验收判定

脚本 yuqei-infra/scripts/run-ai-provider-acceptance.py 分开输出:

  • failed:Provider 调用失败、出现 fallback、输出为空、缺引用、未命中任何预期法律来源或审查严重度低于样本边界。
  • needs_legal_review:技术调用全部成功,但样本尚未由具名法务复核并标记 production_ready=true。
  • passed:技术门通过,且全部运行样本均已有具名法务签批。

当前 Phase13 清单仍是 LEGAL_REVIEW、production_ready=false,因此即使真实模型技术调用全绿,也只能进入 needs_legal_review,不能自动解除生产阻断。

模板生成和条款推荐当前是模板/发布快照/规则驱动的确定性链路,不调用模型;本轮真实 Provider 验收只覆盖运行时确实调用模型的法律问答和审查摘要。合同审查的结构化风险项仍由规则层生成,Provider 当前只参与摘要。上线文案不能把确定性能力描述为模型生成;如未来改为模型结构化风险抽取,需要新增独立 JSON schema、幻觉和风险召回验收。

运行命令:

python3 yuqei-infra/scripts/run-ai-provider-acceptance.py \
  --base-url https://<backend-domain>/ai \
  --service-key-file /etc/yuqei/secrets/ai-platform-service-key \
  --tenant-id default

报告写入 project-docs/qa-artifacts/v2-ai-provider-acceptance/<timestamp>,不记录 Provider key。

尚未完成

  1. 尚未取得真实 Provider 的 base URL、模型名、价格和 API key,因此不能执行真实模型验收。
  2. 尚未提供正式后端域名和 TLS 证书,因此不能验证 HTTPS edge。
  3. 尚未建立镜像仓库并发布三个 digest 镜像。
  4. 尚未在 3.90 挂载异地备份目录,不能执行真实备份/恢复演练。
  5. 模板、Prompt 和 18 条 Provider 样本仍需具名法务签批。

在上述外部配置具备前,production preflight 应继续失败,系统保持 smoke/UAT,不切生产流量。

本轮验证

  • python -m pytest yuqei-infra/tests -q:6 项通过。
  • AI Platform API 全量测试:通过。
  • Contract Web typecheck 与 production build:通过,83 个路由生成成功。
  • production example preflight template mode:通过。
  • Bandit:0 findings;8 个固定 suppression 已由精确 allowlist 测试锁定。
  • git diff --check:通过。
  • 3.90 Docker Compose v2.27:base + production override 普通与 ops profile 均通过 config --quiet;未启动任何 production 容器。
  • 远端渲染结果:Contract Web 未激活;PostgreSQL、Redis、MinIO、Contract API、AI Platform API 均只绑定 127.0.0.1;edge 仅暴露 80/443。
  • 当前 smoke provider_runtime=warning:调用关闭、fallback 开启、默认 Provider 无 base URL/secret ref,符合“尚未真实验收”的预期。