Files
2025-07-11 15:55:49 +08:00

1331 lines
46 KiB
Python

# Generated by Django 5.2.1 on 2025-07-11 07:44
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name="AIApiKey",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"remark",
models.CharField(
blank=True,
db_comment="备注",
help_text="备注",
max_length=256,
null=True,
verbose_name="备注",
),
),
(
"creator",
models.CharField(
blank=True,
db_comment="创建人",
help_text="创建人",
max_length=64,
null=True,
verbose_name="创建人",
),
),
(
"modifier",
models.CharField(
blank=True,
db_comment="修改人",
help_text="修改人",
max_length=64,
null=True,
verbose_name="修改人",
),
),
(
"update_time",
models.DateTimeField(
auto_now=True,
db_comment="修改时间",
help_text="修改时间",
null=True,
verbose_name="修改时间",
),
),
(
"create_time",
models.DateTimeField(
auto_now_add=True,
db_comment="创建时间",
help_text="创建时间",
null=True,
verbose_name="创建时间",
),
),
(
"is_deleted",
models.BooleanField(
db_comment="是否软删除",
default=False,
verbose_name="是否软删除",
),
),
(
"name",
models.CharField(
db_comment="名称", max_length=255, verbose_name="名称"
),
),
(
"platform",
models.CharField(
choices=[
("AzureOpenAI", "OpenAI 微软"),
("OpenAI", "OpenAI"),
("Ollama", "Ollama"),
("YiYan", "文心一言"),
("XingHuo", "讯飞星火"),
("TongYi", "通义千问"),
("StableDiffusion", "StableDiffusion"),
("Midjourney", "Midjourney"),
("Suno", "Suno"),
("DeepSeek", "DeepSeek"),
("DouBao", "字节豆包"),
("HunYuan", "腾讯混元"),
("SiliconFlow", "硅基流动"),
("ZhiPu", "智谱"),
("MiniMax", "MiniMax"),
("Moonshot", "月之暗灭"),
("BaiChuan", "百川智能"),
],
db_comment="平台",
max_length=100,
verbose_name="平台",
),
),
(
"api_key",
models.CharField(
db_comment="密钥", max_length=255, verbose_name="密钥"
),
),
(
"url",
models.CharField(
blank=True,
db_comment="自定义 API 地址",
max_length=255,
null=True,
verbose_name="自定义 API 地址",
),
),
(
"status",
models.SmallIntegerField(
choices=[(0, "禁用"), (1, "启用")],
db_comment="状态",
default=0,
verbose_name="状态",
),
),
],
options={
"verbose_name": "AI API 密钥",
"verbose_name_plural": "AI API 密钥",
"db_table": "ai_api_key",
},
),
migrations.CreateModel(
name="Tool",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"remark",
models.CharField(
blank=True,
db_comment="备注",
help_text="备注",
max_length=256,
null=True,
verbose_name="备注",
),
),
(
"creator",
models.CharField(
blank=True,
db_comment="创建人",
help_text="创建人",
max_length=64,
null=True,
verbose_name="创建人",
),
),
(
"modifier",
models.CharField(
blank=True,
db_comment="修改人",
help_text="修改人",
max_length=64,
null=True,
verbose_name="修改人",
),
),
(
"update_time",
models.DateTimeField(
auto_now=True,
db_comment="修改时间",
help_text="修改时间",
null=True,
verbose_name="修改时间",
),
),
(
"create_time",
models.DateTimeField(
auto_now_add=True,
db_comment="创建时间",
help_text="创建时间",
null=True,
verbose_name="创建时间",
),
),
(
"is_deleted",
models.BooleanField(
db_comment="是否软删除",
default=False,
verbose_name="是否软删除",
),
),
(
"name",
models.CharField(
db_comment="工具名称", max_length=128, verbose_name="工具名称"
),
),
(
"description",
models.CharField(
blank=True,
db_comment="工具描述",
max_length=256,
null=True,
verbose_name="工具描述",
),
),
(
"status",
models.SmallIntegerField(
db_comment="状态", default=0, verbose_name="状态"
),
),
],
options={
"verbose_name": "AI 工具",
"verbose_name_plural": "AI 工具",
"db_table": "ai_tool",
},
),
migrations.CreateModel(
name="AIModel",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"remark",
models.CharField(
blank=True,
db_comment="备注",
help_text="备注",
max_length=256,
null=True,
verbose_name="备注",
),
),
(
"creator",
models.CharField(
blank=True,
db_comment="创建人",
help_text="创建人",
max_length=64,
null=True,
verbose_name="创建人",
),
),
(
"modifier",
models.CharField(
blank=True,
db_comment="修改人",
help_text="修改人",
max_length=64,
null=True,
verbose_name="修改人",
),
),
(
"update_time",
models.DateTimeField(
auto_now=True,
db_comment="修改时间",
help_text="修改时间",
null=True,
verbose_name="修改时间",
),
),
(
"create_time",
models.DateTimeField(
auto_now_add=True,
db_comment="创建时间",
help_text="创建时间",
null=True,
verbose_name="创建时间",
),
),
(
"is_deleted",
models.BooleanField(
db_comment="是否软删除",
default=False,
verbose_name="是否软删除",
),
),
(
"name",
models.CharField(
db_comment="模型名字", max_length=64, verbose_name="模型名字"
),
),
(
"sort",
models.IntegerField(
db_comment="排序", default=0, verbose_name="排序"
),
),
(
"status",
models.SmallIntegerField(
choices=[(0, "禁用"), (1, "启用")],
db_comment="状态",
default=0,
verbose_name="状态",
),
),
(
"platform",
models.CharField(
db_comment="模型平台", max_length=32, verbose_name="模型平台"
),
),
(
"model",
models.CharField(
db_comment="模型标识", max_length=64, verbose_name="模型标识"
),
),
(
"temperature",
models.FloatField(
blank=True,
db_comment="温度参数",
null=True,
verbose_name="温度参数",
),
),
(
"max_tokens",
models.IntegerField(
blank=True,
db_comment="单条回复的最大 Token 数量",
null=True,
verbose_name="单条回复的最大 Token 数量",
),
),
(
"max_contexts",
models.IntegerField(
blank=True,
db_comment="上下文的最大 Message 数量",
null=True,
verbose_name="上下文的最大 Message 数量",
),
),
(
"key",
models.ForeignKey(
db_comment="API 秘钥编号",
on_delete=django.db.models.deletion.CASCADE,
to="ai.aiapikey",
verbose_name="API 秘钥编号",
),
),
],
options={
"verbose_name": "模型配置",
"verbose_name_plural": "模型配置",
"db_table": "ai_model",
},
),
migrations.CreateModel(
name="ChatRole",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"remark",
models.CharField(
blank=True,
db_comment="备注",
help_text="备注",
max_length=256,
null=True,
verbose_name="备注",
),
),
(
"creator",
models.CharField(
blank=True,
db_comment="创建人",
help_text="创建人",
max_length=64,
null=True,
verbose_name="创建人",
),
),
(
"modifier",
models.CharField(
blank=True,
db_comment="修改人",
help_text="修改人",
max_length=64,
null=True,
verbose_name="修改人",
),
),
(
"update_time",
models.DateTimeField(
auto_now=True,
db_comment="修改时间",
help_text="修改时间",
null=True,
verbose_name="修改时间",
),
),
(
"create_time",
models.DateTimeField(
auto_now_add=True,
db_comment="创建时间",
help_text="创建时间",
null=True,
verbose_name="创建时间",
),
),
(
"is_deleted",
models.BooleanField(
db_comment="是否软删除",
default=False,
verbose_name="是否软删除",
),
),
(
"name",
models.CharField(
db_comment="角色名称", max_length=128, verbose_name="角色名称"
),
),
(
"avatar",
models.CharField(
db_comment="头像", max_length=256, verbose_name="头像"
),
),
(
"description",
models.CharField(
db_comment="角色描述", max_length=256, verbose_name="角色描述"
),
),
(
"status",
models.SmallIntegerField(
choices=[(0, "禁用"), (1, "启用")],
db_comment="状态",
default=0,
verbose_name="状态",
),
),
(
"sort",
models.IntegerField(
db_comment="角色排序", default=0, verbose_name="角色排序"
),
),
(
"public_status",
models.BooleanField(
db_comment="是否公开", default=False, verbose_name="是否公开"
),
),
(
"category",
models.CharField(
blank=True,
db_comment="角色类别",
max_length=32,
null=True,
verbose_name="角色类别",
),
),
(
"system_message",
models.CharField(
blank=True,
db_comment="角色上下文",
max_length=1024,
null=True,
verbose_name="角色上下文",
),
),
(
"model_id",
models.ForeignKey(
db_column="model_id",
db_comment="向量模型编号",
on_delete=django.db.models.deletion.CASCADE,
to="ai.aimodel",
verbose_name="向量模型编号",
),
),
(
"user",
models.ForeignKey(
blank=True,
db_comment="用户编号",
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to=settings.AUTH_USER_MODEL,
verbose_name="用户",
),
),
],
options={
"verbose_name": "AI 聊天角色",
"verbose_name_plural": "AI 聊天角色",
"db_table": "ai_chat_role",
},
),
migrations.CreateModel(
name="ChatMessage",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"remark",
models.CharField(
blank=True,
db_comment="备注",
help_text="备注",
max_length=256,
null=True,
verbose_name="备注",
),
),
(
"creator",
models.CharField(
blank=True,
db_comment="创建人",
help_text="创建人",
max_length=64,
null=True,
verbose_name="创建人",
),
),
(
"modifier",
models.CharField(
blank=True,
db_comment="修改人",
help_text="修改人",
max_length=64,
null=True,
verbose_name="修改人",
),
),
(
"update_time",
models.DateTimeField(
auto_now=True,
db_comment="修改时间",
help_text="修改时间",
null=True,
verbose_name="修改时间",
),
),
(
"create_time",
models.DateTimeField(
auto_now_add=True,
db_comment="创建时间",
help_text="创建时间",
null=True,
verbose_name="创建时间",
),
),
(
"is_deleted",
models.BooleanField(
db_comment="是否软删除",
default=False,
verbose_name="是否软删除",
),
),
(
"conversation_id",
models.BigIntegerField(
db_comment="对话编号", verbose_name="对话编号"
),
),
(
"model",
models.CharField(
db_comment="模型标识", max_length=32, verbose_name="模型标识"
),
),
(
"type",
models.CharField(
choices=[("user", "用户发送"), ("assistant", "模型回复")],
db_comment="消息类型",
max_length=16,
verbose_name="消息类型",
),
),
(
"reply_id",
models.BigIntegerField(
blank=True,
db_comment="回复编号",
null=True,
verbose_name="回复编号",
),
),
(
"content",
models.CharField(
db_comment="消息内容", max_length=2048, verbose_name="消息内容"
),
),
(
"use_context",
models.BooleanField(
db_comment="是否携带上下文",
default=False,
verbose_name="是否携带上下文",
),
),
(
"segment_ids",
models.CharField(
blank=True,
db_comment="段落编号数组",
max_length=2048,
null=True,
verbose_name="段落编号数组",
),
),
(
"model_id",
models.ForeignKey(
db_column="model_id",
db_comment="向量模型编号",
on_delete=django.db.models.deletion.CASCADE,
to="ai.aimodel",
verbose_name="向量模型编号",
),
),
(
"user",
models.ForeignKey(
blank=True,
db_comment="用户编号",
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to=settings.AUTH_USER_MODEL,
verbose_name="用户",
),
),
(
"role",
models.ForeignKey(
blank=True,
db_comment="聊天角色",
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="ai.chatrole",
verbose_name="聊天角色",
),
),
],
options={
"verbose_name": "AI 聊天消息",
"verbose_name_plural": "AI 聊天消息",
"db_table": "ai_chat_message",
},
),
migrations.CreateModel(
name="ChatConversation",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"remark",
models.CharField(
blank=True,
db_comment="备注",
help_text="备注",
max_length=256,
null=True,
verbose_name="备注",
),
),
(
"creator",
models.CharField(
blank=True,
db_comment="创建人",
help_text="创建人",
max_length=64,
null=True,
verbose_name="创建人",
),
),
(
"modifier",
models.CharField(
blank=True,
db_comment="修改人",
help_text="修改人",
max_length=64,
null=True,
verbose_name="修改人",
),
),
(
"update_time",
models.DateTimeField(
auto_now=True,
db_comment="修改时间",
help_text="修改时间",
null=True,
verbose_name="修改时间",
),
),
(
"create_time",
models.DateTimeField(
auto_now_add=True,
db_comment="创建时间",
help_text="创建时间",
null=True,
verbose_name="创建时间",
),
),
(
"is_deleted",
models.BooleanField(
db_comment="是否软删除",
default=False,
verbose_name="是否软删除",
),
),
(
"title",
models.CharField(
db_comment="对话标题", max_length=256, verbose_name="对话标题"
),
),
(
"pinned",
models.BooleanField(
db_comment="是否置顶", default=False, verbose_name="是否置顶"
),
),
(
"pinned_time",
models.DateTimeField(
blank=True,
db_comment="置顶时间",
null=True,
verbose_name="置顶时间",
),
),
(
"model",
models.CharField(
db_comment="模型标识", max_length=32, verbose_name="模型标识"
),
),
(
"system_message",
models.CharField(
blank=True,
db_comment="角色设定",
max_length=1024,
null=True,
verbose_name="角色设定",
),
),
(
"temperature",
models.FloatField(db_comment="温度参数", verbose_name="温度参数"),
),
(
"max_tokens",
models.IntegerField(
db_comment="单条回复的最大 Token 数量",
verbose_name="单条回复的最大 Token 数量",
),
),
(
"max_contexts",
models.IntegerField(
db_comment="上下文的最大 Message 数量",
verbose_name="上下文的最大 Message 数量",
),
),
(
"model_id",
models.ForeignKey(
db_column="model_id",
db_comment="向量模型编号",
on_delete=django.db.models.deletion.CASCADE,
to="ai.aimodel",
verbose_name="向量模型编号",
),
),
(
"user",
models.ForeignKey(
blank=True,
db_comment="用户编号",
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to=settings.AUTH_USER_MODEL,
verbose_name="用户",
),
),
(
"role",
models.ForeignKey(
blank=True,
db_comment="聊天角色",
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="ai.chatrole",
verbose_name="聊天角色",
),
),
],
options={
"verbose_name": "AI 聊天对话",
"verbose_name_plural": "AI 聊天对话",
"db_table": "ai_chat_conversation",
},
),
migrations.CreateModel(
name="Knowledge",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"remark",
models.CharField(
blank=True,
db_comment="备注",
help_text="备注",
max_length=256,
null=True,
verbose_name="备注",
),
),
(
"creator",
models.CharField(
blank=True,
db_comment="创建人",
help_text="创建人",
max_length=64,
null=True,
verbose_name="创建人",
),
),
(
"modifier",
models.CharField(
blank=True,
db_comment="修改人",
help_text="修改人",
max_length=64,
null=True,
verbose_name="修改人",
),
),
(
"update_time",
models.DateTimeField(
auto_now=True,
db_comment="修改时间",
help_text="修改时间",
null=True,
verbose_name="修改时间",
),
),
(
"create_time",
models.DateTimeField(
auto_now_add=True,
db_comment="创建时间",
help_text="创建时间",
null=True,
verbose_name="创建时间",
),
),
(
"is_deleted",
models.BooleanField(
db_comment="是否软删除",
default=False,
verbose_name="是否软删除",
),
),
(
"name",
models.CharField(
db_comment="知识库名称",
max_length=255,
verbose_name="知识库名称",
),
),
(
"description",
models.TextField(
blank=True,
db_comment="知识库描述",
null=True,
verbose_name="知识库描述",
),
),
(
"embedding_model",
models.CharField(
db_comment="向量模型标识",
max_length=32,
verbose_name="向量模型标识",
),
),
(
"top_k",
models.IntegerField(
db_comment="topK", default=0, verbose_name="topK"
),
),
(
"similarity_threshold",
models.FloatField(
db_comment="相似度阈值", verbose_name="相似度阈值"
),
),
(
"status",
models.SmallIntegerField(
choices=[(0, "禁用"), (1, "启用")],
db_comment="状态",
default=0,
verbose_name="状态",
),
),
(
"embedding_model_id",
models.ForeignKey(
db_column="embedding_model_id",
db_comment="向量模型编号",
on_delete=django.db.models.deletion.CASCADE,
to="ai.aimodel",
verbose_name="向量模型编号",
),
),
],
options={
"verbose_name": "AI 知识库",
"verbose_name_plural": "AI 知识库",
"db_table": "ai_knowledge",
},
),
migrations.AddField(
model_name="chatrole",
name="knowledge",
field=models.ManyToManyField(
blank=True,
db_comment="关联的知识库",
related_name="roles",
to="ai.knowledge",
verbose_name="关联的知识库",
),
),
migrations.CreateModel(
name="KnowledgeDocument",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"remark",
models.CharField(
blank=True,
db_comment="备注",
help_text="备注",
max_length=256,
null=True,
verbose_name="备注",
),
),
(
"creator",
models.CharField(
blank=True,
db_comment="创建人",
help_text="创建人",
max_length=64,
null=True,
verbose_name="创建人",
),
),
(
"modifier",
models.CharField(
blank=True,
db_comment="修改人",
help_text="修改人",
max_length=64,
null=True,
verbose_name="修改人",
),
),
(
"update_time",
models.DateTimeField(
auto_now=True,
db_comment="修改时间",
help_text="修改时间",
null=True,
verbose_name="修改时间",
),
),
(
"create_time",
models.DateTimeField(
auto_now_add=True,
db_comment="创建时间",
help_text="创建时间",
null=True,
verbose_name="创建时间",
),
),
(
"is_deleted",
models.BooleanField(
db_comment="是否软删除",
default=False,
verbose_name="是否软删除",
),
),
(
"name",
models.CharField(
db_comment="文档名称", max_length=255, verbose_name="文档名称"
),
),
(
"url",
models.CharField(
db_comment="文件 URL", max_length=1024, verbose_name="文件 URL"
),
),
("content", models.TextField(db_comment="内容", verbose_name="内容")),
(
"content_length",
models.IntegerField(db_comment="字符数", verbose_name="字符数"),
),
(
"tokens",
models.IntegerField(
db_comment="token 数量", verbose_name="token 数量"
),
),
(
"segment_max_tokens",
models.IntegerField(
db_comment="分片最大 Token 数", verbose_name="分片最大 Token 数"
),
),
(
"retrieval_count",
models.IntegerField(
db_comment="召回次数", default=0, verbose_name="召回次数"
),
),
(
"status",
models.SmallIntegerField(
choices=[(0, "禁用"), (1, "启用")],
db_comment="状态",
default=0,
verbose_name="状态",
),
),
(
"knowledge",
models.ForeignKey(
db_comment="知识库",
on_delete=django.db.models.deletion.CASCADE,
related_name="documents",
to="ai.knowledge",
verbose_name="知识库",
),
),
],
options={
"verbose_name": "AI 知识库文档",
"verbose_name_plural": "AI 知识库文档",
"db_table": "ai_knowledge_document",
},
),
migrations.CreateModel(
name="KnowledgeSegment",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"remark",
models.CharField(
blank=True,
db_comment="备注",
help_text="备注",
max_length=256,
null=True,
verbose_name="备注",
),
),
(
"creator",
models.CharField(
blank=True,
db_comment="创建人",
help_text="创建人",
max_length=64,
null=True,
verbose_name="创建人",
),
),
(
"modifier",
models.CharField(
blank=True,
db_comment="修改人",
help_text="修改人",
max_length=64,
null=True,
verbose_name="修改人",
),
),
(
"update_time",
models.DateTimeField(
auto_now=True,
db_comment="修改时间",
help_text="修改时间",
null=True,
verbose_name="修改时间",
),
),
(
"create_time",
models.DateTimeField(
auto_now_add=True,
db_comment="创建时间",
help_text="创建时间",
null=True,
verbose_name="创建时间",
),
),
(
"is_deleted",
models.BooleanField(
db_comment="是否软删除",
default=False,
verbose_name="是否软删除",
),
),
(
"content",
models.TextField(db_comment="分段内容", verbose_name="分段内容"),
),
(
"content_length",
models.IntegerField(db_comment="字符数", verbose_name="字符数"),
),
(
"tokens",
models.IntegerField(
db_comment="token 数量", verbose_name="token 数量"
),
),
(
"vector_id",
models.CharField(
blank=True,
db_comment="向量库的编号",
max_length=100,
null=True,
verbose_name="向量库的编号",
),
),
(
"retrieval_count",
models.IntegerField(
db_comment="召回次数", default=0, verbose_name="召回次数"
),
),
(
"status",
models.SmallIntegerField(
choices=[(0, "禁用"), (1, "启用")],
db_comment="状态",
default=0,
verbose_name="状态",
),
),
(
"document",
models.ForeignKey(
db_comment="文档",
on_delete=django.db.models.deletion.CASCADE,
related_name="segments",
to="ai.knowledgedocument",
verbose_name="文档",
),
),
(
"knowledge",
models.ForeignKey(
db_comment="知识库",
on_delete=django.db.models.deletion.CASCADE,
related_name="segments",
to="ai.knowledge",
verbose_name="知识库",
),
),
],
options={
"verbose_name": "AI 知识库分段",
"verbose_name_plural": "AI 知识库分段",
"db_table": "ai_knowledge_segment",
},
),
migrations.AddField(
model_name="chatrole",
name="tools",
field=models.ManyToManyField(
blank=True,
db_comment="关联的工具",
related_name="roles",
to="ai.tool",
verbose_name="关联的工具",
),
),
]