2.7 KiB
2.7 KiB
PROGRESS-web.md · 平台组(Web 前端)
更新:2026-11-03 11:50
已完成
app.py:FastAPI 应用,端口 8736,绑定 0.0.0.0GET /:中文单页应用(HTML/CSS/JS 全部内嵌,无外部 CDN,适配 2G 内存服务器)- 拖拽 + 按钮两种上传方式
- 处理进度条 + 阶段文字(页面分流 → 抽取识别 → 脱敏回写)
- 结果区:敏感项表格(类型/原文/页码)、下载脱敏文件按钮、保留原件下载按钮
POST /api/process(multipart):上传存/tmp/tm-uploads/<task_id>/input.pdf,后台线程处理,立即返回 task_idGET /api/tasks/GET /api/tasks?task_id=:任务状态轮询(含 tmkit 是否就绪标志)GET /download/{task_id}?type=redacted|original:文件下载,未完成任务返回 409GET /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
已知问题
- 检测漏项(疑似分词问题,归管线组):测试 PDF 里
13812345678紧跟在Phone:后,fitz 抽词时与前一截文字合并成一个 word,detector 逐词正则匹配不到;15987654321前有空格可正常检出。建议 detector 对 word 做跨词滑窗或先拼接整行文本再定位 bbox。 - 任务表在内存中,重启后 /tmp 文件还在但任务状态丢失;上传目录无自动清理(长期运行会占盘)。
- 处理为单线程逐任务并发(threading),大文件并发多了内存可能吃紧(2G 服务器);未做限流。
下一步
- 与管线组确认 detector 跨词匹配方案(已知问题 1)
- 加 /tmp/tm-uploads 过期清理(如 24h 定时或启动时清理)
- 看板加自动刷新/最后更新时间;部署组联调 systemd 常驻