tm-desensitize/PROGRESS-web.md

42 lines
2.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.

# PROGRESS-web.md · 平台组(Web 前端)
更新:2026-11-03 11:50
## 已完成
- `app.py`:FastAPI 应用,端口 8736,绑定 0.0.0.0
- `GET /`:中文单页应用(HTML/CSS/JS 全部内嵌,无外部 CDN,适配 2G 内存服务器)
- 拖拽 + 按钮两种上传方式
- 处理进度条 + 阶段文字(页面分流 → 抽取识别 → 脱敏回写)
- 结果区:敏感项表格(类型/原文/页码)、下载脱敏文件按钮、保留原件下载按钮
- `POST /api/process`(multipart):上传存 `/tmp/tm-uploads/<task_id>/input.pdf`,后台线程处理,立即返回 task_id
- `GET /api/tasks` / `GET /api/tasks?task_id=`:任务状态轮询(含 tmkit 是否就绪标志)
- `GET /download/{task_id}?type=redacted|original`:文件下载,未完成任务返回 409
- `GET /progress`:开发进展看板,渲染 PROGRESS-backend/web/deploy.md,缺失显示「进行中」
- tmkit 集成:按当前实际签名调用
`classify_pages(pdf_bytes)` → 逐页 `extract_page_words(page)` + `detector.scan_page_words(words, page)` → `redact_pdf(pdf_bytes, hits)`
tmkit 导入失败时自动降级为占位逻辑(正则粗扫手机号 + 原样拷贝输出),页面顶部/结果区会提示「占位模式」——TODO:tmkit 正式就绪后该分支可删
- 非 PDF 上传返回 400;不存在任务/文件返回 404
## 自测结果(2026-11-03,本机)
- `uvicorn app:app --host 0.0.0.0 --port 8736` 启动正常
- `GET /` → 200;`GET /progress` → 200
- reportlab 生成测试 PDF(含手机号 13812345678 / 15987654321、身份证号)
- `POST /api/process` → `{"task_id":"b603facc8ddc"}`
- 轮询 `GET /api/tasks?task_id=` → `status:"done", items:[{"type":"phone","text":"15987654321","page":1}]`
- `GET /download/...?type=redacted` → 200(966B,已脱敏)
- `GET /download/...?type=original` → 200;错误 task_id → 404
## 已知问题
1. **检测漏项(疑似分词问题,归管线组)**:测试 PDF 里 `13812345678` 紧跟在 `Phone: ` 后,fitz 抽词时与前一截文字合并成一个 word,detector 逐词正则匹配不到;`15987654321` 前有空格可正常检出。建议 detector 对 word 做跨词滑窗或先拼接整行文本再定位 bbox。
2. 任务表在内存中,重启后 /tmp 文件还在但任务状态丢失;上传目录无自动清理(长期运行会占盘)。
3. 处理为单线程逐任务并发(threading),大文件并发多了内存可能吃紧(2G 服务器);未做限流。
## 下一步
- 与管线组确认 detector 跨词匹配方案(已知问题 1)
- 加 /tmp/tm-uploads 过期清理(如 24h 定时或启动时清理)
- 看板加自动刷新/最后更新时间;部署组联调 systemd 常驻