From 1ac7fc4669710bef051977ee99e12ed497987d96 Mon Sep 17 00:00:00 2001 From: CaptainB Date: Sun, 13 Jul 2025 14:49:00 +0800 Subject: [PATCH] refactor: Update user foreign key constraints and add new fields across multiple models --- apps/application/migrations/0001_initial.py | 78 +++++++++++++------ ...02_alter_application_user_alter_chat_id.py | 26 ------- .../0003_chat_asker_chat_meta_and_more.py | 40 ---------- ...ublish_time_applicationversion_and_more.py | 66 ---------------- ...nt_chat_mark_sum_chat_star_num_and_more.py | 33 -------- .../0006_alter_applicationfolder_user.py | 20 ----- apps/knowledge/migrations/0001_initial.py | 12 +-- .../0002_alter_document_status_and_more.py | 37 --------- ...r_file_source_id_alter_file_source_type.py | 23 ------ .../0004_alter_knowledgefolder_user.py | 20 ----- .../migrations/0001_initial.py | 17 ++-- ..._model_unique_together_alter_model_user.py | 24 ------ apps/system_manage/migrations/0001_initial.py | 7 +- ...er_workspaceuserresourcepermission_user.py | 20 ----- ...userresourcepermission_auth_target_type.py | 18 ----- apps/tools/migrations/0001_initial.py | 4 +- ...2_alter_tool_user_alter_toolfolder_user.py | 25 ------ apps/users/migrations/0001_initial.py | 7 +- 18 files changed, 74 insertions(+), 403 deletions(-) delete mode 100644 apps/application/migrations/0002_alter_application_user_alter_chat_id.py delete mode 100644 apps/application/migrations/0003_chat_asker_chat_meta_and_more.py delete mode 100644 apps/application/migrations/0004_application_publish_time_applicationversion_and_more.py delete mode 100644 apps/application/migrations/0005_chat_chat_record_count_chat_mark_sum_chat_star_num_and_more.py delete mode 100644 apps/application/migrations/0006_alter_applicationfolder_user.py delete mode 100644 apps/knowledge/migrations/0002_alter_document_status_and_more.py delete mode 100644 apps/knowledge/migrations/0003_alter_file_source_id_alter_file_source_type.py delete mode 100644 apps/knowledge/migrations/0004_alter_knowledgefolder_user.py delete mode 100644 apps/models_provider/migrations/0002_alter_model_unique_together_alter_model_user.py delete mode 100644 apps/system_manage/migrations/0002_alter_workspaceuserresourcepermission_user.py delete mode 100644 apps/system_manage/migrations/0003_alter_workspaceuserresourcepermission_auth_target_type.py delete mode 100644 apps/tools/migrations/0002_alter_tool_user_alter_toolfolder_user.py diff --git a/apps/application/migrations/0001_initial.py b/apps/application/migrations/0001_initial.py index 509a4108f..d1a61e29a 100644 --- a/apps/application/migrations/0001_initial.py +++ b/apps/application/migrations/0001_initial.py @@ -6,7 +6,6 @@ import common.encoder.encoder import django.contrib.postgres.fields import django.db.models.deletion import mptt.fields -import uuid import uuid_utils.compat from django.db import migrations, models @@ -55,12 +54,13 @@ class Migration(migrations.Migration): ('tts_autoplay', models.BooleanField(default=False, verbose_name='自动播放')), ('stt_autosend', models.BooleanField(default=False, verbose_name='自动发送')), ('clean_time', models.IntegerField(default=180, verbose_name='清理时间')), + ('publish_time', models.DateTimeField(blank=True, default=None, null=True, verbose_name='发布时间')), ('file_upload_enable', models.BooleanField(default=False, verbose_name='文件上传是否启用')), ('file_upload_setting', models.JSONField(default=dict, verbose_name='文件上传相关设置')), ('model', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='models_provider.model')), ('stt_model', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='stt_model_id', to='models_provider.model')), ('tts_model', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='tts_model_id', to='models_provider.model')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='users.user')), + ('user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user')), ], options={ 'db_table': 'application', @@ -117,7 +117,7 @@ class Migration(migrations.Migration): ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), ('level', models.PositiveIntegerField(editable=False)), ('parent', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='children', to='application.applicationfolder')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='users.user', verbose_name='用户id')), + ('user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user')), ], options={ 'db_table': 'application_folder', @@ -141,16 +141,63 @@ class Migration(migrations.Migration): 'db_table': 'application_knowledge_mapping', }, ), + migrations.CreateModel( + name='ApplicationVersion', + fields=[ + ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ('update_time', models.DateTimeField(auto_now=True, verbose_name='修改时间')), + ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')), + ('name', models.CharField(default='', max_length=128, verbose_name='版本名称')), + ('publish_user_id', models.UUIDField(default=None, null=True, verbose_name='发布者id')), + ('publish_user_name', models.CharField(default='', max_length=128, verbose_name='发布者名称')), + ('workspace_id', models.CharField(db_index=True, default='default', max_length=64, verbose_name='工作空间id')), + ('application_name', models.CharField(max_length=128, verbose_name='应用名称')), + ('desc', models.CharField(default='', max_length=512, verbose_name='引用描述')), + ('prologue', models.CharField(default='', max_length=40960, verbose_name='开场白')), + ('dialogue_number', models.IntegerField(default=0, verbose_name='会话数量')), + ('model_id', models.UUIDField(blank=True, null=True, verbose_name='大语言模型')), + ('knowledge_setting', models.JSONField(default=application.models.application.get_dataset_setting_dict, verbose_name='数据集参数设置')), + ('model_setting', models.JSONField(default=application.models.application.get_model_setting_dict, verbose_name='模型参数相关设置')), + ('model_params_setting', models.JSONField(default=dict, verbose_name='模型参数相关设置')), + ('tts_model_params_setting', models.JSONField(default=dict, verbose_name='模型参数相关设置')), + ('problem_optimization', models.BooleanField(default=False, verbose_name='问题优化')), + ('icon', models.CharField(default='./favicon.ico', max_length=256, verbose_name='应用icon')), + ('work_flow', models.JSONField(default=dict, verbose_name='工作流数据')), + ('type', models.CharField(choices=[('SIMPLE', '简易'), ('WORK_FLOW', '工作流')], default='SIMPLE', max_length=256, verbose_name='应用类型')), + ('problem_optimization_prompt', models.CharField(blank=True, default='()里面是用户问题,根据上下文回答揣测用户问题({question}) 要求: 输出一个补全问题,并且放在标签中', max_length=102400, null=True, verbose_name='问题优化提示词')), + ('tts_model_id', models.UUIDField(blank=True, null=True, verbose_name='文本转语音模型id')), + ('stt_model_id', models.UUIDField(blank=True, null=True, verbose_name='语音转文本模型id')), + ('tts_model_enable', models.BooleanField(default=False, verbose_name='语音合成模型是否启用')), + ('stt_model_enable', models.BooleanField(default=False, verbose_name='语音识别模型是否启用')), + ('tts_type', models.CharField(default='BROWSER', max_length=20, verbose_name='语音播放类型')), + ('tts_autoplay', models.BooleanField(default=False, verbose_name='自动播放')), + ('stt_autosend', models.BooleanField(default=False, verbose_name='自动发送')), + ('clean_time', models.IntegerField(default=180, verbose_name='清理时间')), + ('file_upload_enable', models.BooleanField(default=False, verbose_name='文件上传是否启用')), + ('file_upload_setting', models.JSONField(default=dict, verbose_name='文件上传相关设置')), + ('application', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='application.application')), + ('user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user')), + ], + options={ + 'db_table': 'application_version', + }, + ), migrations.CreateModel( name='Chat', fields=[ ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('update_time', models.DateTimeField(auto_now=True, verbose_name='修改时间')), - ('id', models.UUIDField(default=uuid.UUID('01979a90-ea1d-7033-94d5-38f2e12c6627'), editable=False, primary_key=True, serialize=False, verbose_name='主键id')), + ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')), ('abstract', models.CharField(max_length=1024, verbose_name='摘要')), - ('chat_user_id', models.UUIDField(default=None, null=True, verbose_name='客户端id')), - ('chat_user_type', models.CharField(choices=[('ANONYMOUS_USER', '匿名用户'), ('CHAT_USER', '对话用户'), ('SYSTEM_API_KEY', '系统API_KEY'), ('APPLICATION_API_KEY', '应用API_KEY')], default='ANONYMOUS_USER', max_length=64, verbose_name='客户端类型')), + ('chat_user_id', models.CharField(default=None, null=True, verbose_name='对话用户id')), + ('chat_user_type', models.CharField(choices=[('ANONYMOUS_USER', '匿名用户'), ('CHAT_USER', '对话用户'), ('SYSTEM_API_KEY', '系统API_KEY'), ('APPLICATION_API_KEY', '应用API_KEY'), ('PLATFORM_USER', '平台用户')], default='ANONYMOUS_USER', max_length=64, verbose_name='客户端类型')), ('is_deleted', models.BooleanField(default=False, verbose_name='逻辑删除')), + ('asker', models.JSONField(default=application.models.application_chat.default_asker, encoder=common.encoder.encoder.SystemEncoder, verbose_name='访问者')), + ('meta', models.JSONField(default=dict, verbose_name='元数据')), + ('star_num', models.IntegerField(default=0, verbose_name='点赞数量')), + ('trample_num', models.IntegerField(default=0, verbose_name='点踩数量')), + ('chat_record_count', models.IntegerField(default=0, verbose_name='对话次数')), + ('mark_sum', models.IntegerField(default=0, verbose_name='标记数量')), ('application', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='application.application')), ], options={ @@ -180,23 +227,6 @@ class Migration(migrations.Migration): 'db_table': 'application_chat_record', }, ), - migrations.CreateModel( - name='WorkFlowVersion', - fields=[ - ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), - ('update_time', models.DateTimeField(auto_now=True, verbose_name='修改时间')), - ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')), - ('workspace_id', models.CharField(db_index=True, default='default', max_length=64, verbose_name='工作空间id')), - ('name', models.CharField(default='', max_length=128, verbose_name='版本名称')), - ('publish_user_id', models.UUIDField(default=None, null=True, verbose_name='发布者id')), - ('publish_user_name', models.CharField(default='', max_length=128, verbose_name='发布者名称')), - ('work_flow', models.JSONField(default=dict, verbose_name='工作流数据')), - ('application', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='application.application')), - ], - options={ - 'db_table': 'application_work_flow_version', - }, - ), migrations.CreateModel( name='ApplicationChatUserStats', fields=[ @@ -204,7 +234,7 @@ class Migration(migrations.Migration): ('update_time', models.DateTimeField(auto_now=True, verbose_name='修改时间')), ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')), ('chat_user_id', models.UUIDField(default=uuid_utils.compat.uuid7, verbose_name='对话用户id')), - ('chat_user_type', models.CharField(choices=[('ANONYMOUS_USER', '匿名用户'), ('CHAT_USER', '对话用户'), ('SYSTEM_API_KEY', '系统API_KEY'), ('APPLICATION_API_KEY', '应用API_KEY')], default='ANONYMOUS_USER', max_length=64, verbose_name='对话用户类型')), + ('chat_user_type', models.CharField(choices=[('ANONYMOUS_USER', '匿名用户'), ('CHAT_USER', '对话用户'), ('SYSTEM_API_KEY', '系统API_KEY'), ('APPLICATION_API_KEY', '应用API_KEY'), ('PLATFORM_USER', '平台用户')], default='ANONYMOUS_USER', max_length=64, verbose_name='对话用户类型')), ('access_num', models.IntegerField(default=0, verbose_name='访问总次数次数')), ('intraday_access_num', models.IntegerField(default=0, verbose_name='当日访问次数')), ('application', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='application.application', verbose_name='应用id')), diff --git a/apps/application/migrations/0002_alter_application_user_alter_chat_id.py b/apps/application/migrations/0002_alter_application_user_alter_chat_id.py deleted file mode 100644 index a57411465..000000000 --- a/apps/application/migrations/0002_alter_application_user_alter_chat_id.py +++ /dev/null @@ -1,26 +0,0 @@ -# Generated by Django 5.2.1 on 2025-06-24 09:53 - -import django.db.models.deletion -import uuid_utils.compat -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('application', '0001_initial'), - ('users', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='application', - name='user', - field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user'), - ), - migrations.AlterField( - model_name='chat', - name='id', - field=models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id'), - ), - ] diff --git a/apps/application/migrations/0003_chat_asker_chat_meta_and_more.py b/apps/application/migrations/0003_chat_asker_chat_meta_and_more.py deleted file mode 100644 index 42a860df3..000000000 --- a/apps/application/migrations/0003_chat_asker_chat_meta_and_more.py +++ /dev/null @@ -1,40 +0,0 @@ -# Generated by Django 5.2.3 on 2025-07-01 02:46 - -import application.models.application_chat -import common.encoder.encoder -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('application', '0002_alter_application_user_alter_chat_id'), - ] - - operations = [ - migrations.AddField( - model_name='chat', - name='asker', - field=models.JSONField(default=application.models.application_chat.default_asker, encoder=common.encoder.encoder.SystemEncoder, verbose_name='访问者'), - ), - migrations.AddField( - model_name='chat', - name='meta', - field=models.JSONField(default=dict, verbose_name='元数据'), - ), - migrations.AlterField( - model_name='applicationchatuserstats', - name='chat_user_type', - field=models.CharField(choices=[('ANONYMOUS_USER', '匿名用户'), ('CHAT_USER', '对话用户'), ('SYSTEM_API_KEY', '系统API_KEY'), ('APPLICATION_API_KEY', '应用API_KEY'), ('PLATFORM_USER', '平台用户')], default='ANONYMOUS_USER', max_length=64, verbose_name='对话用户类型'), - ), - migrations.AlterField( - model_name='chat', - name='chat_user_id', - field=models.CharField(default=None, null=True, verbose_name='对话用户id'), - ), - migrations.AlterField( - model_name='chat', - name='chat_user_type', - field=models.CharField(choices=[('ANONYMOUS_USER', '匿名用户'), ('CHAT_USER', '对话用户'), ('SYSTEM_API_KEY', '系统API_KEY'), ('APPLICATION_API_KEY', '应用API_KEY'), ('PLATFORM_USER', '平台用户')], default='ANONYMOUS_USER', max_length=64, verbose_name='客户端类型'), - ), - ] diff --git a/apps/application/migrations/0004_application_publish_time_applicationversion_and_more.py b/apps/application/migrations/0004_application_publish_time_applicationversion_and_more.py deleted file mode 100644 index 778b097e2..000000000 --- a/apps/application/migrations/0004_application_publish_time_applicationversion_and_more.py +++ /dev/null @@ -1,66 +0,0 @@ -# Generated by Django 5.2.3 on 2025-07-04 03:18 - -import application.models.application -import django.db.models.deletion -import uuid_utils.compat -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('application', '0003_chat_asker_chat_meta_and_more'), - ('users', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='application', - name='publish_time', - field=models.DateTimeField(blank=True, default=None, null=True, verbose_name='发布时间'), - ), - migrations.CreateModel( - name='ApplicationVersion', - fields=[ - ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), - ('update_time', models.DateTimeField(auto_now=True, verbose_name='修改时间')), - ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')), - ('name', models.CharField(default='', max_length=128, verbose_name='版本名称')), - ('publish_user_id', models.UUIDField(default=None, null=True, verbose_name='发布者id')), - ('publish_user_name', models.CharField(default='', max_length=128, verbose_name='发布者名称')), - ('workspace_id', models.CharField(db_index=True, default='default', max_length=64, verbose_name='工作空间id')), - ('application_name', models.CharField(max_length=128, verbose_name='应用名称')), - ('desc', models.CharField(default='', max_length=512, verbose_name='引用描述')), - ('prologue', models.CharField(default='', max_length=40960, verbose_name='开场白')), - ('dialogue_number', models.IntegerField(default=0, verbose_name='会话数量')), - ('model_id', models.UUIDField(blank=True, null=True, verbose_name='大语言模型')), - ('knowledge_setting', models.JSONField(default=application.models.application.get_dataset_setting_dict, verbose_name='数据集参数设置')), - ('model_setting', models.JSONField(default=application.models.application.get_model_setting_dict, verbose_name='模型参数相关设置')), - ('model_params_setting', models.JSONField(default=dict, verbose_name='模型参数相关设置')), - ('tts_model_params_setting', models.JSONField(default=dict, verbose_name='模型参数相关设置')), - ('problem_optimization', models.BooleanField(default=False, verbose_name='问题优化')), - ('icon', models.CharField(default='./favicon.ico', max_length=256, verbose_name='应用icon')), - ('work_flow', models.JSONField(default=dict, verbose_name='工作流数据')), - ('type', models.CharField(choices=[('SIMPLE', '简易'), ('WORK_FLOW', '工作流')], default='SIMPLE', max_length=256, verbose_name='应用类型')), - ('problem_optimization_prompt', models.CharField(blank=True, default='()里面是用户问题,根据上下文回答揣测用户问题({question}) 要求: 输出一个补全问题,并且放在标签中', max_length=102400, null=True, verbose_name='问题优化提示词')), - ('tts_model_id', models.UUIDField(blank=True, null=True, verbose_name='文本转语音模型id')), - ('stt_model_id', models.UUIDField(blank=True, null=True, verbose_name='语音转文本模型id')), - ('tts_model_enable', models.BooleanField(default=False, verbose_name='语音合成模型是否启用')), - ('stt_model_enable', models.BooleanField(default=False, verbose_name='语音识别模型是否启用')), - ('tts_type', models.CharField(default='BROWSER', max_length=20, verbose_name='语音播放类型')), - ('tts_autoplay', models.BooleanField(default=False, verbose_name='自动播放')), - ('stt_autosend', models.BooleanField(default=False, verbose_name='自动发送')), - ('clean_time', models.IntegerField(default=180, verbose_name='清理时间')), - ('file_upload_enable', models.BooleanField(default=False, verbose_name='文件上传是否启用')), - ('file_upload_setting', models.JSONField(default=dict, verbose_name='文件上传相关设置')), - ('application', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='application.application')), - ('user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user')), - ], - options={ - 'db_table': 'application_version', - }, - ), - migrations.DeleteModel( - name='WorkFlowVersion', - ), - ] diff --git a/apps/application/migrations/0005_chat_chat_record_count_chat_mark_sum_chat_star_num_and_more.py b/apps/application/migrations/0005_chat_chat_record_count_chat_mark_sum_chat_star_num_and_more.py deleted file mode 100644 index fcb788af6..000000000 --- a/apps/application/migrations/0005_chat_chat_record_count_chat_mark_sum_chat_star_num_and_more.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 5.2.3 on 2025-07-07 02:59 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('application', '0004_application_publish_time_applicationversion_and_more'), - ] - - operations = [ - migrations.AddField( - model_name='chat', - name='chat_record_count', - field=models.IntegerField(default=0, verbose_name='对话次数'), - ), - migrations.AddField( - model_name='chat', - name='mark_sum', - field=models.IntegerField(default=0, verbose_name='标记数量'), - ), - migrations.AddField( - model_name='chat', - name='star_num', - field=models.IntegerField(default=0, verbose_name='点赞数量'), - ), - migrations.AddField( - model_name='chat', - name='trample_num', - field=models.IntegerField(default=0, verbose_name='点踩数量'), - ), - ] diff --git a/apps/application/migrations/0006_alter_applicationfolder_user.py b/apps/application/migrations/0006_alter_applicationfolder_user.py deleted file mode 100644 index ef87d9870..000000000 --- a/apps/application/migrations/0006_alter_applicationfolder_user.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 5.2.4 on 2025-07-10 06:48 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('application', '0005_chat_chat_record_count_chat_mark_sum_chat_star_num_and_more'), - ('users', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='applicationfolder', - name='user', - field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user'), - ), - ] diff --git a/apps/knowledge/migrations/0001_initial.py b/apps/knowledge/migrations/0001_initial.py index 75a36f9b6..7a92a0c8d 100644 --- a/apps/knowledge/migrations/0001_initial.py +++ b/apps/knowledge/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 5.2.3 on 2025-06-23 02:14 +# Generated by Django 5.2.4 on 2025-07-13 06:33 import django.contrib.postgres.search import django.db.models.deletion @@ -57,8 +57,8 @@ class Migration(migrations.Migration): ('file_size_limit', models.IntegerField(default=100, verbose_name='文件大小限制')), ('file_count_limit', models.IntegerField(default=50, verbose_name='文件数量限制')), ('meta', models.JSONField(default=dict, verbose_name='元数据')), - ('embedding_model', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='models_provider.model', verbose_name='向量模型')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='users.user', verbose_name='所属用户')), + ('embedding_model', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='models_provider.model')), + ('user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user')), ], options={ 'db_table': 'knowledge', @@ -72,7 +72,7 @@ class Migration(migrations.Migration): ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')), ('name', models.CharField(max_length=150, verbose_name='文档名称')), ('char_length', models.IntegerField(verbose_name='文档字符数 冗余字段')), - ('status', models.CharField(default=knowledge.models.knowledge.Status.__str__, max_length=20, verbose_name='状态')), + ('status', models.CharField(default=knowledge.models.knowledge.get_default_status, max_length=20, verbose_name='状态')), ('status_meta', models.JSONField(default=knowledge.models.knowledge.default_status_meta, verbose_name='状态统计数据')), ('is_active', models.BooleanField(default=True)), ('type', models.IntegerField(choices=[(0, '通用类型'), (1, 'web站点类型'), (2, '飞书类型'), (3, '语雀类型')], default=0, verbose_name='类型')), @@ -99,7 +99,7 @@ class Migration(migrations.Migration): ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), ('level', models.PositiveIntegerField(editable=False)), ('parent', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='children', to='knowledge.knowledgefolder')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='users.user', verbose_name='用户id')), + ('user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user')), ], options={ 'db_table': 'knowledge_folder', @@ -118,7 +118,7 @@ class Migration(migrations.Migration): ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')), ('content', models.CharField(max_length=102400, verbose_name='段落内容')), ('title', models.CharField(default='', max_length=256, verbose_name='标题')), - ('status', models.CharField(default=knowledge.models.knowledge.Status.__str__, max_length=20, verbose_name='状态')), + ('status', models.CharField(default=knowledge.models.knowledge.get_default_status, max_length=20, verbose_name='状态')), ('status_meta', models.JSONField(default=knowledge.models.knowledge.default_status_meta, verbose_name='状态数据')), ('hit_num', models.IntegerField(default=0, verbose_name='命中次数')), ('is_active', models.BooleanField(default=True)), diff --git a/apps/knowledge/migrations/0002_alter_document_status_and_more.py b/apps/knowledge/migrations/0002_alter_document_status_and_more.py deleted file mode 100644 index b7dca7d0a..000000000 --- a/apps/knowledge/migrations/0002_alter_document_status_and_more.py +++ /dev/null @@ -1,37 +0,0 @@ -# Generated by Django 5.2.3 on 2025-06-26 03:39 - -import django.db.models.deletion -import knowledge.models.knowledge -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('knowledge', '0001_initial'), - ('models_provider', '0001_initial'), - ('users', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='document', - name='status', - field=models.CharField(default=knowledge.models.knowledge.get_default_status, max_length=20, verbose_name='状态'), - ), - migrations.AlterField( - model_name='knowledge', - name='embedding_model', - field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='models_provider.model'), - ), - migrations.AlterField( - model_name='knowledge', - name='user', - field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user'), - ), - migrations.AlterField( - model_name='paragraph', - name='status', - field=models.CharField(default=knowledge.models.knowledge.get_default_status, max_length=20, verbose_name='状态'), - ), - ] diff --git a/apps/knowledge/migrations/0003_alter_file_source_id_alter_file_source_type.py b/apps/knowledge/migrations/0003_alter_file_source_id_alter_file_source_type.py deleted file mode 100644 index 19288938f..000000000 --- a/apps/knowledge/migrations/0003_alter_file_source_id_alter_file_source_type.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 5.2.3 on 2025-07-07 02:59 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('knowledge', '0002_alter_document_status_and_more'), - ] - - operations = [ - migrations.AlterField( - model_name='file', - name='source_id', - field=models.CharField(default='TEMPORARY_120_MINUTE', verbose_name='资源id'), - ), - migrations.AlterField( - model_name='file', - name='source_type', - field=models.CharField(choices=[('KNOWLEDGE', 'Knowledge'), ('APPLICATION', 'Application'), ('TOOL', 'Tool'), ('DOCUMENT', 'Document'), ('CHAT', 'Chat'), ('TEMPORARY_30_MINUTE', 'Temporary 30 Minute'), ('TEMPORARY_120_MINUTE', 'Temporary 120 Minute'), ('TEMPORARY_1_DAY', 'Temporary 1 Day')], default='TEMPORARY_120_MINUTE', verbose_name='资源类型'), - ), - ] diff --git a/apps/knowledge/migrations/0004_alter_knowledgefolder_user.py b/apps/knowledge/migrations/0004_alter_knowledgefolder_user.py deleted file mode 100644 index a8d9259e7..000000000 --- a/apps/knowledge/migrations/0004_alter_knowledgefolder_user.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 5.2.4 on 2025-07-10 06:48 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('knowledge', '0003_alter_file_source_id_alter_file_source_type'), - ('users', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='knowledgefolder', - name='user', - field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user'), - ), - ] diff --git a/apps/models_provider/migrations/0001_initial.py b/apps/models_provider/migrations/0001_initial.py index 0494f8132..f53ae095b 100644 --- a/apps/models_provider/migrations/0001_initial.py +++ b/apps/models_provider/migrations/0001_initial.py @@ -27,6 +27,7 @@ def save_default_embedding_model(apps, schema_editor): class Migration(migrations.Migration): + initial = True dependencies = [ @@ -40,27 +41,21 @@ class Migration(migrations.Migration): fields=[ ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('update_time', models.DateTimeField(auto_now=True, verbose_name='修改时间')), - ('id', - models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, - verbose_name='主键id')), + ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')), ('name', models.CharField(max_length=128, verbose_name='名称')), - ('status', models.CharField(choices=[('SUCCESS', '成功'), ('ERROR', '失败'), ('DOWNLOAD', '下载中'), - ('PAUSE_DOWNLOAD', '暂停下载')], default='SUCCESS', max_length=20, - verbose_name='设置类型')), + ('status', models.CharField(choices=[('SUCCESS', '成功'), ('ERROR', '失败'), ('DOWNLOAD', '下载中'), ('PAUSE_DOWNLOAD', '暂停下载')], default='SUCCESS', max_length=20, verbose_name='设置类型')), ('model_type', models.CharField(max_length=128, verbose_name='模型类型')), ('model_name', models.CharField(max_length=128, verbose_name='模型名称')), ('provider', models.CharField(max_length=128, verbose_name='供应商')), ('credential', models.CharField(max_length=102400, verbose_name='模型认证信息')), ('meta', models.JSONField(default=dict, verbose_name='模型元数据,用于存储下载,或者错误信息')), ('model_params_form', models.JSONField(default=list, verbose_name='模型参数配置')), - ('workspace_id', - models.CharField(db_index=True, default='default', max_length=64, verbose_name='工作空间id')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='users.user', - verbose_name='成员用户id')), + ('workspace_id', models.CharField(db_index=True, default='default', max_length=64, verbose_name='工作空间id')), + ('user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user')), ], options={ 'db_table': 'model', - 'unique_together': {('name', 'user_id')}, + 'unique_together': {('name', 'workspace_id')}, }, ), migrations.RunPython(save_default_embedding_model), diff --git a/apps/models_provider/migrations/0002_alter_model_unique_together_alter_model_user.py b/apps/models_provider/migrations/0002_alter_model_unique_together_alter_model_user.py deleted file mode 100644 index 7eeb4e73c..000000000 --- a/apps/models_provider/migrations/0002_alter_model_unique_together_alter_model_user.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 5.2.3 on 2025-06-26 03:39 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('models_provider', '0001_initial'), - ('users', '0001_initial'), - ] - - operations = [ - migrations.AlterUniqueTogether( - name='model', - unique_together={('name', 'workspace_id')}, - ), - migrations.AlterField( - model_name='model', - name='user', - field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user'), - ), - ] diff --git a/apps/system_manage/migrations/0001_initial.py b/apps/system_manage/migrations/0001_initial.py index 1b4296ed5..5078e3ff4 100644 --- a/apps/system_manage/migrations/0001_initial.py +++ b/apps/system_manage/migrations/0001_initial.py @@ -1,9 +1,8 @@ -# Generated by Django 5.2.3 on 2025-06-23 02:14 +# Generated by Django 5.2.4 on 2025-07-13 06:33 import common.encoder.encoder import django.contrib.postgres.fields import django.db.models.deletion -import uuid import uuid_utils.compat from django.db import migrations, models @@ -53,13 +52,13 @@ class Migration(migrations.Migration): fields=[ ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')), ('workspace_id', models.CharField(default='default', max_length=128, verbose_name='工作空间id')), - ('auth_target_type', models.CharField(choices=[('KNOWLEDGE', '知识库'), ('APPLICATION', '应用')], default='KNOWLEDGE', max_length=128, verbose_name='授权目标')), + ('auth_target_type', models.CharField(choices=[('KNOWLEDGE', '知识库'), ('APPLICATION', '应用'), ('TOOL', '工具'), ('MODEL', '模型')], default='KNOWLEDGE', max_length=128, verbose_name='授权目标')), ('target', models.UUIDField(verbose_name='知识库/应用id')), ('auth_type', models.CharField(choices=[('ROLE', 'Role'), ('RESOURCE_PERMISSION_GROUP', 'Resource Permission Group')], db_default='ROLE', default=False, verbose_name='授权类型')), ('permission_list', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True, choices=[('VIEW', 'View'), ('MANAGE', 'Manage'), ('ROLE', 'Role')], default='VIEW', max_length=256), default=list, size=None, verbose_name='权限列表')), ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('update_time', models.DateTimeField(auto_now=True, verbose_name='修改时间')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='users.user', verbose_name='工作空间下的用户')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.user', verbose_name='工作空间下的用户')), ], options={ 'db_table': 'workspace_user_resource_permission', diff --git a/apps/system_manage/migrations/0002_alter_workspaceuserresourcepermission_user.py b/apps/system_manage/migrations/0002_alter_workspaceuserresourcepermission_user.py deleted file mode 100644 index 08a252c6b..000000000 --- a/apps/system_manage/migrations/0002_alter_workspaceuserresourcepermission_user.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 5.2.1 on 2025-06-24 10:02 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('system_manage', '0001_initial'), - ('users', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='workspaceuserresourcepermission', - name='user', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.user', verbose_name='工作空间下的用户'), - ), - ] diff --git a/apps/system_manage/migrations/0003_alter_workspaceuserresourcepermission_auth_target_type.py b/apps/system_manage/migrations/0003_alter_workspaceuserresourcepermission_auth_target_type.py deleted file mode 100644 index 8673e5a51..000000000 --- a/apps/system_manage/migrations/0003_alter_workspaceuserresourcepermission_auth_target_type.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.2.3 on 2025-06-26 09:44 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('system_manage', '0002_alter_workspaceuserresourcepermission_user'), - ] - - operations = [ - migrations.AlterField( - model_name='workspaceuserresourcepermission', - name='auth_target_type', - field=models.CharField(choices=[('KNOWLEDGE', '知识库'), ('APPLICATION', '应用'), ('TOOL', '工具'), ('MODEL', '模型')], default='KNOWLEDGE', max_length=128, verbose_name='授权目标'), - ), - ] diff --git a/apps/tools/migrations/0001_initial.py b/apps/tools/migrations/0001_initial.py index 67b2b2cd0..883847d74 100644 --- a/apps/tools/migrations/0001_initial.py +++ b/apps/tools/migrations/0001_initial.py @@ -39,7 +39,7 @@ class Migration(migrations.Migration): ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), ('level', models.PositiveIntegerField(editable=False)), ('parent', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='children', to='tools.toolfolder')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='users.user', verbose_name='用户id')), + ('user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user')), ], options={ 'db_table': 'tool_folder', @@ -65,7 +65,7 @@ class Migration(migrations.Migration): ('workspace_id', models.CharField(db_index=True, default='default', max_length=64, verbose_name='工作空间id')), ('init_params', models.CharField(max_length=102400, null=True, verbose_name='初始化参数')), ('label', models.CharField(max_length=128, null=True, verbose_name='标签')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='users.user', verbose_name='用户id')), + ('user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user')), ('folder', models.ForeignKey(default='default', on_delete=django.db.models.deletion.DO_NOTHING, to='tools.toolfolder', verbose_name='文件夹id')), ], options={ diff --git a/apps/tools/migrations/0002_alter_tool_user_alter_toolfolder_user.py b/apps/tools/migrations/0002_alter_tool_user_alter_toolfolder_user.py deleted file mode 100644 index c7bd1db8b..000000000 --- a/apps/tools/migrations/0002_alter_tool_user_alter_toolfolder_user.py +++ /dev/null @@ -1,25 +0,0 @@ -# Generated by Django 5.2.3 on 2025-07-04 07:03 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('tools', '0001_initial'), - ('users', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='tool', - name='user', - field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user'), - ), - migrations.AlterField( - model_name='toolfolder', - name='user', - field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user'), - ), - ] diff --git a/apps/users/migrations/0001_initial.py b/apps/users/migrations/0001_initial.py index fb7ee6815..0d389d99f 100644 --- a/apps/users/migrations/0001_initial.py +++ b/apps/users/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 5.2.3 on 2025-06-23 02:14 +# Generated by Django 5.2.4 on 2025-07-13 06:33 import uuid_utils.compat from django.db import migrations, models @@ -20,6 +20,7 @@ def insert_default_data(apps, schema_editor): class Migration(migrations.Migration): + initial = True dependencies = [ @@ -29,9 +30,7 @@ class Migration(migrations.Migration): migrations.CreateModel( name='User', fields=[ - ('id', - models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, - verbose_name='主键id')), + ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')), ('email', models.EmailField(blank=True, max_length=254, null=True, unique=True, verbose_name='邮箱')), ('phone', models.CharField(default='', max_length=20, verbose_name='电话')), ('nick_name', models.CharField(max_length=150, unique=True, verbose_name='昵称')),