Files
2026-06-10 11:02:12 +08:00

6.6 KiB
Raw Permalink Blame History

数据库说明

本文档说明医疗问诊 Agent FastAPI 后端依赖的核心数据表、读写边界和交接注意事项。

1. 数据库边界

当前服务连接平台 MySQL 数据库 medical。用户、机构、科室由 Django 平台维护;FastAPI 只读取用户上下文,不负责注册登录。

FastAPI 主要负责:

  • 读取病例、教学题、检查项、评分规则
  • 写入训练会话过程中的提交结果
  • 完整训练结束后写入训练记录和评分明细
  • 生成 PDF 文件路径和导出状态
  • 后台预留知识库相关表

2. 用户与组织表

user

说明
来源 Django 用户中心
FastAPI 用途 通过 /api/user/users/me/ 获取用户身份
关键字段 idusernamereal_namephonerole_typeinstitution_iddepartment_idstatus
写入方 Django
FastAPI 是否写入

FastAPI 使用 Django 返回的 id 作为业务 user_id

institution

说明
来源 Django / 平台数据库
FastAPI 用途 学习助手知识库按机构隔离
关键字段 idname
写入方 Django 或平台后台
FastAPI 是否写入

department

说明
来源 平台数据库
FastAPI 用途 病例科室、评分规则、知识库筛选
关键字段 idnamecategoryinstitution_id
写入方 平台后台
FastAPI 是否写入

3. 病例与训练基础表

case_base

说明
用途 病例主表,训练和教学互动共用
读取模块 病例列表、病例详情、训练会话、教学互动
关键字段 iddepartment_idtitledifficultycase_typestatus
写入方 平台病例解析 / 后台维护
FastAPI 是否写入

traditional_case

说明
用途 练习模式传统病例详情
读取模块 训练会话、Patient Agent、Scoring Agent
关键字段 case_id、主诉、现病史、既往史、查体、辅助检查、诊断、治疗
写入方 平台病例解析 / 后台维护
FastAPI 是否写入

teaching_case

说明
用途 教学互动病例和题目数据
读取模块 教学互动列表、教学互动评价
关键字段 case_id、题目、选项、答案、解析、视频
写入方 平台病例解析 / 后台维护
FastAPI 是否写入

case_exam_item

说明
用途 当前病例可申请的体格检查和辅助检查项
读取模块 检查列表、检查结果、评价
关键字段 case_iditem_codeitem_nameitem_typeresult_text
写入方 平台病例解析 / 后台维护
FastAPI 是否写入

检查结果必须来自该表,不允许 LLM 编造。

scoring_rule

说明
用途 AI 评价基础评分规则
读取模块 Scoring Agent、教学互动评价
关键字段 case_iddepartment_id、评分维度、分值、规则内容
写入方 平台后台
FastAPI 是否写入

4. 训练记录表

training_sessions

说明
用途 训练过程会话状态
写入模块 新建会话、阶段流转
关键字段 idsession_uiduser_idcase_idmodestatuspatient_config
访问隔离 必须按 user_id 查询

session_orders

说明
用途 记录当前会话已申请检查
写入模块 体格检查 / 辅助检查结果接口
关键字段 session_iditem_coderesult_textalready_ordered
重要规则 同一会话同一 item_code 幂等,不重复写入

session_submissions

说明
用途 保存诊断和治疗提交内容
写入模块 提交诊断、提交治疗
关键字段 session_idsubmission_typecontent

session_runtime_messages

说明
用途 调试或短期会话消息辅助表
规则 长期历史不以完整聊天记录为主,正式上下文优先走 Redis 短期 memory

training_record

说明
用途 完整训练结束后的长期记录
写入模块 生成评价、教学互动评价
关键字段 iduser_idcase_idscore_typetotal_scorereport_summarypdf_path
重要规则 中断、退出、未完成流程不写入

training_score_detail

说明
用途 评分明细表
写入模块 训练评价、教学互动评价
关键字段 record_idrule_iddimensionscorededucted_reasonevidence_message_idsai_confidencecomment

5. 知识库预留表

kb_knowledge_space

说明
用途 机构知识空间和 Milvus collection 映射
关键字段 institution_idcollection_nameembedding_modelembedding_dimstatus

kb_knowledge_document

说明
用途 内容管理员上传 PDF 的元数据
关键字段 institution_iduploaded_byfile_namefile_sha256statusparse_statusembedding_statuschunk_count

kb_knowledge_chunk

说明
用途 PDF 分片文本和页码来源
关键字段 document_idinstitution_idchunk_uidpage_startpage_endchunk_text

kb_knowledge_ingestion_task

说明
用途 PDF 入库任务进度
关键字段 document_idinstitution_idstatusprogresscurrent_steperror_message

kb_knowledge_query_log

说明
用途 AI 学习助手 RAG 查询日志
关键字段 user_idinstitution_idquestionretrieval_hitretrieved_chunk_idsanswer_summary、耗时字段

当前阶段 AI 学习助手不强依赖知识库存在;没有知识库时仍会调用 LLM 流式回答。

6. Redis 数据

Redis 用于短期会话 memory

  • 会话创建时初始化
  • 问诊、检查结果、诊断治疗提交时写入
  • 评价生成后释放
  • TTL 到期后自动过期

Redis 不作为长期训练历史存储。

7. 数据库交接注意事项

  • FastAPI 不维护用户注册登录。
  • FastAPI 不直接修改病例基础数据。
  • 训练记录按 user_id 隔离。
  • 检查结果只从 case_exam_item 返回。
  • 评价生成后才写长期训练记录。
  • 知识库表是生产扩展点,真实大规模入库前需要压测。