支持选择资料评分,并修复目录导入与证据索引可靠性 #1

Merged
SkyLiCoder merged 1 commits from aerospaceboy/WiseGrade:improve/material-scoped-grading into main 2026-10-14 14:30:12 +08:00
Contributor

当同一课程下导入多个学生项目时,原评分页面无法明确选择材料,批次会包含该课程下的全部项目;直接进入存放 PDF 的资料目录扫描会返回空列表。模型调用失败只显示笼统状态,事实抽取缺少字段类型约束;项目列表返回较慢时,多学生批次链接还会丢失指定学生。

本 PR 让教师明确选择要评分的资料,并修复导入、证据索引和模型结果处理中的可靠性问题。

主要变化

  • 按资料创建评分批次:新增资料多选、文件名/类型/解析状态预览,显式 project_ids 校验并固定批次名单;批次和评分详情显示学生身份、课程及规则版本。旧接口未传名单时保留原行为,历史批次不自动加入后来导入的项目。
  • 目录导入与评分页面:支持总目录和直接存放材料的目录;预填无冲突的封面身份信息,冲突交由教师确认;空目录不生成空项目。导入后提供查看资料和转入评分入口,等待批次与项目列表加载完成再校验所选学生,避免链接选择被清空。
  • 证据与索引可靠性:区分摘要、目录、正文和混合页中的实质内容,保持跨页小节路径;异常字符保留并告警,不作为自动内容评分证据。修复检索范围/版本过滤、目标覆盖、文件锁和失败回滚;重建创建新的文档修订,保留历史页面、片段、评分及会话引用。
  • 模型与复核:JSON 调用附带对应输出 Schema,提供不暴露凭据或响应正文的网络/认证/限流错误提示;评分表直接显示失败原因。教师在模型请求期间完成的复核优先保留,合法 0 分在 PDF/Excel 中保留,复核后重新计算批次状态。
  • 解析和查询:补充限定区域的三线表识别及推断告警,合并知识库/评分证据查询,完善会话引用定位与历史来源标记,并增加回归测试和验证文档。

验证

  • 后端隔离回归:test_optimization.py、test_batch_selection.py、test_import_and_model_errors.py 共 63 passed。数据库业务测试主要使用 SQLite 和确定性模型替身,不等同于完整 PostgreSQL 测试套件。
  • 前端 Playwright:12 passed,包括延迟项目列表、资料选择、导入跳转、失败原因和既有会话行为;TypeScript/Vite 生产构建通过。
  • 实际 Docker PostgreSQL/pgvector、Redis/RQ 环境验证:5 份 PDF 全部解析、以真实 BGE-M3 建立索引;缺少离线 OCR 模型的 PPT 在补齐模型后重试入库成功;原 PDF 的 SHA256 保持一致。
  • 使用真实评分模型的、明确标注模拟数据的测试样例完成 22/22 项评分,事实抽取成功。实际后端浏览器检查未使用接口模拟,资料和评分页面无页面异常。
  • 这些检查验证流程与所覆盖的回归场景,不是评分准确率、真实学生成绩或跨主机故障恢复的全面验收。此前的网络 ConnectError 已恢复,但没有据此断言其历史根因。

升级说明

包含 Alembic 0007–0009,当前索引版本为 5、证据政策版本为 2。升级数据库后,对旧索引重新建库;历史来源和引用保留。旧证据政策快照的批次结果保持可读,继续评分应创建新批次。存在同源历史修订时,0008 的有损降级会被拒绝。

离线 BGE-M3/OCR 模型、原 PDF、运行数据及 API 密钥不包含在提交中;模型仍需由部署环境提供。三线表列边界和异常文字仍应结合原页核对。

详细行为、升级和验证边界见 docs/OPTIMIZATION_2026-10-12.md、docs/OPTIMIZATION_2026-10-13.md、docs/PDF_TEST_2026-10-13.md、docs/BATCH_SELECTION_2026-10-13.md 和 docs/IMPORT_MODEL_FIX_2026-10-14.md。

当同一课程下导入多个学生项目时,原评分页面无法明确选择材料,批次会包含该课程下的全部项目;直接进入存放 PDF 的资料目录扫描会返回空列表。模型调用失败只显示笼统状态,事实抽取缺少字段类型约束;项目列表返回较慢时,多学生批次链接还会丢失指定学生。 本 PR 让教师明确选择要评分的资料,并修复导入、证据索引和模型结果处理中的可靠性问题。 ## 主要变化 - **按资料创建评分批次**:新增资料多选、文件名/类型/解析状态预览,显式 `project_ids` 校验并固定批次名单;批次和评分详情显示学生身份、课程及规则版本。旧接口未传名单时保留原行为,历史批次不自动加入后来导入的项目。 - **目录导入与评分页面**:支持总目录和直接存放材料的目录;预填无冲突的封面身份信息,冲突交由教师确认;空目录不生成空项目。导入后提供查看资料和转入评分入口,等待批次与项目列表加载完成再校验所选学生,避免链接选择被清空。 - **证据与索引可靠性**:区分摘要、目录、正文和混合页中的实质内容,保持跨页小节路径;异常字符保留并告警,不作为自动内容评分证据。修复检索范围/版本过滤、目标覆盖、文件锁和失败回滚;重建创建新的文档修订,保留历史页面、片段、评分及会话引用。 - **模型与复核**:JSON 调用附带对应输出 Schema,提供不暴露凭据或响应正文的网络/认证/限流错误提示;评分表直接显示失败原因。教师在模型请求期间完成的复核优先保留,合法 0 分在 PDF/Excel 中保留,复核后重新计算批次状态。 - **解析和查询**:补充限定区域的三线表识别及推断告警,合并知识库/评分证据查询,完善会话引用定位与历史来源标记,并增加回归测试和验证文档。 ## 验证 - 后端隔离回归:`test_optimization.py`、`test_batch_selection.py`、`test_import_and_model_errors.py` 共 **63 passed**。数据库业务测试主要使用 SQLite 和确定性模型替身,不等同于完整 PostgreSQL 测试套件。 - 前端 Playwright:**12 passed**,包括延迟项目列表、资料选择、导入跳转、失败原因和既有会话行为;TypeScript/Vite 生产构建通过。 - 实际 Docker PostgreSQL/pgvector、Redis/RQ 环境验证:5 份 PDF 全部解析、以真实 BGE-M3 建立索引;缺少离线 OCR 模型的 PPT 在补齐模型后重试入库成功;原 PDF 的 SHA256 保持一致。 - 使用真实评分模型的、明确标注模拟数据的测试样例完成 **22/22** 项评分,事实抽取成功。实际后端浏览器检查未使用接口模拟,资料和评分页面无页面异常。 - 这些检查验证流程与所覆盖的回归场景,不是评分准确率、真实学生成绩或跨主机故障恢复的全面验收。此前的网络 `ConnectError` 已恢复,但没有据此断言其历史根因。 ## 升级说明 包含 Alembic `0007`–`0009`,当前索引版本为 **5**、证据政策版本为 **2**。升级数据库后,对旧索引重新建库;历史来源和引用保留。旧证据政策快照的批次结果保持可读,继续评分应创建新批次。存在同源历史修订时,`0008` 的有损降级会被拒绝。 离线 BGE-M3/OCR 模型、原 PDF、运行数据及 API 密钥不包含在提交中;模型仍需由部署环境提供。三线表列边界和异常文字仍应结合原页核对。 详细行为、升级和验证边界见 `docs/OPTIMIZATION_2026-10-12.md`、`docs/OPTIMIZATION_2026-10-13.md`、`docs/PDF_TEST_2026-10-13.md`、`docs/BATCH_SELECTION_2026-10-13.md` 和 `docs/IMPORT_MODEL_FIX_2026-10-14.md`。
aerospaceboy added 1 commit 2026-10-14 14:12:48 +08:00
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.
SkyLiCoder approved these changes 2026-10-14 14:28:26 +08:00
SkyLiCoder merged commit c2dc9015ea into main 2026-10-14 14:30:12 +08:00
SkyLiCoder deleted branch improve/material-scoped-grading 2026-10-14 14:30:13 +08:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: SkyLiCoder/WiseGrade#1