From 5dc51836eff5b403fe125d83cf34c09303e78202 Mon Sep 17 00:00:00 2001 From: wxg0103 <727495428@qq.com> Date: Tue, 1 Jul 2025 11:14:28 +0800 Subject: [PATCH] refactor: chat --- .../step/chat_step/impl/base_chat_step.py | 9 ++--- .../0003_chat_asker_chat_meta_and_more.py | 40 +++++++++++++++++++ apps/application/models/application_chat.py | 9 ++++- apps/users/serializers/user.py | 3 -- 4 files changed, 52 insertions(+), 9 deletions(-) create mode 100644 apps/application/migrations/0003_chat_asker_chat_meta_and_more.py diff --git a/apps/application/chat_pipeline/step/chat_step/impl/base_chat_step.py b/apps/application/chat_pipeline/step/chat_step/impl/base_chat_step.py index 163e59fa2..f695340e3 100644 --- a/apps/application/chat_pipeline/step/chat_step/impl/base_chat_step.py +++ b/apps/application/chat_pipeline/step/chat_step/impl/base_chat_step.py @@ -309,9 +309,8 @@ class BaseChatStep(IChatStep): 'reasoning_content') asker = manage.context.get('form_data', {}).get('asker', None) post_response_handler.handler(chat_id, chat_record_id, paragraph_list, problem_text, - content, manage, self, padding_problem_text, client_id, - reasoning_content=reasoning_content if reasoning_content_enable else '', - asker=asker) + chat_id, manage, self, padding_problem_text, + reasoning_content=reasoning_content if reasoning_content_enable else '') add_access_num(client_id, client_type, manage.context.get('application_id')) return manage.get_base_to_response().to_block_response(str(chat_id), str(chat_record_id), content, True, @@ -327,8 +326,8 @@ class BaseChatStep(IChatStep): write_context(self, manage, 0, 0, all_text) asker = manage.context.get('form_data', {}).get('asker', None) post_response_handler.handler(chat_id, chat_record_id, paragraph_list, problem_text, - all_text, manage, self, padding_problem_text, client_id, reasoning_content='', - asker=asker) + chat_id, manage, self, padding_problem_text, + reasoning_content='') add_access_num(client_id, client_type, manage.context.get('application_id')) return manage.get_base_to_response().to_block_response(str(chat_id), str(chat_record_id), all_text, True, 0, 0, _status=status.HTTP_500_INTERNAL_SERVER_ERROR) 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 new file mode 100644 index 000000000..42a860df3 --- /dev/null +++ b/apps/application/migrations/0003_chat_asker_chat_meta_and_more.py @@ -0,0 +1,40 @@ +# 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/models/application_chat.py b/apps/application/models/application_chat.py index 139373449..f66c5c946 100644 --- a/apps/application/models/application_chat.py +++ b/apps/application/models/application_chat.py @@ -22,16 +22,23 @@ class ChatUserType(models.TextChoices): CHAT_USER = "CHAT_USER", "对话用户" SYSTEM_API_KEY = "SYSTEM_API_KEY", "系统API_KEY" APPLICATION_API_KEY = "APPLICATION_API_KEY", "应用API_KEY" + PLATFORM_USER = "PLATFORM_USER", "平台用户" + + +def default_asker(): + return {'user_name': '游客'} class Chat(AppModelMixin): id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id") application = models.ForeignKey(Application, on_delete=models.CASCADE) abstract = models.CharField(max_length=1024, verbose_name="摘要") - chat_user_id = models.UUIDField(verbose_name="客户端id", default=None, null=True) + chat_user_id = models.CharField(verbose_name="对话用户id", default=None, null=True) chat_user_type = models.CharField(max_length=64, verbose_name="客户端类型", choices=ChatUserType.choices, default=ChatUserType.ANONYMOUS_USER) is_deleted = models.BooleanField(verbose_name="逻辑删除", default=False) + asker = models.JSONField(verbose_name="访问者", default=default_asker, encoder=SystemEncoder) + meta = models.JSONField(verbose_name="元数据", default=dict) class Meta: db_table = "application_chat" diff --git a/apps/users/serializers/user.py b/apps/users/serializers/user.py index a7fe3c8ab..0a1f0b19a 100644 --- a/apps/users/serializers/user.py +++ b/apps/users/serializers/user.py @@ -270,9 +270,6 @@ class UserManageSerializer(serializers.Serializer): user['role_setting'] = user_role_setting_mapping.get(user_id, []) return result - @valid_license(model=User, count=2, - message=_( - 'The community version supports up to 2 users. If you need more users, please contact us (https://fit2cloud.com/).')) @transaction.atomic def save(self, instance, with_valid=True): if with_valid: