From ad0e1b967a0dfacb52ff2962c3addbb01b9255ff Mon Sep 17 00:00:00 2001 From: Codex Date: Sun, 3 May 2026 23:45:14 +0800 Subject: [PATCH] docs: record pdf deeptest closure --- .../pdf_deeptest_fix_closure_2026-05-03.md | 172 ++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 project-docs/pdf_deeptest_fix_closure_2026-05-03.md diff --git a/project-docs/pdf_deeptest_fix_closure_2026-05-03.md b/project-docs/pdf_deeptest_fix_closure_2026-05-03.md new file mode 100644 index 00000000..1df951d7 --- /dev/null +++ b/project-docs/pdf_deeptest_fix_closure_2026-05-03.md @@ -0,0 +1,172 @@ +# PDF 深测问题闭环记录(2026-05-03) + +## 对应文档 + +- `project-docs/pdf_deeptest_report_2026-05-03.md` +- `project-docs/pdf_deeptest_api_round9.json` +- `project-docs/reverify_report_2026-05-03_round7.md` + +## 本轮目标 + +针对这三份文档里仍未闭环的问题继续修复: + +1. 报告型 PDF 被当作合同正文再次审查,形成“伪成功”结果 +2. 页眉 / 页脚 / 页码噪声混入 PDF 正文抽取和条款摘要 +3. 登录页仍保留“本地环境 / 联调 / 初始化”语义 + +## 实际修复 + +### 1. 报告型 PDF 识别 + +后端 `ReviewService` 新增两层识别: + +- **内容识别** + - `审查任务:` + - `任务编号:` + - `风险汇总:` + - `审查意见:` + - `原始文本摘要:` + +- **文件名识别** + - `review-report` + - `report-review` + - `审查报告` + +命中后不再进入“成功审查”链路,而是直接返回: + +- `code = 40002` +- `message = 检测到疑似平台审查报告 PDF,请上传合同原文 PDF / DOCX / TXT,或直接粘贴合同正文后再审查。` + +### 2. 页眉 / 页脚 / 页码噪声清洗 + +后端 `ReviewService` 在 `pdfplumber` 抽取后增加: + +- 跨页重复页眉/页脚识别 +- `Page 1 / 2` / `Page X of Y` 这类页码模式过滤 +- 仅对跨页重复、且位于页首/页尾的短行进行保守清洗 + +修复目标不是“让所有 PDF 完美抽取”,而是先把最明显的分页噪声和固定页眉页脚从 `source_text_preview` 与 `clauses` 中剥离掉。 + +### 3. 登录页正式化文案收口 + +登录页对外可见文案已不再显式包含: + +- `本地初始化` +- `联调` +- `本地环境` + +保留本地按钮能力,但不再把这些开发语义作为正式页面说明文案暴露给普通用户。 + +## 本轮代码范围 + +- `backend/app/api/reviews.py` +- `backend/app/services/review_service.py` +- `backend/app/services/legal_review_execution_gateway.py` +- `backend/app/services/legal_review_local_engine.py` +- `backend/tests/test_review_service.py` +- `backend/tests/test_reviews_api.py` +- `frontend/src/app/login/page.tsx` + +## 本地验证 + +### 后端定向 + +- `backend/.venv/Scripts/python.exe -m unittest tests.test_review_service tests.test_reviews_api tests.test_contracts_api` + - `50 tests OK` + +### 后端全量 + +- `backend/.venv/Scripts/python.exe -m unittest discover -s tests` + - `354 tests OK` + +### 前端 + +- `frontend/npm.cmd run lint` + - `PASS` +- `frontend/npm.cmd run build` + - `PASS` + +## Docker 服务器部署 + +目标环境: + +- 前端:`http://192.168.3.90:3003` +- API:`http://192.168.3.90:8001/api/v1` + +部署方式: + +- 将 `HEAD` 的 `backend/` 与 `frontend/` 归档上传至 `192.168.3.90` +- 覆盖 `/opt/ai-contract-platform` +- 重建 Docker `backend + frontend` + +补充处理: + +- 服务器一度因 Docker 旧镜像与构建缓存占满磁盘导致构建失败 +- 已执行镜像/构建缓存清理 +- 根分区从仅剩约 `92MB` 恢复到约 `20GB` 可用 + +## 服务器定向复验 + +产物目录: + +- `project-docs/qa-artifacts/pdf-deeptest-fix/2026-05-03T23-26-32` + +关键产物: + +- `pdf-fix-smoke.json` +- `pdf-fix-smoke-recheck.json` + +### 1. 干净 PDF + +结果: + +- 上传成功 +- 生成 `review_id` +- `source_text_preview` 为真实正文 +- 审查结果可正常生成 + +### 2. 报告型 PDF + +最终结果: + +- `code = 40002` +- `message = 检测到疑似平台审查报告 PDF,请上传合同原文 PDF / DOCX / TXT,或直接粘贴合同正文后再审查。` + +结论: + +- 已不再产生“把报告 PDF 当合同正文二次审查”的伪成功结果 + +### 3. 页眉页脚边界 PDF + +最终结果: + +- 上传成功 +- 可生成审查结果 +- `source_text_preview` 不再出现: + - `Page 1 / 2` + - `Page 2 / 2` + - `PDF extraction boundary sample` +- `clauses` 摘要中也不再混入这些噪声行 + +### 4. 登录页文案 + +直接抓取服务器登录页 HTML 复验: + +- `本地初始化`:`false` +- `联调`:`false` +- `本地环境`:`false` + +## 结论 + +本轮针对 PDF 深测和 Round7 复验报告中剩余问题的闭环结果为: + +1. **报告型 PDF 误审查**:已修复 +2. **页眉页脚 / 页码噪声污染摘要**:已修复 +3. **登录页联调语义未收口**:已修复 + +当前这批文档里继续要求跟进的 bug,已经完成: + +- 本地代码修复 +- 本地测试通过 +- Docker 服务器部署完成 +- 服务器定向复验通过