# Generated by Django 6.0.5 on 2026-05-26 07:02 import django.db.models.deletion from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ('case', '0001_initial'), ] operations = [ migrations.CreateModel( name='TrainingScoreDetail', fields=[ ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')), ('id', models.BigAutoField(primary_key=True, serialize=False)), ('dimension', models.CharField(max_length=50, verbose_name='评分维度')), ('score', models.DecimalField(decimal_places=2, max_digits=5, verbose_name='分数')), ('deducted_reason', models.TextField(blank=True, verbose_name='扣分原因')), ('evidence_message_ids', models.JSONField(blank=True, default=list, verbose_name='对应对话证据')), ('ai_confidence', models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, verbose_name='AI评分置信度')), ('comment', models.TextField(blank=True, verbose_name='评语')), ], options={ 'verbose_name': '评分明细', 'verbose_name_plural': '评分明细', 'db_table': 'training_score_detail', }, ), migrations.CreateModel( name='TrainingRecord', fields=[ ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')), ('id', models.BigAutoField(primary_key=True, serialize=False)), ('training_mode', models.CharField(choices=[('novice', '新手'), ('practice', '练习'), ('exam', '考试')], max_length=50, verbose_name='训练模式')), ('case_type', models.CharField(blank=True, max_length=30, verbose_name='病例类型')), ('start_time', models.DateTimeField(auto_now_add=True, verbose_name='开始时间')), ('end_time', models.DateTimeField(blank=True, null=True, verbose_name='结束时间')), ('duration_seconds', models.IntegerField(blank=True, null=True, verbose_name='训练时长')), ('total_score', models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, verbose_name='总分')), ('ai_score', models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, verbose_name='AI评分')), ('teacher_score', models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, verbose_name='教师评分')), ('evaluation_level', models.CharField(blank=True, choices=[('excellent', '优秀'), ('good', '良好'), ('average', '一般'), ('poor', '较差')], max_length=20, verbose_name='评价等级')), ('status', models.CharField(choices=[('in_progress', '进行中'), ('completed', '已完成'), ('aborted', '已中断')], default='in_progress', max_length=30, verbose_name='状态')), ('feedback', models.TextField(blank=True, verbose_name='总评')), ('thinking_chain', models.TextField(blank=True, verbose_name='临床推理链')), ('diagnosis_path', models.TextField(blank=True, verbose_name='诊断路径')), ('wrong_points', models.JSONField(blank=True, default=list, verbose_name='错误知识点')), ('missed_questions', models.JSONField(blank=True, default=list, verbose_name='漏问项')), ('recommendation_result', models.JSONField(blank=True, default=dict, verbose_name='AI推荐')), ('ai_feedback_structured', models.JSONField(blank=True, default=dict, verbose_name='AI结构化反馈')), ('osce_station_score', models.JSONField(blank=True, default=dict, verbose_name='OSCE各站点成绩')), ('interruption_count', models.IntegerField(default=0, verbose_name='中断次数')), ('emotion_analysis', models.JSONField(blank=True, default=dict, verbose_name='情绪分析')), ('prompt_version', models.CharField(blank=True, max_length=50, verbose_name='Prompt版本')), ('rag_context_version', models.CharField(blank=True, max_length=50, verbose_name='知识上下文版本')), ('case', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='training_records', to='case.casebase', verbose_name='病例')), ], options={ 'verbose_name': '训练记录', 'verbose_name_plural': '训练记录', 'db_table': 'training_record', }, ), ]