# Generated by Django 5.1.5 on 2025-05-19 08:40 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': '品牌', 'db_table': 'brands', }, ), 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': '产品', 'db_table': 'products', }, ), migrations.CreateModel( name='Campaign', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('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': '活动', 'db_table': 'campaigns', }, ), 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': '品牌聊天会话', 'db_table': 'brand_chat_sessions', 'indexes': [models.Index(fields=['brand'], name='brand_chat__brand_i_83752e_idx'), models.Index(fields=['session_id'], name='brand_chat__session_4bf9b0_idx'), models.Index(fields=['created_at'], name='brand_chat__created_957266_idx')], }, ), migrations.AddIndex( model_name='product', index=models.Index(fields=['brand'], name='products_brand_i_0d1950_idx'), ), migrations.AddIndex( model_name='product', index=models.Index(fields=['dataset_id'], name='products_dataset_faf62a_idx'), ), migrations.AddIndex( model_name='product', index=models.Index(fields=['is_active'], name='products_is_acti_cb485f_idx'), ), migrations.AddIndex( model_name='product', index=models.Index(fields=['pid'], name='products_pid_99aab2_idx'), ), migrations.AlterUniqueTogether( name='product', unique_together={('brand', 'name')}, ), migrations.AddIndex( model_name='campaign', index=models.Index(fields=['brand'], name='campaigns_brand_i_c2d4bd_idx'), ), migrations.AddIndex( model_name='campaign', index=models.Index(fields=['dataset_id'], name='campaigns_dataset_bfbb68_idx'), ), migrations.AddIndex( model_name='campaign', index=models.Index(fields=['is_active'], name='campaigns_is_acti_6c57d0_idx'), ), migrations.AddIndex( model_name='campaign', index=models.Index(fields=['start_date'], name='campaigns_start_d_5c2c6b_idx'), ), migrations.AddIndex( model_name='campaign', index=models.Index(fields=['end_date'], name='campaigns_end_dat_6aaba4_idx'), ), migrations.AddIndex( model_name='campaign', index=models.Index(fields=['status'], name='campaigns_status_a03570_idx'), ), migrations.AlterUniqueTogether( name='campaign', unique_together={('brand', 'name')}, ), ]