docs: record pdf deeptest closure
This commit is contained in:
@@ -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 服务器部署完成
|
||||||
|
- 服务器定向复验通过
|
||||||
Reference in New Issue
Block a user