跨模块数据契约(核心字段)
1) 用户(User)
- user_id:UUID(中台统一)
- username:登录名(唯一)
- role:
teacher | student
2) 知识点(KnowledgePoint)
- knowledge_code:字符串(跨模块稳定主键,强烈建议人工规划编码体系)
- name:知识点名称(如“一元一次方程”)
- grade:
junior(可扩展七/八/九年级)
3) 题目(Exercise)
- exercise_id:UUID(中台题库)或外部题库 ID 映射
- title/body:题干
- knowledge_code:题目关联的知识点编码
- difficulty:1-5(可选)
4) 作答记录(Attempt)
- attempt_id:UUID
- user_id
- exercise_id
- answer:学生答案(文本/LaTeX)
- is_correct / score:判题结果(可空,支持异步回填)
- created_at
5) 数字人问答(Chat)
- session_id:UUID
- user_id
- messages[]:
{sender: "user"|"assistant", content, created_at}
- knowledge_code:可选(用于统计与推荐)
6) 推荐(Recommendation)
- item_type:
exercise | knowledge | lesson
- item_ref:外部引用(exercise_id / knowledge_code / lesson_id 等)
- reason:推荐原因(可选)
事件规范(可选,便于异步解耦)
当前实现先走 REST;后续上消息队列时可直接沿用这些事件结构。
attempt.submitted
attempt_id, user_id, exercise_id, knowledge_code?, answer, created_at
attempt.graded
attempt_id, is_correct, score, rubric?, feedback?
chat.asked
session_id, user_id, question, knowledge_code?, created_at
chat.answered
session_id, answer, sources[]
recommendation.generated