Files
ai-contract-platform/project-docs/V2-P1-03-upload-to-review-implementation-2026-08-23.md
T
yuqei 1d85329a6a
Build and Test Quality Gate / Contract Web typecheck and build (pull_request) Successful in 9m12s
Build and Test Quality Gate / Isolated Alibaba and Tencent KMS gateway (pull_request) Failing after 4m53s
Build and Test Quality Gate / Python tests and Contract API migration (pull_request) Failing after 24m55s
Security Quality Gate / npm audit, Bandit, pip-audit, detect-secrets (pull_request) Failing after 8m42s
feat: deliver governed contract platform and async AI tasks
2026-08-26 12:53:47 +08:00

97 lines
4.7 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.
# P1-03 上传即审查实施与验收记录
日期:2026-08-23
对应路线图:`V2-systemic-product-market-architecture-audit-and-roadmap-2026-08-22.md` / P1-03
状态:已完成最小可用闭环,真实 OCR 成功率仍取决于已配置的 OCR Provider
## 1. 本阶段结论
原系统已有文件保存、关联合同、异步审查、风险等级和条款修复能力,但上传文件的审查读取只支持 UTF-8 纯文本。DOCX、PDF 和图片能够保存,却无法成为可读的审查来源;文件列表也没有解析进度、页数或失败原因。
本阶段复用现有 Contract Platform、AI Platform、Python SDK 和 review worker 边界,补齐“上传—解析—自动发起审查—worker 回写—页码定位—可应用建议”的完整链路,没有新增平行合同或审查系统。
## 2. 已实现范围
### 2.1 文档解析
- TXT/Markdown/CSV/JSON:支持 UTF-8、UTF-8 BOM 和 GB18030 解码。
- DOCX:提取段落和表格单元格文字。
- PDF:逐页提取文字并保留页码;无文本 PDF 自动进入 OCR 路径。
- PNG/JPG/JPEG/WEBP/TIF/TIFF:由 Contract Platform 通过 Python SDK 调用 AI Platform 文档智能接口,再由运行时 OCR Provider 执行识别。
- OCR 未配置、无识别文字或 Provider 调用失败时,保留原始文件并返回可操作的失败原因,不把“解析失败”误报为“上传丢失”。
### 2.2 持久化与 API
`contract_files` 新增:
- `parse_status`
- `parse_progress`
- `parse_message`
- `extracted_text`
- `parsed_pages`
- `page_count`
- `parsed_at`
数据库已升级到 `20260823_0049`。历史文件默认标记为 `not_requested`,不会伪造已解析状态。
AI Platform 新增:
- `POST /api/v1/document-intelligence/extract-text`
Contract OpenAPI、AI OpenAPI 和 Python SDK 已同步。
### 2.3 前端与业务流程
- 上传控件限制并提示支持的合同文件格式。
- 上传期间展示进度;文件仓库展示解析状态、百分比、页数和失败原因。
- 关联已有合同后,可勾选“解析完成后立即发起 AI 审查”。
- 未成功解析的文件不会出现在可审查文件下拉选项中。
- 合同详情同时展示附件解析状态和审查风险来源页码。
- 风险结果继续复用已有风险等级、法源引用和可应用标准条款。
## 3. 真实环境验收证据
验收合同:`contract-16d01ce91901`
验收文件:`file-cee906f22020`
审查任务:`review-f124382c5789`
关联 ID:`trace-91a38966a8fc4be8`
结果:
- 文件解析:`parsed`,100%,1 页。
- 自动审查:`succeeded`。
- 整体风险:`high`。
- 风险项:2 项。
- 可应用建议:4 条。
- 两项风险均展示“来源页码:第 1 页”。
- Chrome 超级管理员会话已验证合同仓库状态和合同详情结果展示。
Chrome 扩展当前未启用“Allow access to file URLs”,因此自动化无法直接驱动系统文件选择器;验收文件改由同一运行环境的 Contract API 提交,随后继续在 Chrome 中验证真实持久化结果。该限制属于浏览器扩展权限,不是产品上传接口故障。
## 4. 自动化与构建结果
- Contract API:13 项文件、worker、来源页码相关回归通过。
- AI Platform:5 项文档智能与 OCR 运行时相关回归通过。
- Python SDK:5 项客户端契约测试通过。
- Contract Web:37 项前端单元测试通过。
- TypeScript:`tsc --noEmit` 通过。
- Next.js:生产构建通过,112/112 页面生成成功。
- Alembic:全新 SQLite 从空库升级到 `0049` 通过;运行 PostgreSQL 已升级到 `0049`。
- OpenAPI:两份 YAML 解析通过。
- `git diff --check`:通过;仅存在仓库既有的 LF/CRLF 提示。
## 5. 架构判断与后续边界
当前实现适合 P1 试点:普通文本解析在合同服务内完成,OCR 由 AI Platform 管理 Provider 配置和调用,审查仍由异步 worker 执行。这样既减少上传后的等待,也没有把 OCR 密钥和 Provider 管理下沉到合同域。
进入较大规模前,应把大文件解析从同步请求迁移到独立 durable worker,并增加文件大小、页数、解析耗时、OCR 成本和失败率指标。当前 UI/API 状态字段已经为异步化预留了 `processing` 和进度语义。
## 6. 下一阶段
下一步进入 P1-04 企业 Playbook:
1. 新增租户级禁用条款、金额阈值、兜底文本和审批规则配置。
2. 复用现有标准条款、审查规则、审批规则和生命周期管理,不建设第二套规则库。
3. 在每个风险结果中明确展示命中的企业规则、匹配证据、执行动作和适用版本。
4. 增加默认租户、个人空间、企业空间的规则隔离与浏览器旅程回归。