# Generated by Django 6.0.8 on 2026-08-08 07:53 import django.db.models.deletion import uuid from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ('crawler', '0001_initial'), ] operations = [ migrations.CreateModel( name='Ad', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('divar_token', models.CharField(max_length=50, unique=True)), ('title', models.CharField(max_length=255)), ('description', models.TextField()), ('price', models.CharField(blank=True, max_length=100, null=True)), ('category', models.CharField(blank=True, max_length=100, null=True)), ('images', models.JSONField(default=list)), ('url', models.URLField()), ('created_at', models.DateTimeField(auto_now_add=True)), ('published_at', models.DateTimeField(blank=True, null=True)), ], options={ 'indexes': [models.Index(fields=['created_at'], name='ads_ad_created_9f5b83_idx')], }, ), migrations.CreateModel( name='AdEvaluation', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('is_flagged', models.BooleanField(default=False)), ('reason', models.TextField(blank=True, null=True)), ('confidence', models.FloatField(blank=True, null=True)), ('extracted_fields', models.JSONField(default=dict)), ('evaluated_at', models.DateTimeField(auto_now_add=True)), ('ad', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='evaluations', to='ads.ad')), ('crawl_task', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='evaluations', to='crawler.crawltask')), ], ), migrations.CreateModel( name='NotificationLog', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('channel_id', models.CharField(max_length=100)), ('sent_at', models.DateTimeField(auto_now_add=True)), ('status', models.CharField(choices=[('SENT', 'Sent'), ('FAILED', 'Failed')], max_length=20)), ('error_message', models.TextField(blank=True, null=True)), ('evaluation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notifications', to='ads.adevaluation')), ], options={ 'abstract': False, }, ), migrations.AddIndex( model_name='adevaluation', index=models.Index(fields=['is_flagged'], name='ads_adevalu_is_flag_1e9b55_idx'), ), migrations.AddIndex( model_name='adevaluation', index=models.Index(fields=['evaluated_at'], name='ads_adevalu_evaluat_9e55c2_idx'), ), migrations.AddConstraint( model_name='adevaluation', constraint=models.UniqueConstraint(fields=('crawl_task', 'ad'), name='unique_crawl_task_ad'), ), ]