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

4.7 KiB
Raw Blame History

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. 增加默认租户、个人空间、企业空间的规则隔离与浏览器旅程回归。