Files
ai-contract-platform/project-docs/V2-rc-core-regression-2026-07-12.md
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

112 lines
7.2 KiB
Markdown
Raw Permalink 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 RC 核心回归报告
日期:2026-07-12
## 结论
本地与 `192.168.3.90` PostgreSQL smoke 的 RC 核心用户链路均已通过。Docker smoke、两个 schema-check、安全扫描、接口压测和发布质量门已使用同一候选版本复跑通过。
## 运行环境
| 服务 | 地址 | 结果 |
| --- | --- | --- |
| Contract Web | `http://localhost:3000` | 200 |
| Contract API | `http://127.0.0.1:8100` | 200 |
| AI Platform API | `http://127.0.0.1:8101` | 200 |
| Contract API 数据库 | `.runtime/contract-api.sqlite3` | 本地回归库 |
| AI Platform 数据库 | `.runtime/ai-platform.sqlite3` | 本地回归库 |
本地 schema-check 返回 `warning`,原因是本地使用 SQLite 且没有 Alembic/PostgreSQL 扩展。核心表、治理字段、展示缓存一致性检查均为 `ok`。远端准入仍要求 PostgreSQL smoke schema-check 为 `ok`。
## 用户主链路
Playwright 主回归创建全新合同 `contract-24cfa3181aad`,实际完成:
- 管理员登录。
- 从模板生成合同草稿。
- 下载有效 Word 文档,40,011 bytes。
- 发起异步审查并由 worker 消费,2 个风险项、4 条结构化引用。
- 下载有效审查 PDF,9,790 bytes。
- 上传、预览、单文件下载和两文件 ZIP 批量下载。
- 编辑合同正文和相对方。
- 提交审批、退回、重新提交、审批通过、归档。
- 生成签署证据和归档证据。
- 已归档筛选命中目标合同。
- 审计哈希链完整。
- 浏览器控制台 0 error。
Artifact:`output/playwright/core-regression/core-user-flow-summary.json`
## 资产回归
| 场景 | 结果 | Artifact |
| --- | --- | --- |
| 30 个模板全量生成 | 30/30 通过 | `output/playwright/template-draft-sweep/2026-07-12T04-11-40-868/template-draft-sweep-summary.json` |
| 模板编辑草稿、diff、发布前校验 | 通过并恢复原草稿 | `output/playwright/admin-asset-regression/admin-asset-flow-summary.json` |
| 标准条款编辑草稿、diff、发布前校验 | 通过并恢复原草稿 | 同上 |
| 审查规则编辑草稿、diff、发布前校验 | 通过并恢复原草稿 | 同上 |
| 模板发布、下线、回滚、恢复发布 | 通过,最终为已发布 | 本地 API 实测 |
| 条款发布、下线、回滚、恢复发布 | 通过,最终为已发布 | 本地 API 实测 |
| 规则发布、下线、回滚、恢复发布 | 通过,最终为已发布 | 本地 API 实测 |
| 法规变更影响扫描 | 页面提交通过,命中模板、条款、规则和合同 | `output/playwright/legal-change-impact-result.png` |
法律全文页在本地精选库正确显示 14 条版本数据。只有数据库实际存在 `v1-legal-20260616` 全量版本行时,才使用 789,853 条缓存总数和全量分页快路径。
## 管理与安全回归
- 身份、租户、邀请、邮箱验证、密码重置、SSO、租户隔离、权限和全局审计:25 项测试通过。
- `/templates`、`/admin/legal-assets`、`/admin/legal-fulltext`、`/admin/review-results`、`/admin/identity`、`/admin/audit`、`/admin/ai-traces`、`/health`:页面均返回 200,控制台无 error。
- 法律问答页面真实提交:HTTP 200,返回 113 字答案、3 条依据,控制台无 error。
## 本轮修复
1. 审查 worker 使用 `ReviewTask.tenant_id` 调用 AI Platform,修复知识库租户被硬编码为 `system` 导致引用为空。
2. 法律问答代理透传当前请求租户,不再硬编码 `system`。
3. 合同详情“管理履约证据”死按钮替换为可用的签署证据、归档证据和归档表单。
4. 实现 SQLAlchemy 文件批量下载并接入文件仓库多选、全选和 ZIP 下载。
5. 修复同一事务连续写审计事件时的哈希链顺序,确保事件时间严格单调递增。
6. 修复精选法律全文库误报全量总数却返回空页的问题,同时保留真实全量库快路径。
7. 修复模板占位符位于正文末尾时误删用户输入末尾标点的问题。
## 自动化结果
| 检查 | 结果 |
| --- | --- |
| Contract API 全量测试 | 150 passed |
| Contract Web TypeScript | 通过 |
| Contract Web production build | 通过,82 个静态页面完成生成 |
| 30 模板 sweep | 30 passed / 0 failed |
| 核心 Playwright 主回归 | 通过 |
| 管理资产无污染回归 | 通过 |
| `git diff --check` | 通过,仅有 CRLF 提示 |
## 准入状态
当前候选版本已完成 `192.168.3.90` smoke 部署与复跑。Contract API / AI Platform PostgreSQL schema-check、Docker smoke、核心用户主链路、安全扫描、接口性能和发布质量门均已通过;源码已在 `codex/v2-rc-20260712` 分支冻结,剩余工作转为生产发布审批与上线回滚演练确认。
## 远端 PostgreSQL Smoke 收口
远端地址通过 SSH 隧道执行自动化;服务实际部署地址保持不变:Web `:13000`、Contract API `:18100`、AI Platform API `:18101`。
| 检查 | 结果 | Artifact |
| --- | --- | --- |
| Docker smoke | 通过,8 个服务健康,AI golden gate 与 review worker smoke 通过 | `project-docs/qa-artifacts/v2-smoke-docker-deploy/2026-07-12T13-21-24` |
| Contract API schema-check | `ok`,Alembic `20260710_0030` | `project-docs/qa-artifacts/v2-release-quality-gate/2026-07-12T13-28-00/contract_api-schema-check.json` |
| AI Platform schema-check | `ok`,Alembic `20260703_0021`,60,007 条 64 维向量及索引通过 | `project-docs/qa-artifacts/v2-release-quality-gate/2026-07-12T13-28-00/ai_platform_api-schema-check.json` |
| 核心浏览器主链路 | 通过,风险 2、引用 4、控制台错误 0 | `output/playwright/core-regression-remote-2026-07-12-cache-final/core-user-flow-summary.json` |
| 30 模板全量起草 | 30/30 通过 | `output/playwright/template-draft-sweep/remote-2026-07-12-final/template-draft-sweep-summary.json` |
| 法律问答 | HTTP 200,答案 113 字、引用 2 条 | 远端 Contract API 实测 |
| 接口级压测 | 7/7 场景通过,错误率均为 0 | `project-docs/qa-artifacts/v2-interface-benchmark/2026-07-12T13-24-00` |
| 安全扫描 | npm 0、Bandit 0、pip-audit 0;冻结索引 821 个文件的源码 secret 新命中 0 | `project-docs/qa-artifacts/v2-security-scan/2026-07-12T13-08-00`、`project-docs/qa-artifacts/v2-source-secret-scan/2026-07-12T15-24-56` |
| 发布质量门 | 通过 | `project-docs/qa-artifacts/v2-release-quality-gate/2026-07-12T13-28-00` |
远端法律全文库首屏返回 5 条、总数 789,867;数据库版本计数为 `v1-legal-20260616=789853`、精选 `v1=14`。
本轮远端回归额外发现并修复:
1. `/workspace` 不再加载全租户约 12,000 份合同的全部审计、附件和正文关系,改为按角色查询近 100 条待办。Contract API 容器内存从约 754 MiB 降至约 115 MiB。
2. 8,000 条性能基线旧审计事件 `downloaded` 在读取时兼容为 `contract_downloaded`,不修改数据库原值和 hash-chain。
3. 多 worker 进程内缓存导致 PATCH 后偶发读旧值。当前 smoke 使用单 worker + 2 秒短读缓存,所有写请求前后清缓存;多 worker 配置会自动禁用该缓存。
最新接口 p95:合同列表 `145.31ms`、合同详情 `125.18ms`、审批待办 `158.43ms`、统一搜索 `63.53ms`、AI Trace `205.51ms`、知识文档搜索 `97.56ms`、知识 chunk 混合检索 `64.78ms`。