# Generated by Django 5.2.11 on 2026-02-11 17:02

import django.db.models.deletion
import uuid
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('tenant', '0001_initial'),
    ]

    operations = [
        migrations.CreateModel(
            name='SearchIndexDeadLetter',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('entity_type', models.CharField(db_index=True, max_length=100, verbose_name='نوع موجودیت')),
                ('entity_id', models.UUIDField(verbose_name='شناسه موجودیت')),
                ('operation', models.CharField(choices=[('index', 'ایندکس'), ('update', 'بروزرسانی'), ('delete', 'حذف'), ('bulk_index', 'ایندکس دسته\u200cای'), ('reindex', 'بازسازی ایندکس')], max_length=20, verbose_name='عملیات')),
                ('payload', models.JSONField(blank=True, default=dict, verbose_name='داده')),
                ('retry_count', models.PositiveIntegerField(default=0, verbose_name='تعداد تلاش\u200cهای انجام شده')),
                ('error_message', models.TextField(blank=True, null=True, verbose_name='پیام خطا')),
                ('stack_trace', models.TextField(blank=True, null=True, verbose_name='Stack Trace')),
                ('original_created_at', models.DateTimeField(verbose_name='تاریخ ایجاد اصلی')),
                ('failed_at', models.DateTimeField(auto_now_add=True, verbose_name='تاریخ شکست')),
                ('resolved', models.BooleanField(default=False, verbose_name='حل شده')),
                ('resolved_at', models.DateTimeField(blank=True, null=True, verbose_name='تاریخ حل')),
                ('tenant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_set', to='tenant.tenant')),
            ],
            options={
                'verbose_name': 'نامه مرده ایندکس',
                'verbose_name_plural': 'نامه\u200cهای مرده ایندکس',
                'db_table': 'search_index_dead_letter',
                'ordering': ['-failed_at'],
                'indexes': [models.Index(fields=['entity_type'], name='search_inde_entity__64feb8_idx'), models.Index(fields=['resolved'], name='search_inde_resolve_2b009b_idx'), models.Index(fields=['failed_at'], name='search_inde_failed__9300d7_idx')],
            },
        ),
        migrations.CreateModel(
            name='SearchIndexQueue',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('entity_type', models.CharField(db_index=True, help_text='نوع entity (مثلاً task, workflow, part)', max_length=100, verbose_name='نوع موجودیت')),
                ('entity_id', models.UUIDField(db_index=True, verbose_name='شناسه موجودیت')),
                ('operation', models.CharField(choices=[('index', 'ایندکس'), ('update', 'بروزرسانی'), ('delete', 'حذف'), ('bulk_index', 'ایندکس دسته\u200cای'), ('reindex', 'بازسازی ایندکس')], default='index', max_length=20, verbose_name='عملیات')),
                ('payload', models.JSONField(blank=True, default=dict, help_text='داده\u200cهای لازم برای ایندکس', verbose_name='داده')),
                ('retry_count', models.PositiveIntegerField(default=0, verbose_name='تعداد تلاش')),
                ('max_retries', models.PositiveIntegerField(default=5, verbose_name='حداکثر تلاش')),
                ('status', models.CharField(choices=[('pending', 'در انتظار'), ('processing', 'در حال پردازش'), ('completed', 'تکمیل شده'), ('failed', 'با خطا'), ('dead_letter', 'نامه مرده')], db_index=True, default='pending', max_length=20, verbose_name='وضعیت')),
                ('priority', models.PositiveIntegerField(default=50, help_text='عدد بالاتر = اولویت بیشتر', verbose_name='اولویت')),
                ('error_message', models.TextField(blank=True, null=True, verbose_name='پیام خطا')),
                ('created_at', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='تاریخ ایجاد')),
                ('processed_at', models.DateTimeField(blank=True, null=True, verbose_name='تاریخ پردازش')),
                ('next_retry_at', models.DateTimeField(blank=True, null=True, verbose_name='زمان تلاش بعدی')),
                ('tenant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_set', to='tenant.tenant')),
            ],
            options={
                'verbose_name': 'صف ایندکس جستجو',
                'verbose_name_plural': 'صف ایندکس جستجو',
                'db_table': 'search_index_queue',
                'ordering': ['-priority', 'created_at'],
                'indexes': [models.Index(fields=['status', '-priority', 'created_at'], name='search_inde_status_3da70b_idx'), models.Index(fields=['entity_type', 'entity_id'], name='search_inde_entity__4309be_idx'), models.Index(fields=['next_retry_at'], name='search_inde_next_re_4f3852_idx')],
            },
        ),
    ]
