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