Files
K12Study/docs/plan/modules/question.md
2026-04-17 16:31:32 +08:00

3.6 KiB
Raw Permalink Blame History

问题陈述

question 拆分为可演进的习题/作业/批改核心域,并在同一计划中处理错题复习、费曼讲解、推荐闭环与小程序学生端作业可见规则。

当前状态(已确认)

  • 架构与 API 已定义 question 为核心业务域,覆盖题库、作业、提交、批改、复习。参考 docs/architecture/api-design.md (42-61)docs/architecture/logical-view.md (58-66)
  • 当前后端尚无 question 服务代码,能力主要体现在 init/pg/question 表结构。参考 backend/pom.xml (11-20)init/pg/question/10_create_question_tables.sql (1-1272)
  • SQL 已覆盖题库/作业/批改/错题/复习/讲解评估,并把推荐与画像并入 question.rc_*。参考 init/pg/question/10_create_question_tables.sql (1041-1272)
  • 复习策略已有租户级默认种子E1-E6。参考 init/pg/question/20_init_question_seed.sql (8-56)
  • 功能清单对错题、变式题、费曼评估、复习提醒、推荐闭环都有明确诉求。参考 docs/AI智能学习系统功能清单.md (11-24)docs/AI智能学习系统功能清单.md (91-108)

模块拆分与设计细节

1) 子模块边界

  • question-bank:题库、题目、题目知识点关联。
  • question-assignment:试卷、作业、投放对象、提交与答案。
  • question-grading:批改任务、答案评分、错因标签、知识点分析。
  • question-review:错题沉淀、艾宾浩斯计划与执行。
  • question-explanation:费曼讲解提交、评估与维度评分。
  • question-recommendation-bridge:保留 rc_* 闭环数据(中期可再独立 recommendation 服务)。

2) 小程序学生端规则

  • 小程序仅面向学生,assignment 查询必须限制为“学生所在班级 + 已发布 + 节点类型为课堂练习/课后作业”。
  • 对应教师创建课程中的课件节点,不在学生端作业列表和详情返回。
  • 通过 course.cl_node_homework_rel.relation_type(IN_CLASS/AFTER_CLASS) 与班级成员关系联合过滤。

3) 数据与契约修正

  • 强化 hw_assignment_target.target_ref_id 的对象完整性(按 target_type 校验 class_id/student_id 存在且同租户)。
  • 补充“变式题生成任务”数据结构(任务、来源错题、生成题、命中策略),连接功能清单中的举一反三链路。
  • gd_answer_grade 继续作为统一批改结果主表,避免客观/主观分表回退。
  • 推荐闭环暂存于 question 时,需定义清晰子包边界,避免与习题核心耦合扩散。

4) 租户隔离策略

  • 所有 hw_* / gd_* / rc_* 读写统一按 tenant_id 强过滤。
  • 跨表关联submission->student、assignment->class、recommendation->user均执行租户一致性断言。
  • 对 AI 生成、图检索、向量检索调用记录 tenant 维度与来源对象,便于追溯越权风险。

问题点与风险

  • question 当前“超大域”承载习题+复习+讲解+推荐,若不先做包级拆分,后续维护成本会快速上升。
  • 目前无运行时代码,尽管 SQL 完整,但缺业务规则执行层,容易出现“表有字段、行为缺失”。
  • target_ref_id 弱关联容易引发错投放与越权读取。
  • 功能清单的变式题追踪链路在现有表中仍缺专门任务模型。

需确认的设计决策

  • 推荐相关 rc_* 是短期保留在 question,还是本阶段即拆到 recommendation 独立服务。
  • 变式题生成首期是否强依赖 AI 服务,或先以规则模板生成保障可交付。
  • 费曼评估通过阈值与回流规则(与系统文档口径)是否纳入一期强约束。