# Generated by Django 5.2.1 on 2025-05-29 09:24 import django.db.models.deletion import uuid from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ] operations = [ migrations.CreateModel( name='Brand', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('name', models.CharField(max_length=100, unique=True, verbose_name='品牌名称')), ('description', models.TextField(blank=True, null=True, verbose_name='品牌描述')), ('logo_url', models.CharField(blank=True, max_length=255, null=True, verbose_name='品牌Logo')), ('category', models.CharField(blank=True, max_length=100, null=True, verbose_name='品牌分类')), ('source', models.CharField(blank=True, max_length=100, null=True, verbose_name='来源')), ('collab_count', models.IntegerField(default=0, verbose_name='合作数量')), ('creators_count', models.IntegerField(default=0, verbose_name='创作者数量')), ('campaign_id', models.CharField(blank=True, max_length=100, null=True, verbose_name='活动ID')), ('total_gmv_achieved', models.DecimalField(decimal_places=2, default=0, max_digits=12, verbose_name='总GMV')), ('total_views_achieved', models.DecimalField(decimal_places=2, default=0, max_digits=12, verbose_name='总浏览量')), ('shop_overall_rating', models.DecimalField(decimal_places=1, default=0.0, max_digits=3, verbose_name='店铺评分')), ('dataset_id_list', models.JSONField(blank=True, default=list, help_text='所有关联的知识库ID列表', verbose_name='知识库ID列表')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')), ('is_active', models.BooleanField(default=True, verbose_name='是否激活')), ], options={ 'verbose_name': '品牌', 'verbose_name_plural': '品牌', }, ), migrations.CreateModel( name='Product', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('name', models.CharField(max_length=100, verbose_name='产品名称')), ('description', models.TextField(blank=True, null=True, verbose_name='产品描述')), ('image_url', models.CharField(blank=True, max_length=255, null=True, verbose_name='产品图片')), ('pid', models.CharField(blank=True, max_length=100, null=True, verbose_name='产品ID')), ('commission_rate', models.DecimalField(decimal_places=2, default=0, max_digits=5, verbose_name='佣金率')), ('open_collab', models.DecimalField(decimal_places=2, default=0, max_digits=5, verbose_name='开放合作率')), ('available_samples', models.IntegerField(default=0, verbose_name='可用样品数')), ('sales_price_min', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='最低销售价')), ('sales_price_max', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='最高销售价')), ('stock', models.IntegerField(default=0, verbose_name='库存')), ('items_sold', models.IntegerField(default=0, verbose_name='已售数量')), ('product_rating', models.DecimalField(decimal_places=1, default=0, max_digits=3, verbose_name='产品评分')), ('reviews_count', models.IntegerField(default=0, verbose_name='评价数量')), ('collab_creators', models.IntegerField(default=0, verbose_name='合作创作者数')), ('tiktok_shop', models.BooleanField(default=False, verbose_name='是否TikTok商店')), ('dataset_id', models.CharField(help_text='外部知识库系统中的ID', max_length=100, verbose_name='知识库ID')), ('external_id', models.CharField(blank=True, help_text='外部系统中的唯一标识', max_length=100, null=True, verbose_name='外部ID')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')), ('is_active', models.BooleanField(default=True, verbose_name='是否激活')), ('brand', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='products', to='brands.brand', verbose_name='所属品牌')), ], options={ 'verbose_name': '产品', 'verbose_name_plural': '产品', }, ), migrations.CreateModel( name='Campaign', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255, verbose_name='活动名称')), ('description', models.TextField(blank=True, null=True, verbose_name='活动描述')), ('image_url', models.CharField(blank=True, max_length=255, null=True, verbose_name='活动图片')), ('service', models.CharField(blank=True, max_length=100, null=True, verbose_name='服务类型')), ('creator_type', models.CharField(blank=True, max_length=100, null=True, verbose_name='创作者类型')), ('creator_level', models.CharField(blank=True, max_length=100, null=True, verbose_name='创作者等级')), ('creator_category', models.CharField(blank=True, max_length=100, null=True, verbose_name='创作者分类')), ('creators_count', models.IntegerField(default=0, verbose_name='创作者数量')), ('gmv', models.CharField(blank=True, max_length=100, null=True, verbose_name='GMV范围')), ('followers', models.CharField(blank=True, max_length=100, null=True, verbose_name='粉丝数范围')), ('views', models.CharField(blank=True, max_length=100, null=True, verbose_name='浏览量范围')), ('budget', models.CharField(blank=True, max_length=100, null=True, verbose_name='预算范围')), ('start_date', models.DateTimeField(blank=True, null=True, verbose_name='开始日期')), ('end_date', models.DateTimeField(blank=True, null=True, verbose_name='结束日期')), ('dataset_id', models.CharField(help_text='外部知识库系统中的ID', max_length=100, verbose_name='知识库ID')), ('external_id', models.CharField(blank=True, help_text='外部系统中的唯一标识', max_length=100, null=True, verbose_name='外部ID')), ('status', models.CharField(choices=[('pending', '待处理'), ('accepted', '已接受'), ('rejected', '已拒绝'), ('completed', '已完成'), ('in_progress', '进行中')], default='pending', max_length=20, verbose_name='状态')), ('gmv_achieved', models.CharField(blank=True, max_length=50, null=True, verbose_name='实现GMV')), ('views_achieved', models.CharField(blank=True, max_length=50, null=True, verbose_name='实现观看量')), ('video_link', models.URLField(blank=True, max_length=255, null=True, verbose_name='视频链接')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')), ('is_active', models.BooleanField(default=True, verbose_name='是否激活')), ('brand', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='campaigns', to='brands.brand', verbose_name='所属品牌')), ('link_product', models.ManyToManyField(blank=True, related_name='campaigns', to='brands.product', verbose_name='关联产品')), ], options={ 'verbose_name': '活动', 'verbose_name_plural': '活动', }, ), migrations.CreateModel( name='BrandChatSession', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('session_id', models.CharField(max_length=100, unique=True, verbose_name='会话ID')), ('title', models.CharField(default='新对话', max_length=200, verbose_name='会话标题')), ('dataset_id_list', models.JSONField(blank=True, default=list, verbose_name='知识库ID列表')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')), ('is_active', models.BooleanField(default=True, verbose_name='是否激活')), ('brand', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='chat_sessions', to='brands.brand', verbose_name='品牌')), ], options={ 'verbose_name': '品牌聊天会话', 'verbose_name_plural': '品牌聊天会话', 'indexes': [models.Index(fields=['brand'], name='brands_bran_brand_i_d22614_idx'), models.Index(fields=['session_id'], name='brands_bran_session_574261_idx'), models.Index(fields=['created_at'], name='brands_bran_created_c31416_idx')], }, ), migrations.AddIndex( model_name='product', index=models.Index(fields=['brand'], name='brands_prod_brand_i_e0821d_idx'), ), migrations.AddIndex( model_name='product', index=models.Index(fields=['dataset_id'], name='brands_prod_dataset_c7f534_idx'), ), migrations.AddIndex( model_name='product', index=models.Index(fields=['is_active'], name='brands_prod_is_acti_fd82c6_idx'), ), migrations.AddIndex( model_name='product', index=models.Index(fields=['pid'], name='brands_prod_pid_452ccb_idx'), ), migrations.AlterUniqueTogether( name='product', unique_together={('brand', 'name')}, ), migrations.AddIndex( model_name='campaign', index=models.Index(fields=['brand'], name='brands_camp_brand_i_51f26d_idx'), ), migrations.AddIndex( model_name='campaign', index=models.Index(fields=['dataset_id'], name='brands_camp_dataset_9b31e4_idx'), ), migrations.AddIndex( model_name='campaign', index=models.Index(fields=['is_active'], name='brands_camp_is_acti_c09fdb_idx'), ), migrations.AddIndex( model_name='campaign', index=models.Index(fields=['start_date'], name='brands_camp_start_d_42e603_idx'), ), migrations.AddIndex( model_name='campaign', index=models.Index(fields=['end_date'], name='brands_camp_end_dat_97d26b_idx'), ), migrations.AddIndex( model_name='campaign', index=models.Index(fields=['status'], name='brands_camp_status_41d2f4_idx'), ), migrations.AlterUniqueTogether( name='campaign', unique_together={('brand', 'name')}, ), ]