# Generated by Django 4.2 on 2026-04-04 01:23 from django.conf import settings from django.db import migrations, models import django.db.models.deletion import uuid class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name="Meeting", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("topic", models.CharField(max_length=200, verbose_name="会议主题")), ( "status", models.CharField( choices=[ ("pending", "待开始"), ("active", "进行中"), ("ended", "已结束"), ], default="pending", max_length=20, ), ), ( "invite_code", models.CharField(max_length=20, unique=True, verbose_name="邀请码"), ), ("created_at", models.DateTimeField(auto_now_add=True)), ("started_at", models.DateTimeField(blank=True, null=True)), ("ended_at", models.DateTimeField(blank=True, null=True)), ( "host", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="hosted_meetings", to=settings.AUTH_USER_MODEL, ), ), ], options={ "verbose_name": "会议室", "verbose_name_plural": "会议室", "db_table": "meetings", "ordering": ["-created_at"], }, ), migrations.CreateModel( name="Participant", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "agent_type", models.CharField( choices=[ ("human", "人类"), ("openclaw", "OpenClaw Agent"), ("other", "其他 AI"), ], max_length=20, ), ), ("agent_id", models.CharField(blank=True, max_length=100, null=True)), ( "agent_name", models.CharField(max_length=100, verbose_name="Agent 名称"), ), ( "agent_emoji", models.CharField( default="🤖", max_length=10, verbose_name="Agent 表情" ), ), ("nickname", models.CharField(max_length=100, verbose_name="昵称")), ("is_host", models.BooleanField(default=False)), ("joined_at", models.DateTimeField(auto_now_add=True)), ("left_at", models.DateTimeField(blank=True, null=True)), ("api_key", models.CharField(blank=True, max_length=255, null=True)), ( "meeting", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="participants", to="meetings.meeting", ), ), ( "user", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, ), ), ], options={ "verbose_name": "参会者", "verbose_name_plural": "参会者", "db_table": "participants", }, ), migrations.CreateModel( name="Message", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("content", models.TextField()), ("created_at", models.DateTimeField(auto_now_add=True)), ( "is_broadcast", models.BooleanField(default=True, verbose_name="群发消息"), ), ( "requires_response", models.BooleanField(default=False, verbose_name="需要回复"), ), ( "in_reply_to", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="replies", to="meetings.message", ), ), ( "meeting", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="messages", to="meetings.meeting", ), ), ( "read_by", models.ManyToManyField( blank=True, related_name="read_messages", to="meetings.participant", ), ), ( "sender", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="sent_messages", to="meetings.participant", ), ), ], options={ "verbose_name": "消息", "verbose_name_plural": "消息", "db_table": "messages", "ordering": ["created_at"], }, ), migrations.CreateModel( name="MeetingMinutes", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("content", models.TextField()), ("generated_at", models.DateTimeField(auto_now_add=True)), ("exported_at", models.DateTimeField(blank=True, null=True)), ( "meeting", models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, related_name="minutes", to="meetings.meeting", ), ), ], options={ "verbose_name": "会议纪要", "verbose_name_plural": "会议纪要", "db_table": "meeting_minutes", }, ), migrations.AddIndex( model_name="participant", index=models.Index( fields=["meeting", "agent_id"], name="participant_meeting_74488d_idx" ), ), migrations.AddIndex( model_name="participant", index=models.Index( fields=["agent_type", "meeting"], name="participant_agent_t_c4a9dc_idx" ), ), migrations.AddIndex( model_name="message", index=models.Index( fields=["meeting", "created_at"], name="messages_meeting_b69008_idx" ), ), migrations.AddIndex( model_name="message", index=models.Index( fields=["is_broadcast", "created_at"], name="messages_is_broa_fae706_idx", ), ), ]