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
4.5 KiB
4.5 KiB
AI 合同平台 V2 生产基础设施与真实 Provider 验收
日期:2026-07-16
本片边界
本片只准备生产基础设施并建立真实模型验收门,不部署生产数据、不启动 production compose、不修改 DNS、不切换阿里云前端流量。
已实现
- 新增 backend-only production compose override:应用镜像必须使用 digest,生产卷名稳定,Contract Web 默认不在 3.90 启动。
- PostgreSQL、Redis、MinIO、Contract API、AI Platform API 的宿主端口在生产只绑定
127.0.0.1。 - 新增 HTTPS Nginx edge,统一提供
/contract/和/ai/,并覆盖客户端伪造的X-Forwarded-For。 - Provider key 使用 Docker secret 文件;secret ref 新增受限
file://,只允许读取配置的/run/secrets根目录。 env:secret ref 只允许 AI Provider/OCR 专用变量前缀,不能再读取数据库连接等任意进程环境变量。- 新增只读 production preflight,阻断 smoke/test 库、demo seed、fallback、公开内部端口、默认口令、可变镜像和缺失备份/TLS/Provider secret。
- 新增 PostgreSQL、合同文件、MinIO 备份脚本和 SHA-256 manifest。
- 新增只读完整性校验和一次性
yuqei_restore_check_*数据库恢复演练。 - 新增最小生产健康探针和 systemd timer,覆盖 schema、Provider、worker、备份新鲜度和磁盘水位。
- 新增真实 Provider 验收脚本,覆盖 V1 Phase13 的 10 条法律问答和 8 条合同审查样本。
- 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。
尚未完成
- 尚未取得真实 Provider 的 base URL、模型名、价格和 API key,因此不能执行真实模型验收。
- 尚未提供正式后端域名和 TLS 证书,因此不能验证 HTTPS edge。
- 尚未建立镜像仓库并发布三个 digest 镜像。
- 尚未在 3.90 挂载异地备份目录,不能执行真实备份/恢复演练。
- 模板、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 普通与
opsprofile 均通过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,符合“尚未真实验收”的预期。