# Generated by Django 4.2.4 on 2025-11-17 04:44

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
        ('bazi', '0021_bazi_group_relation'),
        ('ai', '0008_prompttemplate_language'),
    ]

    operations = [
        migrations.CreateModel(
            name='Conversation',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(blank=True, help_text='Optional title for the conversation', max_length=200, verbose_name='Title')),
                ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
                ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')),
                ('context_summary', models.TextField(blank=True, help_text='AI-generated summary of older conversation messages', null=True, verbose_name='Context Summary')),
                ('context_summary_updated_at', models.DateTimeField(blank=True, help_text='When the context summary was last updated', null=True, verbose_name='Context Summary Updated At')),
                ('last_summarized_message_id', models.IntegerField(blank=True, help_text='ID of the last message included in the summary', null=True, verbose_name='Last Summarized Message ID')),
                ('person', models.ForeignKey(help_text='The BaZi chart this conversation is about', on_delete=django.db.models.deletion.CASCADE, related_name='conversations', to='bazi.person', verbose_name='Person')),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='conversations', to=settings.AUTH_USER_MODEL, verbose_name='User')),
            ],
            options={
                'verbose_name': 'Conversation',
                'verbose_name_plural': 'Conversations',
                'ordering': ['-updated_at'],
            },
        ),
        migrations.CreateModel(
            name='Message',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('role', models.CharField(choices=[('user', 'User'), ('assistant', 'Assistant')], help_text='Whether this message is from the user or assistant', max_length=10, verbose_name='Role')),
                ('content', models.TextField(verbose_name='Content')),
                ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
                ('provider', models.CharField(blank=True, choices=[('groq', 'Groq'), ('openai', 'OpenAI')], help_text='AI provider used for this message', max_length=20, null=True, verbose_name='AI Provider')),
                ('model', models.CharField(blank=True, help_text='AI model used for this message', max_length=100, null=True, verbose_name='Model')),
                ('meta', models.JSONField(blank=True, default=dict, help_text='Additional metadata about the message', verbose_name='Metadata')),
                ('conversation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='messages', to='ai.conversation', verbose_name='Conversation')),
            ],
            options={
                'verbose_name': 'Message',
                'verbose_name_plural': 'Messages',
                'ordering': ['created_at'],
                'indexes': [models.Index(fields=['conversation', 'created_at'], name='ai_message_convers_0cc073_idx')],
            },
        ),
        migrations.AddIndex(
            model_name='conversation',
            index=models.Index(fields=['user', '-updated_at'], name='ai_conversa_user_id_139fba_idx'),
        ),
        migrations.AddIndex(
            model_name='conversation',
            index=models.Index(fields=['person', '-updated_at'], name='ai_conversa_person__192482_idx'),
        ),
    ]
