3.6 KiB
3.6 KiB
问题陈述
将 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 服务,或先以规则模板生成保障可交付。
- 费曼评估通过阈值与回流规则(与系统文档口径)是否纳入一期强约束。