Skip to content

feat(course): 收敛课程演示交互与受控快速回答 - #56

Merged
Nnutural merged 9 commits into
BUPT-ResearchAgent:devfrom
Nnutural:dev
Jul 17, 2026
Merged

feat(course): 收敛课程演示交互与受控快速回答#56
Nnutural merged 9 commits into
BUPT-ResearchAgent:devfrom
Nnutural:dev

Conversation

@Nnutural

@Nnutural Nnutural commented Jul 17, 2026

Copy link
Copy Markdown
Member

本次更新页面

课程学习 / 资源工作台(/course?...tab=workbench)

  • 将七类课程资源由并列堆叠卡片改为单一下拉选择器,保留持久化详情、版本谱系、Evidence、来源边界和反馈入口。

课程学习 / 学习效果评估(/course?courseId=web-security-foundation&view=structured&tab=assess)

  • demo 学员拥有独立、已发布、学生范围内的 36 题 WEBSEC-101 综合评估及真实开放或可恢复提交记录。
  • 一键填充只写入可编辑的受控演示作答;已提交且逐题匹配冻结作答时显示“载入已提交的 36 道题”,不会覆盖提交。
  • 修复答案截断导致的真实 0%:在 Guardrail 预算内完整传入一次服务端已验证答案;超长输入才标记为 bounded_excerpt
  • 服务端依据冻结 AssessmentItem 与持久化 AssessmentSubmission 计算客观题可核验下限;模型分低于该下限时仅校正到该真实下限,审计保留模型分、最终分、校正原因与原始反馈。

课程学习 / 辅导对话(/course?...tab=tutor)

  • demo 学生拥有持久化辅导快捷问题与快速回答;预置回答明确标记为受控课程记录并保留 Evidence,非预置问题继续进入 RAG / Evidence / QualityCheck 链路。

教师工作台 / 题库管理(/teacher/quiz-bank)

  • 教师头部与页面 Shell 展示当前认证会话的真实姓名、角色和邮箱,不再以 MOCK_TEACHERS 静态资料掩盖实际登录身份。
  • 题库读取精确区分 401、403、5xx 与本地连接失败;仅对只读 GET 的网络级瞬断自动重试一次。刷新失败时明确标明展示的是上次成功读取的数据。
  • 新增候选题编组预检:使用与正式编组相同的教师授权、课程范围、curated + quality-passed + Evidence 持久化题池,先显示当前筛选可用数、是否满足目标与服务端计算的替代条件。
  • FormAssist 不再硬编码“首个知识点 + 简答 + 难度 3”。当前 WEBSEC-101 会推荐真实可满足 8 题的“全部知识点 + 全部题型 + 难度 3”组合;教师手动筛选保持严格,须显式点击替代条件才会放宽。
  • 对“HTTP/HTTPS + 简答 + 难度 3 + 8”这类真实无结果组合,保留 HTTP 409 业务边界并返回结构化 availability,而不是伪造候选或误报服务故障。

数据与真实性边界

  • 受控 demo 数据来自显式 seed 的持久化课程实体;题目、质量、Evidence、作业、提交、能力和审计关系保持真实 API/权限路径。
  • 教师仅可读取其授权课程内已发布、质量通过且具备 Evidence 的题目;未授权课程教师返回 COURSE_SCOPE_DENIED,学生返回 TEACHER_ROLE_REQUIRED
  • objective_floor_score 仅来自服务端对冻结题目与持久化作答的确定性核验;未引入前端伪 UUID、随机题目、默认成绩、固定雷达、静态题库或伪实时模型成功。
  • 历史 0 分运行保持可追溯,不会被静默改写;重新评估必须由用户显式发起。

已完成局部验证

  • uv run pytest tests/runtime/test_assessment_input_guardrail_projection.py tests/runtime/test_assessment_feedback_atomicity.py -q:9 passed。
  • uv run pytest tests/test_gap13_websec_quiz_quality.py -q:1 passed。
  • uv run pytest tests/test_teacher_quiz_candidate_flow.py tests/test_teacher_form_context.py -q:4 passed。
  • 直连题库 API:课程教师与综合教师均为 200 / 36 题 / 36 题质量通过;学生为真实 403POST validate → GET bank200 → 200
  • 授权 PostgreSQL 题库预检:HTTP/HTTPS + 简答 + 难度 30/8;“全课程 + 全部题型 + 难度 3”为 14/8;正式编组仍对前者返回含结构化 availability 的真实 409。
  • pnpm typecheckcompileallgit diff --check 通过。

未纳入本 PR 的验收

  • 未调用 live Provider;浏览器端到端、Spark/live Provider、部署环境和完整回归仍需在具备对应环境后验证。
  • 本地 shell 代理若把 localhost 错送到 127.0.0.1:7890,页面会如实显示 HTTP 502;这不是题库权限或数据库缺失。
  • Provider、QualityCheck 或服务连接失败时,页面应如实显示失败,不使用预置反馈替代;本 PR 不宣称生产验收。

@vercel

vercel Bot commented Jul 17, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
secure-hub-full-stack-monorepo Ready Ready Preview, Comment Jul 17, 2026 12:11pm
securehub-backend Ready Ready Preview, Comment Jul 17, 2026 12:11pm

@Nnutural
Nnutural merged commit 261d603 into BUPT-ResearchAgent:dev Jul 17, 2026
4 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant