616 lines
23 KiB
Python
616 lines
23 KiB
Python
# 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"],
|
|
},
|
|
),
|
|
]
|