# Generated by Django 5.0.3 on 2024-06-01 04:23 import django.utils.timezone from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [] operations = [ migrations.CreateModel( name="Administrator", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("username", models.CharField(max_length=150, unique=True)), ("password", models.CharField(max_length=128)), ("role", models.CharField(max_length=100)), ("is_active", models.BooleanField(default=True)), ("last_login", models.DateTimeField(blank=True, null=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ], options={ "db_table": "Administrator", }, ), migrations.CreateModel( name="ApiCallLog", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "source", models.CharField( blank=True, choices=[("index", "Index"), ("weixin", "Weixin")], max_length=100, null=True, verbose_name="来源", ), ), ( "openid", models.CharField( blank=True, max_length=150, null=True, verbose_name="openid" ), ), ( "nickname", models.CharField( blank=True, max_length=255, null=True, verbose_name="用户标识" ), ), ( "wxid", models.CharField( blank=True, max_length=255, null=True, verbose_name="微信id" ), ), ( "wechat_alias", models.CharField( blank=True, max_length=255, null=True, verbose_name="微信号" ), ), ("api_name", models.CharField(max_length=255, verbose_name="调用接口")), ( "is_successful", models.BooleanField(default=False, verbose_name="是否成功"), ), ("remarks", models.TextField(blank=True, null=True, verbose_name="备注")), ( "call_time", models.DateTimeField(auto_now_add=True, verbose_name="调用时间"), ), ], options={ "verbose_name": "API调用日志", "verbose_name_plural": "API调用日志", "db_table": "api_call_log", }, ), migrations.CreateModel( name="ChatRecord", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("openid", models.CharField(default=None, max_length=150)), ("nickname", models.CharField(max_length=150, verbose_name="用户昵称")), ( "conversation_id", models.CharField(max_length=100, verbose_name="会话ID"), ), ("role", models.CharField(max_length=100, verbose_name="角色")), ("message_content", models.TextField(verbose_name="消息内容")), ( "is_response", models.BooleanField(default=False, verbose_name="是否为AI回复"), ), ( "timestamp", models.DateTimeField( default=django.utils.timezone.now, verbose_name="时间戳" ), ), ], options={ "verbose_name": "聊天记录", "verbose_name_plural": "聊天记录", "db_table": "chat_record", "ordering": ["-timestamp"], }, ), migrations.CreateModel( name="Copywriting", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "openid", models.CharField( blank=True, max_length=150, null=True, verbose_name="openid" ), ), ( "nickname", models.CharField( blank=True, max_length=255, null=True, verbose_name="用户标识" ), ), ("text_content", models.TextField(verbose_name="文本内容")), ("source", models.CharField(max_length=255, verbose_name="来源")), ( "tag", models.CharField(default=None, max_length=255, verbose_name="标签"), ), ("popularity", models.IntegerField(default=0, verbose_name="热度")), ( "added_time", models.DateTimeField(auto_now_add=True, verbose_name="添加时间"), ), ( "is_approved", models.BooleanField(default=False, verbose_name="审核通过"), ), ], options={ "verbose_name": "文案库", "verbose_name_plural": "文案库", "db_table": "Copywriting", }, ), migrations.CreateModel( name="FriendRequest", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("fromusername", models.CharField(max_length=255, verbose_name="微信ID")), ( "alias", models.CharField( blank=True, max_length=255, null=True, verbose_name="微信号" ), ), ( "fromnickname", models.CharField( blank=True, max_length=255, null=True, verbose_name="昵称" ), ), ( "country", models.CharField( blank=True, max_length=255, null=True, verbose_name="国家" ), ), ( "province", models.CharField( blank=True, max_length=255, null=True, verbose_name="省份" ), ), ( "city", models.CharField( blank=True, max_length=255, null=True, verbose_name="城市" ), ), ( "sex", models.CharField( blank=True, max_length=1, null=True, verbose_name="性别" ), ), ( "scene", models.CharField( blank=True, max_length=255, null=True, verbose_name="来源" ), ), ("time", models.DateTimeField(verbose_name="申请时间")), ("towxid", models.CharField(max_length=255, verbose_name="目标微信ID")), ], options={ "verbose_name": "添加好友请求", "verbose_name_plural": "添加好友请求", "db_table": "FriendRequest", }, ), migrations.CreateModel( name="IDCounter", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("count", models.IntegerField(default=10000)), ], options={ "db_table": "IDCounter", }, ), migrations.CreateModel( name="MembershipType", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "type", models.CharField(max_length=50, unique=True, verbose_name="卡类型"), ), ("title", models.CharField(max_length=100, verbose_name="标题")), ("description", models.TextField(verbose_name="描述")), ( "price", models.DecimalField( decimal_places=2, max_digits=10, verbose_name="价格" ), ), ("duration_days", models.IntegerField(verbose_name="有效天数")), ], options={ "verbose_name": "会员卡类型", "verbose_name_plural": "会员卡类型", "db_table": "membership_type", }, ), migrations.CreateModel( name="RedemptionCard", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "code", models.CharField(max_length=100, unique=True, verbose_name="卡密"), ), ( "card_type", models.CharField( choices=[("member", "会员卡"), ("quota", "额度卡")], max_length=50, verbose_name="卡类型", ), ), ( "created_date", models.DateTimeField(auto_now_add=True, verbose_name="生成日期"), ), ("expiry_date", models.DateTimeField(verbose_name="到期时间")), ("is_used", models.BooleanField(default=False, verbose_name="是否已使用")), ( "used_by_openid", models.CharField( blank=True, max_length=150, null=True, verbose_name="使用者OpenID" ), ), ( "used_by_nickname", models.CharField( blank=True, max_length=150, null=True, verbose_name="使用者昵称" ), ), ( "card_creation_time", models.DateTimeField(auto_now_add=True, verbose_name="卡密创建时间"), ), ( "validity_period", models.PositiveIntegerField(default=0, verbose_name="有效期"), ), ], options={ "verbose_name": "兑换卡", "verbose_name_plural": "兑换卡", "db_table": "redemption_card", }, ), migrations.CreateModel( name="TransactionLog", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "transaction_no", models.CharField(max_length=255, unique=True, verbose_name="交易编号"), ), ( "transaction_status", models.CharField( choices=[ ("pending", "待处理"), ("completed", "完成"), ("failed", "失败"), ], default="pending", max_length=50, verbose_name="交易状态", ), ), ( "user_openid", models.CharField(max_length=150, verbose_name="用户OpenID"), ), ( "transaction_type", models.CharField( choices=[("member", "会员购买"), ("quota", "续费会员")], max_length=50, verbose_name="交易类型", ), ), ( "transaction_amount", models.DecimalField( decimal_places=2, max_digits=10, verbose_name="交易金额" ), ), ( "remark", models.TextField( blank=True, choices=[ ("day", "一天会员充值"), ("week", "一周会员充值"), ("month", "一月会员充值"), ("season", "三月会员充值"), ("year", "一年会员充值"), ], null=True, verbose_name="备注", ), ), ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="创建时间"), ), ( "updated_at", models.DateTimeField(auto_now=True, verbose_name="更新时间"), ), ], options={ "verbose_name": "交易记录", "verbose_name_plural": "交易记录", "db_table": "transaction_log", }, ), migrations.CreateModel( name="User", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("openid", models.CharField(max_length=150, unique=True)), ("wxid", models.CharField(blank=True, max_length=150, null=True)), ( "wechat_number", models.CharField( blank=True, max_length=150, null=True, verbose_name="微信号" ), ), ("nickname", models.CharField(blank=True, max_length=150, null=True)), ("gender", models.CharField(blank=True, max_length=10, null=True)), ("region", models.CharField(blank=True, max_length=150, null=True)), ("email", models.EmailField(blank=True, max_length=254, null=True)), ("phone", models.CharField(blank=True, max_length=20, null=True)), ("password", models.CharField(blank=True, max_length=128, null=True)), ("scene", models.CharField(blank=True, max_length=100, null=True)), ("is_member", models.BooleanField(default=False)), ("member_start_time", models.BigIntegerField(blank=True, null=True)), ("member_end_time", models.BigIntegerField(blank=True, null=True)), ("is_active", models.BooleanField(default=True)), ("usage_count", models.IntegerField(blank=True, default=0, null=True)), ("coins", models.IntegerField(default=100, verbose_name="金币数量")), ( "balance", models.DecimalField( decimal_places=2, default=0.0, max_digits=10, verbose_name="用户余额", ), ), ( "inviter_nickname", models.CharField( blank=True, max_length=150, null=True, verbose_name="邀请人昵称" ), ), ( "invitees_count", models.IntegerField(default=0, verbose_name="邀请人数量"), ), ( "daily_video_quota", models.IntegerField(default=5, verbose_name="每日视频生成额度"), ), ("created_at", models.DateTimeField(auto_now_add=True)), ], options={ "db_table": "User", }, ), migrations.CreateModel( name="VideoExtractionRecord", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "extraction_link", models.URLField(max_length=2048, verbose_name="提取链接"), ), ( "source", models.CharField( choices=[("index", "Index"), ("weixin", "Weixin")], max_length=100, verbose_name="来源", ), ), ( "openid", models.CharField( blank=True, max_length=150, null=True, verbose_name="openid" ), ), ( "nickname", models.CharField( blank=True, max_length=255, null=True, verbose_name="用户标识" ), ), ( "video_title", models.TextField(blank=True, null=True, verbose_name="视频标题"), ), ( "wxid", models.CharField( blank=True, max_length=255, null=True, verbose_name="微信id" ), ), ( "wechat_alias", models.CharField( blank=True, max_length=255, null=True, verbose_name="微信号" ), ), ( "is_successful", models.CharField( blank=True, max_length=255, null=True, verbose_name="是否提取成功" ), ), ( "exception_reason", models.TextField(blank=True, null=True, verbose_name="异常原因"), ), ( "extraction_time", models.DateTimeField(auto_now_add=True, verbose_name="提取时间"), ), ], options={ "verbose_name": "视频提取记录", "verbose_name_plural": "视频提取记录", "db_table": "VideoExtractionRecord", }, ), migrations.CreateModel( name="VideoTask", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("openid", models.CharField(max_length=150)), ("nickname", models.CharField(max_length=150)), ("task_id", models.CharField(max_length=255, unique=True)), ("task_type", models.CharField(max_length=50)), ( "status", models.CharField( choices=[ ("PENDING", "待处理"), ("IN_PROGRESS", "处理中"), ("RUNNING", "运行中"), ("SUCCEEDED", "成功"), ("FAILED", "失败"), ], default="PENDING", max_length=20, ), ), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ("text_prompt", models.TextField(null=True)), ("width", models.IntegerField(null=True)), ("height", models.IntegerField(null=True)), ("motion_score", models.IntegerField(null=True)), ("style", models.CharField(blank=True, max_length=255, null=True)), ("seconds", models.IntegerField(null=True)), ("image_url", models.TextField(blank=True, null=True)), ("result_url", models.TextField(blank=True, null=True)), ("qiniu_url", models.TextField(blank=True, null=True)), ("progress", models.FloatField(default=0.0)), ("error_message", models.TextField(blank=True, null=True)), ], options={ "db_table": "video_task", "ordering": ["-created_at"], }, ), ]