daren/apps/brands/migrations/0001_initial.py

174 lines
12 KiB
Python
Raw Normal View History

2025-05-29 17:26:37 +08:00
# Generated by Django 5.2.1 on 2025-05-29 09:24
2025-05-19 18:23:59 +08:00
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=[
2025-05-29 17:26:37 +08:00
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
2025-05-19 18:23:59 +08:00
('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': '品牌聊天会话',
2025-05-29 17:26:37 +08:00
'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')],
2025-05-19 18:23:59 +08:00
},
),
migrations.AddIndex(
model_name='product',
2025-05-29 17:26:37 +08:00
index=models.Index(fields=['brand'], name='brands_prod_brand_i_e0821d_idx'),
2025-05-19 18:23:59 +08:00
),
migrations.AddIndex(
model_name='product',
2025-05-29 17:26:37 +08:00
index=models.Index(fields=['dataset_id'], name='brands_prod_dataset_c7f534_idx'),
2025-05-19 18:23:59 +08:00
),
migrations.AddIndex(
model_name='product',
2025-05-29 17:26:37 +08:00
index=models.Index(fields=['is_active'], name='brands_prod_is_acti_fd82c6_idx'),
2025-05-19 18:23:59 +08:00
),
migrations.AddIndex(
model_name='product',
2025-05-29 17:26:37 +08:00
index=models.Index(fields=['pid'], name='brands_prod_pid_452ccb_idx'),
2025-05-19 18:23:59 +08:00
),
migrations.AlterUniqueTogether(
name='product',
unique_together={('brand', 'name')},
),
migrations.AddIndex(
model_name='campaign',
2025-05-29 17:26:37 +08:00
index=models.Index(fields=['brand'], name='brands_camp_brand_i_51f26d_idx'),
2025-05-19 18:23:59 +08:00
),
migrations.AddIndex(
model_name='campaign',
2025-05-29 17:26:37 +08:00
index=models.Index(fields=['dataset_id'], name='brands_camp_dataset_9b31e4_idx'),
2025-05-19 18:23:59 +08:00
),
migrations.AddIndex(
model_name='campaign',
2025-05-29 17:26:37 +08:00
index=models.Index(fields=['is_active'], name='brands_camp_is_acti_c09fdb_idx'),
2025-05-19 18:23:59 +08:00
),
migrations.AddIndex(
model_name='campaign',
2025-05-29 17:26:37 +08:00
index=models.Index(fields=['start_date'], name='brands_camp_start_d_42e603_idx'),
2025-05-19 18:23:59 +08:00
),
migrations.AddIndex(
model_name='campaign',
2025-05-29 17:26:37 +08:00
index=models.Index(fields=['end_date'], name='brands_camp_end_dat_97d26b_idx'),
2025-05-19 18:23:59 +08:00
),
migrations.AddIndex(
model_name='campaign',
2025-05-29 17:26:37 +08:00
index=models.Index(fields=['status'], name='brands_camp_status_41d2f4_idx'),
2025-05-19 18:23:59 +08:00
),
migrations.AlterUniqueTogether(
name='campaign',
unique_together={('brand', 'name')},
),
]