feat: update personal stats and cms change reuqest method

This commit is contained in:
2026-06-12 11:11:48 +08:00
parent f2dcf3d490
commit 2fab2be0a1
12 changed files with 546 additions and 43 deletions
+17 -4
View File
@@ -6,9 +6,11 @@ from apps.case.models import CaseBase
# ─── 只读镜像(fastapi 属主)────────────────────────────────────────────────────
# 训练相关表(training_record / training_session / training_submission /
# user_learning_profiles 等)的 schema 属主是 fastapi 服务。Django 侧一律 managed=False、
# 只读接入,供 CMS 查询训练记录/统计,不写。
# ⚠️ 下方字段为当前最佳镜像,正式接入前应以 `python manage.py inspectdb` 对真实库反向校准
# (真实表清单见《项目架构设计.md》第二节;注意真实库中没有 training_score_detail
# 只读接入,供 CMS 查询训练记录、移动端个人中心统计/分析,不写。
# ✅ 已用 `python manage.py inspectdb training_record training_score_detail` 对本地同步库
# (medical_platform) 反向校准:下方字段与真实列一致;两张表均已存在
# 注意 training_score_detail 真实表「无 max_score 列」,故得分率需从
# training_record.ai_feedback_structured.dimension_scores(带 max_score)取数。
class TrainingRecord(BaseModel):
@@ -66,6 +68,12 @@ class TrainingRecord(BaseModel):
emotion_analysis = models.JSONField('情绪分析', default=dict, blank=True)
prompt_version = models.CharField('Prompt版本', max_length=50, blank=True)
rag_context_version = models.CharField('知识上下文版本', max_length=50, blank=True)
# 与公网真实表对齐(inspectdb 校准补充列)
external_user_id = models.CharField('宿主系统用户ID', max_length=128, blank=True, default='')
session_id = models.BigIntegerField('训练会话ID', null=True, blank=True)
evaluation_record_id = models.BigIntegerField('评价记录ID', null=True, blank=True)
score_type = models.CharField('分数类型', max_length=20, blank=True, default='percentage')
pdf_file_path = models.CharField('报告PDF路径', max_length=512, null=True, blank=True)
class Meta:
managed = False
@@ -78,7 +86,12 @@ class TrainingRecord(BaseModel):
class TrainingScoreDetail(BaseModel):
"""评分明细表(只读占位managed=False;真实 fastapi 库无此表,接入时以真实 schema 为准)"""
"""评分明细表(只读,managed=Falsefastapi 属主)。
经 inspectdb 校准:真实表含 record_id/rule_id/dimension/score/deducted_reason/
evidence_message_ids/ai_confidence/comment 等列,**无 max_score 列**。
雷达/得分率改从 training_record.ai_feedback_structured.dimension_scores 取数(带 max_score)。
"""
id = models.BigAutoField(primary_key=True)
record = models.ForeignKey(
TrainingRecord, on_delete=models.CASCADE,