Files
ai-contract-platform/project-docs/V2-delivery-closeout-checklist-2026-06-26.md
T
yuqei a3bb78e06b
Security Quality Gate / npm audit, Bandit, pip-audit, detect-secrets (pull_request) Failing after 16m35s
release: freeze V2 release candidate
2026-07-12 15:32:24 +08:00

143 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AI 合同平台 V2 收口交付清单
日期:2026-06-26
本机核验时间:2026-06-26 17:23:32 +08:00
远端 Docker smoke 核验时间:2026-06-27 00:31:46 +08:00
## 结论
V2 的核心产品开发和 Phase 7 核心安全功能已经可以按“功能完成”处理。当前未完成项主要是发布前运维验收和生产化治理,不是新的业务功能开发。
当前本机已完成复核:
| 项目 | 状态 | 结果 |
| --- | --- | --- |
| Python 单元测试 | 通过 | `107 passed in 32.08s` |
| 前端 typecheck | 通过 | `npm run web:typecheck` 通过 |
| 前端生产构建 | 通过 | `npm run web:build` 通过 |
| npm 依赖审计 | 通过 | `found 0 vulnerabilities` |
| Bandit 代码扫描 | 通过 | 高/中/低危均为 0,`skipped_tests=0` |
| Python 依赖审计 | 通过 | `.venv-project` 依赖 39 个,漏洞 0 |
| Docker 本机验证 | 未通过环境检查 | 当前机器没有 `docker` 命令 |
| 远端 Docker smoke | 通过 | `project-docs/qa-artifacts/v2-smoke-docker-deploy/2026-06-27T00-14-39` |
## 本轮修正
Python 测试曾因旧测试仍导入已移除的 pgvector 动态 SQL helper 而失败。已改为断言当前固定 SQL 常量:
- `PGVECTOR_CANDIDATE_SQL_64`
- `PGVECTOR_CANDIDATE_SQL_64_FILTERED`
- `PGVECTOR_CANDIDATE_SQL_GENERIC`
- `PGVECTOR_CANDIDATE_SQL_GENERIC_FILTERED`
这样保持 Bandit 清零后的实现方向:不恢复动态 SQL helper,只保护固定查询模板的 64 维 HNSW 路径和通用维度回退路径。
## 已完成范围
| 范围 | 状态 | 交付物 |
| --- | --- | --- |
| 合同工作台、列表、详情、文件、审批、通知、义务、归档导出 | 已完成 | V2 功能文档和测试覆盖 |
| AI 中台、模型配置、Prompt、知识库、RAG explain、质量改进闭环 | 已完成 | V2 AI 系列文档和测试覆盖 |
| Phase 7 租户隔离 | 已完成 | `project-docs/V2-tenant-isolation-2026-06-26.md` |
| Phase 7 审计完整性 | 已完成 | `project-docs/V2-audit-integrity-2026-06-26.md` |
| Phase 7 数据备份 | 已完成 | `project-docs/V2-backup-restore-2026-06-26.md` |
| Phase 7 错误监控 | 已完成 | `project-docs/V2-error-monitoring-2026-06-26.md` |
| Phase 7 权限矩阵 | 已完成 | `project-docs/V2-permission-matrix-2026-06-26.md` |
| 性能数据库基线 | 已完成 | `project-docs/V2-performance-baseline-2026-06-26.md` |
| 安全扫描收口 | 已完成 | `project-docs/V2-security-scan-2026-06-26.md`、`bandit-project.json`、`pip-audit-project.json` |
| 部署 runbook | 已整理 | `project-docs/V2-deploy-runbook-2026-06-26.md` |
| 远端 Docker smoke | 已完成 | Web/API/AI/DB/worker/AI golden gate 全部通过 |
| 准生产接口级压测 | 已完成,性能门禁未全通过 | `project-docs/V2-interface-performance-baseline-2026-06-27.md` |
## 仍需完成
### P0 发布前必须验收
1. 目标 Docker 环境烟测
已在 `192.168.3.90` 的独立 smoke 环境完成:
- 产物:`project-docs/qa-artifacts/v2-smoke-docker-deploy/2026-06-27T00-14-39`
- Web:`http://192.168.3.90:13000`
- Contract API:`http://192.168.3.90:18100`
- AI Platform API:`http://192.168.3.90:18101`
- MinIO Console:`http://192.168.3.90:19001`
验收结果:
- Web、Contract API、AI Platform API 健康检查全部返回正常。
- AI golden sample asset gate 通过:`90` samples、`6/6` suites、`16/16` checks。
- PostgreSQL 中 `yuqei_contract`、`yuqei_ai`、`yuqei_ops` 均存在。
- 合同审查 worker smoke 创建审查任务并处理成功,审查结果写回 `ai_audit_run_id`,风险项包含条款推荐。
- 远端 smoke 容器最终状态均为 healthy。
2. 准生产/生产数据量压测
已在 `192.168.3.90` 远端 smoke 环境完成准生产数据量接口级压测:
- 产物:`project-docs/V2-interface-performance-baseline-2026-06-27.md`
- 明细:`project-docs/qa-artifacts/v2-interface-benchmark/2026-06-27T00-51-47`
- 数据量:`contracts=12007`、`review_tasks=16003`、`ai_run_audits=50008`、`knowledge_documents=10002`、`knowledge_chunks=60002`
- 稳定性:7 个场景、420 次正式请求全部 `200`,总错误率 `0%`
- 性能结论:合同详情和知识库 chunk 混合检索达标;合同列表、审批待办、统一搜索、AI Trace、知识库文档检索未达标
验收标准:
- 覆盖合同列表、合同详情、审批待办、统一搜索、AI Trace、知识库检索:已完成。
- 输出 p50/p95/p99、RPS、错误率、数据量和流量模型:已完成。
- 对照 `project-docs/V2-performance-baseline-2026-06-26.md` 给出是否达标结论:已完成,结论为“稳定性通过、生产上线性能门禁未全通过”。
后续阻塞生产性能门禁的 P0 优化:
- `knowledge-documents/search` 已切到数据库侧过滤,并在复核中达到目标 p95。
- `audit/ai-runs` 列表已瘦身为摘要接口,并在复核中达到目标 p95。
- 修复本轮排除的 `workspace?role=approver` 和 AI 质量看板 500,再纳入下一轮压测。
- 当前还需要继续盯合同列表与合同详情的 p95,属于主流程性能优化,不再是 AI Trace / 知识库文档检索的问题。
### P1 生产化治理
1. CI 质量门
将以下命令纳入 CI:
```powershell
python -m pytest
npm run web:typecheck
npm run web:build
npm audit --omit=dev --audit-level=high
.\.venv-audit\Scripts\bandit.exe -r yuqei-contract-platform\services\contract-api\src yuqei-ai-platform\services\ai-platform-api\src yuqei-ai-platform\services\worker\src yuqei-ai-sdk-python\src -f json -o bandit-project.json
.\.venv-audit\Scripts\pip-audit.exe --path .venv-project\Lib\site-packages -f json -o pip-audit-project.json --progress-spinner off
```
验收标准:CI 中高危安全问题为 0,测试/typecheck/build 必须通过。
2. 数据库生产治理
需要补齐:
- DB 级 RLS 或等效租户隔离。
- 独立数据库账号与最小权限。
- 真实备份/恢复演练。
- DB 级审计 append-only 约束。
- 慢查询监控与阈值告警。
验收标准:每一项都有配置、演练记录或监控截图/日志归档。
3. 生产密钥和环境变量管理
当前文档里的真实口令样例已经替换为占位符。上线前仍需在目标环境完成 secret 注入和权限校验。
验收标准:
- `.env.production.example` 只保留占位符。
- 真实密钥只存在于目标 secret 管理或宿主机安全配置中。
- 发布归档不包含真实口令、token、私钥。
### P2 可后置增强
1. 接入真实 embedding/provider 与质量评估集。
2. 扩展大体量 DOCX/PDF/OCR 解析压测。
3. 补全 provider token、成本、错误率的生产审计看板。
4. 把 RAG explain 质量指标沉淀成固定回归集。
## 下一步执行顺序
1. 用准生产数据量补接口级压测报告。
2. 把 CI 质量门接起来,确保后续不再靠手工复跑。
3. 进入 P1 数据库治理和生产密钥治理。