Files
WiseGrade/docs/IMPORT_MODEL_FIX_2026-10-14.md
aerospaceboy ebe33392ca fix: improve import, evidence indexing and material-scoped grading
Preserve document revisions and evidence, harden indexing and export behavior, add explicit material selection and direct-folder import, validate model JSON schemas with safe error messages, and retain student selection while loading scoring data.
2026-10-14 13:52:56 +08:00

28 lines
4.3 KiB
Markdown
Raw Permalink 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.
# 2026-10-14 目录扫描与模型故障修复
## 原因与修复
- 直接扫描 `test/示例` 原来返回 `projects: []`,因为扫描器只遍历子文件夹。现在支持所选目录直接存放资料,并继续支持下一级学生资料目录;空目录不再生成空项目。
- 未按“学号_姓名_选题”命名的资料目录原来只返回 `detected_identity`,确认表仍为空。现在用无冲突的封面信息预填空字段;不同封面信息冲突会提示人工确认,不覆盖目录名中已有的信息。
- 旧批次 5 的模拟样例有 14 个 `ConnectError`。本次容器内使用已保存配置访问模型列表接口返回 HTTP 200;相同配置的批次 6 后续完成全部 22 项评分。旧连接故障目前未重现,不能据此断言历史故障具体来自 DNS、代理或服务商。
- 批次 6 的事实抽取仍报 `ValidationError`。原调用仅要求严格 JSON,没有传递事实/一致性结果所需的字段类型。现在所有 JSON 调用明确包含对应 Pydantic JSON Schema,不放宽评分、引文或证据来源校验。
- 网络、超时、HTTP 认证/限流/服务异常提供可操作的提示,仍不输出响应正文、凭据、请求 URL 或原始异常文本。评分页面直接显示每项错误和批次重试入口说明;空扫描显示提示并禁用确认导入。
- 最后实际浏览器复查还复现了多项目批次链接加载时丢失学生选择的问题:批次列表先返回、项目列表未返回时,页面误以为所选学生不在批次中。评分页现在等两个列表都加载完才判断项目范围;新增延迟项目列表的回归测试,修复前失败,修复后通过。
- 示例 PPT 有 4 页文字层不足 30 字,触发 OCR;此前缺少离线模型导致整个 PPT 解析失败。依照 [PaddleOCR 检测文档](https://www.paddleocr.ai/main/en/version3.x/module_usage/text_detection.html)和[识别文档](https://www.paddleocr.ai/main/en/version3.x/module_usage/text_recognition.html),在本项目 `models/ocr/detection` 与 `models/ocr/recognition` 安装 PP-OCRv5 mobile 推理模型(约 21.75 MB),使用容器已有 PaddleOCR 3.7.0 / PaddlePaddle 3.3.1,未改变系统 Python 或驱动。下载链接和本地 SHA256 记录在运行证据 `ocr-setup/manifest.json`。真实首页 OCR 返回非空文字。
## 验证
- 新的导入和模型错误测试在修复前 8 项失败,修复后连同优化和批次测试共 63 项通过。
- 网页 Playwright 最终测试 12 项通过,TypeScript/Vite 构建通过。
- 实际 Docker 网页(无接口模拟)验证直接扫描 `test/示例`、预填身份、展示 5 份 PDF、显示 14 项历史连接错误以及新项目资料详情,无页面异常。
- 使用真实扫描结果确认导入“李傲琦 / 1023009006 / 基于ROS2 系统的自瞄移动机器人”,项目 ID 6,初始索引任务 7–11;补齐 OCR 模型后保留失败任务 7,并生成重试任务 12。原 PDF 和历史批次保留。
- 新镜像部署 API、网页和 worker;worker 在批次 6 原任务结束且无活动任务后更新。重试批次 6 仅补做事实抽取/一致性检查,已有 22 项评分跳过模型调用。
- 批次 6 真实重试结束为 `completed`,22/22 个评分项为 `scored`,事实结果不再含 `error`。93.55 为明确标注模拟数据的测试样例分数,不是李傲琦或胡旭阳的实际成绩。
- 最终项目 6 的 5/5 份资料为 `ready`、解析错误为空,5 个知识库文档均可检索;任务 8、9、10、11、12 全部完成。任务 7 保留首次缺 OCR 模型的历史失败,不影响重试后的资料状态。验收脚本验证了 PPT 首页 OCR 与可见标题一致、原 5 份 PDF 哈希完全一致及批次 6 的完整成功状态。
## 材料范围提醒
`test/示例/汇报PPT.pdf` 首页实际显示“课程导学/自动化专业综合实践”。应在评分前确认它是否属于学生汇报稿,而不是课程说明。本次只导入和索引该示例资料包,未创建或启动它的新评分批次。
运行证据保存在工作区 `.wisegrade-testing/docker-preview/`,包括 `import-model-live.json`、`import-test-sample-2026-10-14.json`、浏览器截图和构建/部署日志。实际入库与批次重试的最终状态见该目录 `import-model-final-2026-10-14.json`。