Files

147 lines
9.3 KiB
Python
Raw Permalink Normal View History

# Generated by Django 6.0.5 on 2026-05-26 07:02
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='CaseBase',
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)),
('title', models.CharField(max_length=255, verbose_name='病例标题')),
('case_type', models.CharField(choices=[('traditional', '传统病例'), ('script', '剧本病例'), ('teaching', '教学互动病例'), ('osce', 'OSCE')], max_length=30, verbose_name='病例类型')),
('difficulty', models.CharField(blank=True, max_length=20, verbose_name='难度')),
('difficulty_score', models.IntegerField(blank=True, null=True, verbose_name='AI难度评分')),
('chief_complaint', models.TextField(blank=True, verbose_name='主诉')),
('description', models.TextField(blank=True, verbose_name='病例简介')),
('patient_age', models.IntegerField(blank=True, null=True, verbose_name='患者年龄')),
('patient_gender', models.CharField(blank=True, max_length=10, verbose_name='患者性别')),
('tags', models.CharField(blank=True, max_length=500, verbose_name='标签')),
('symptom_tags', models.JSONField(blank=True, default=list, verbose_name='症状标签')),
('disease_tags', models.JSONField(blank=True, default=list, verbose_name='疾病标签')),
('competency_tags', models.JSONField(blank=True, default=list, verbose_name='能力标签')),
('guideline_tags', models.JSONField(blank=True, default=list, verbose_name='指南标签')),
('knowledge_points', models.JSONField(blank=True, default=list, verbose_name='知识点')),
('icd_codes', models.CharField(blank=True, max_length=500, verbose_name='ICD编码')),
('estimated_minutes', models.IntegerField(blank=True, null=True, verbose_name='预计训练时长')),
('osce_enabled', models.BooleanField(default=False, verbose_name='是否OSCE')),
('rag_enabled', models.BooleanField(default=False, verbose_name='是否启用知识增强')),
('ai_prompt_template', models.TextField(blank=True, verbose_name='AI角色Prompt')),
('multimodal_assets', models.JSONField(blank=True, default=dict, verbose_name='图片/影像/附件')),
('vector_status', models.SmallIntegerField(default=0, verbose_name='是否向量化')),
('publish_status', models.SmallIntegerField(choices=[(0, '草稿'), (1, '已发布'), (2, '已下架')], default=0, verbose_name='发布状态')),
('status', models.SmallIntegerField(choices=[(0, '禁用'), (1, '正常')], default=1, verbose_name='状态')),
],
options={
'verbose_name': '病例',
'verbose_name_plural': '病例',
'db_table': 'case_base',
},
),
migrations.CreateModel(
name='CaseStage',
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)),
('stage_type', models.CharField(blank=True, max_length=50, verbose_name='阶段类型')),
('stage_name', models.CharField(max_length=100, verbose_name='阶段名称')),
('stage_mode', models.CharField(choices=[('dialogue', '对话'), ('osce', 'OSCE'), ('choice', '选择')], default='dialogue', max_length=30, verbose_name='阶段模式')),
('stage_goal', models.TextField(blank=True, verbose_name='阶段目标')),
('ai_role_prompt', models.TextField(blank=True, verbose_name='AI阶段Prompt')),
('standard_action', models.TextField(blank=True, verbose_name='标准动作')),
('expected_questions', models.TextField(blank=True, verbose_name='期望问题')),
('scoring_points', models.TextField(blank=True, verbose_name='评分点')),
('timeout_seconds', models.IntegerField(blank=True, null=True, verbose_name='超时时间')),
('unlock_condition', models.CharField(blank=True, max_length=255, verbose_name='解锁条件')),
('sort_order', models.IntegerField(default=0, verbose_name='排序')),
],
options={
'verbose_name': '病例阶段',
'verbose_name_plural': '病例阶段',
'db_table': 'case_stage',
'ordering': ['sort_order', 'id'],
},
),
migrations.CreateModel(
name='ScoringRule',
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='评分维度')),
('competency_dimension', models.CharField(blank=True, max_length=50, verbose_name='能力维度')),
('score_weight', models.DecimalField(decimal_places=2, default=1.0, max_digits=5, verbose_name='权重')),
('ai_auto_score', models.BooleanField(default=False, verbose_name='AI自动评分')),
('osce_dimension', models.BooleanField(default=False, verbose_name='是否OSCE')),
('scoring_standard', models.TextField(blank=True, verbose_name='评分标准')),
('rubric_json', models.JSONField(blank=True, default=dict, verbose_name='评分Rubric')),
],
options={
'verbose_name': '评分规则',
'verbose_name_plural': '评分规则',
'db_table': 'scoring_rule',
},
),
migrations.CreateModel(
name='ScriptCase',
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)),
('scenario_setting', models.TextField(blank=True, verbose_name='场景设定')),
('emotional_state', models.CharField(blank=True, max_length=50, verbose_name='情绪状态')),
('cultural_level', models.CharField(blank=True, max_length=50, verbose_name='文化水平')),
('branch_logic', models.TextField(blank=True, verbose_name='分支逻辑')),
('hidden_clues', models.TextField(blank=True, verbose_name='隐藏线索')),
],
options={
'verbose_name': '剧本病例',
'verbose_name_plural': '剧本病例',
'db_table': 'script_case',
},
),
migrations.CreateModel(
name='TeachingCase',
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)),
('teaching_goal', models.TextField(blank=True, verbose_name='教学目标')),
('discussion_questions', models.TextField(blank=True, verbose_name='讨论问题')),
('teacher_guide', models.TextField(blank=True, verbose_name='教师指南')),
('scoring_focus', models.TextField(blank=True, verbose_name='评分重点')),
],
options={
'verbose_name': '教学互动病例',
'verbose_name_plural': '教学互动病例',
'db_table': 'teaching_case',
},
),
migrations.CreateModel(
name='TraditionalCase',
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)),
('standard_diagnosis', models.TextField(blank=True, verbose_name='标准诊断')),
('standard_treatment', models.TextField(blank=True, verbose_name='标准治疗')),
('guideline_reference', models.TextField(blank=True, verbose_name='指南参考')),
],
options={
'verbose_name': '传统病例',
'verbose_name_plural': '传统病例',
'db_table': 'traditional_case',
},
),
]