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 9ce08d546..d0c1d54b8 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 @@ -9,7 +9,7 @@ import logging import time import traceback -import uuid +import uuid_utils.compat as uuid from typing import List from django.db.models import QuerySet @@ -238,7 +238,7 @@ class BaseChatStep(IChatStep): model_setting=None): chat_result, is_ai_chat = self.get_stream_result(message_list, chat_model, paragraph_list, no_references_setting, problem_text) - chat_record_id = uuid.uuid1() + chat_record_id = uuid.uuid7() r = StreamingHttpResponse( streaming_content=event_content(chat_result, chat_id, chat_record_id, paragraph_list, post_response_handler, manage, self, chat_model, message_list, problem_text, @@ -286,7 +286,7 @@ class BaseChatStep(IChatStep): reasoning_content_end = model_setting.get('reasoning_content_end', '') reasoning = Reasoning(reasoning_content_start, reasoning_content_end) - chat_record_id = uuid.uuid1() + chat_record_id = uuid.uuid7() # 调用模型 try: chat_result, is_ai_chat = self.get_block_result(message_list, chat_model, paragraph_list, diff --git a/apps/application/migrations/0001_initial.py b/apps/application/migrations/0001_initial.py index e1aa4f6b2..012187bc9 100644 --- a/apps/application/migrations/0001_initial.py +++ b/apps/application/migrations/0001_initial.py @@ -90,7 +90,7 @@ 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.uuid1, 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')), ('secret_key', models.CharField(max_length=1024, unique=True, verbose_name='秘钥')), ('workspace_id', models.CharField(db_index=True, default='default', max_length=64, verbose_name='工作空间id')), ('is_active', models.BooleanField(default=True, verbose_name='是否开启')), @@ -162,7 +162,7 @@ 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.uuid1, 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')), ('vote_status', models.CharField(choices=[('-1', '未投票'), ('0', '赞同'), ('1', '反对')], default='-1', max_length=10, verbose_name='投票')), ('problem_text', models.CharField(max_length=10240, verbose_name='问题')), ('answer_text', models.CharField(max_length=40960, verbose_name='答案')), @@ -185,7 +185,7 @@ 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.uuid1, 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')), ('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')), diff --git a/apps/application/models/application.py b/apps/application/models/application.py index aa9ca9415..462d44557 100644 --- a/apps/application/models/application.py +++ b/apps/application/models/application.py @@ -120,7 +120,7 @@ class ApplicationKnowledgeMapping(AppModelMixin): class WorkFlowVersion(AppModelMixin): - id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid1, editable=False, verbose_name="主键id") + 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) workspace_id = models.CharField(max_length=64, verbose_name="工作空间id", default="default", db_index=True) name = models.CharField(verbose_name="版本名称", max_length=128, default="") diff --git a/apps/application/models/application_api_key.py b/apps/application/models/application_api_key.py index 5bf139a87..a53b68658 100644 --- a/apps/application/models/application_api_key.py +++ b/apps/application/models/application_api_key.py @@ -1,4 +1,4 @@ -import uuid +import uuid_utils.compat as uuid from django.contrib.postgres.fields import ArrayField from django.db import models @@ -9,7 +9,7 @@ from users.models import User class ApplicationApiKey(AppModelMixin): - id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid1, editable=False, verbose_name="主键id") + id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id") secret_key = models.CharField(max_length=1024, verbose_name="秘钥", unique=True) user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="用户id") workspace_id = models.CharField(max_length=64, verbose_name="工作空间id", default="default", db_index=True) diff --git a/apps/application/models/application_chat.py b/apps/application/models/application_chat.py index 8c2a22633..00510bf15 100644 --- a/apps/application/models/application_chat.py +++ b/apps/application/models/application_chat.py @@ -48,7 +48,7 @@ class ChatRecord(AppModelMixin): """ 对话日志 详情 """ - id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid1, editable=False, verbose_name="主键id") + id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id") chat = models.ForeignKey(Chat, on_delete=models.CASCADE) vote_status = models.CharField(verbose_name='投票', max_length=10, choices=VoteChoices.choices, default=VoteChoices.UN_VOTE) diff --git a/apps/application/serializers/application.py b/apps/application/serializers/application.py index 57dc73560..a16a3e925 100644 --- a/apps/application/serializers/application.py +++ b/apps/application/serializers/application.py @@ -246,7 +246,7 @@ class ApplicationCreateSerializer(serializers.Serializer): @staticmethod def to_application_model(user_id: str, application: Dict): - return Application(id=uuid.uuid1(), name=application.get('name'), desc=application.get('desc'), + return Application(id=uuid.uuid7(), name=application.get('name'), desc=application.get('desc'), prologue=application.get('prologue'), dialogue_number=application.get('dialogue_number', 0), user_id=user_id, model_id=application.get('model_id'), @@ -429,12 +429,12 @@ class ApplicationSerializer(serializers.Serializer): application_model.save() # 插入认证信息 ApplicationAccessToken(application_id=application_model.id, - access_token=hashlib.md5(str(uuid.uuid1()).encode()).hexdigest()[8:24]).save() + access_token=hashlib.md5(str(uuid.uuid7()).encode()).hexdigest()[8:24]).save() return ApplicationCreateSerializer.ApplicationResponse(application_model).data @staticmethod def to_application_knowledge_mapping(application_id: str, dataset_id: str): - return ApplicationKnowledgeMapping(id=uuid.uuid1(), application_id=application_id, dataset_id=dataset_id) + return ApplicationKnowledgeMapping(id=uuid.uuid7(), application_id=application_id, dataset_id=dataset_id) def insert_simple(self, instance: Dict): self.is_valid(raise_exception=True) @@ -449,7 +449,7 @@ class ApplicationSerializer(serializers.Serializer): application_model.save() # 插入认证信息 ApplicationAccessToken(application_id=application_model.id, - access_token=hashlib.md5(str(uuid.uuid1()).encode()).hexdigest()[8:24]).save() + access_token=hashlib.md5(str(uuid.uuid7()).encode()).hexdigest()[8:24]).save() # 插入关联数据 QuerySet(ApplicationKnowledgeMapping).bulk_create(application_knowledge_mapping_model_list) return ApplicationCreateSerializer.ApplicationResponse(application_model).data @@ -484,7 +484,7 @@ class ApplicationSerializer(serializers.Serializer): application_model.save() # 插入认证信息 ApplicationAccessToken(application_id=application_model.id, - access_token=hashlib.md5(str(uuid.uuid1()).encode()).hexdigest()[8:24]).save() + access_token=hashlib.md5(str(uuid.uuid7()).encode()).hexdigest()[8:24]).save() QuerySet(Tool).bulk_create(tool_model_list) if len(tool_model_list) > 0 else None return True @@ -511,7 +511,7 @@ class ApplicationSerializer(serializers.Serializer): for node in work_flow.get('nodes', []): if node.get('type') == 'search-dataset-node': node.get('properties', {}).get('node_data', {})['dataset_id_list'] = [] - return Application(id=uuid.uuid1(), + return Application(id=uuid.uuid7(), user_id=user_id, name=application.get('name'), workspace_id=workspace_id, diff --git a/apps/application/serializers/application_access_token.py b/apps/application/serializers/application_access_token.py index cf5f37a1e..bfbfde8e4 100644 --- a/apps/application/serializers/application_access_token.py +++ b/apps/application/serializers/application_access_token.py @@ -7,7 +7,7 @@ @desc: """ import hashlib -import uuid +import uuid_utils.compat as uuid from django.core.cache import cache from django.db.models import QuerySet @@ -53,7 +53,7 @@ class AccessTokenSerializer(serializers.Serializer): if 'is_active' in instance: application_access_token.is_active = instance.get("is_active") if 'access_token_reset' in instance and instance.get('access_token_reset'): - application_access_token.access_token = hashlib.md5(str(uuid.uuid1()).encode()).hexdigest()[8:24] + application_access_token.access_token = hashlib.md5(str(uuid.uuid7()).encode()).hexdigest()[8:24] if 'access_num' in instance and instance.get('access_num') is not None: application_access_token.access_num = instance.get("access_num") if 'white_active' in instance and instance.get('white_active') is not None: @@ -91,7 +91,7 @@ class AccessTokenSerializer(serializers.Serializer): if application_access_token is None: application_access_token = ApplicationAccessToken(application_id=application_id, access_token=hashlib.md5( - str(uuid.uuid1()).encode()).hexdigest()[ + str(uuid.uuid7()).encode()).hexdigest()[ 8:24], is_active=True) application_access_token.save() application_setting_model = DatabaseModelManage.get_model('application_setting') diff --git a/apps/application/serializers/application_api_key.py b/apps/application/serializers/application_api_key.py index a430f2537..61fa155da 100644 --- a/apps/application/serializers/application_api_key.py +++ b/apps/application/serializers/application_api_key.py @@ -45,8 +45,8 @@ class ApplicationKeySerializer(serializers.Serializer): self.is_valid(raise_exception=True) application_id = self.data.get("application_id") application = QuerySet(Application).filter(id=application_id).first() - secret_key = 'application-' + hashlib.md5(str(uuid.uuid1()).encode()).hexdigest() - application_api_key = ApplicationApiKey(id=uuid.uuid1(), + secret_key = 'application-' + hashlib.md5(str(uuid.uuid7()).encode()).hexdigest() + application_api_key = ApplicationApiKey(id=uuid.uuid7(), secret_key=secret_key, user_id=application.user_id, application_id=application_id) diff --git a/apps/application/serializers/application_chat_record.py b/apps/application/serializers/application_chat_record.py index d1c3eef87..ce3836a42 100644 --- a/apps/application/serializers/application_chat_record.py +++ b/apps/application/serializers/application_chat_record.py @@ -6,7 +6,7 @@ @date:2025/6/10 15:10 @desc: """ -import uuid +import uuid_utils.compat as uuid from functools import reduce from typing import Dict @@ -208,7 +208,7 @@ class ApplicationChatRecordAddKnowledgeSerializer(serializers.Serializer): problem_paragraph_mappings = [] for chat_record in chat_record_list: paragraph = Paragraph( - id=uuid.uuid1(), + id=uuid.uuid7(), document_id=document_id, content=chat_record.answer_text, knowledge_id=knowledge_id, @@ -216,7 +216,7 @@ class ApplicationChatRecordAddKnowledgeSerializer(serializers.Serializer): ) problem, _ = Problem.objects.get_or_create(content=chat_record.problem_text, knowledge_id=knowledge_id) problem_paragraph_mapping = ProblemParagraphMapping( - id=uuid.uuid1(), + id=uuid.uuid7(), knowledge_id=knowledge_id, document_id=document_id, problem_id=problem.id, @@ -284,7 +284,7 @@ class ApplicationChatRecordImproveSerializer(serializers.Serializer): max_position=Max('position') )['max_position'] or 0 paragraph = Paragraph( - id=uuid.uuid1(), + id=uuid.uuid7(), document_id=document_id, content=instance.get("content"), knowledge_id=knowledge_id, @@ -294,7 +294,7 @@ class ApplicationChatRecordImproveSerializer(serializers.Serializer): problem_text = instance.get('problem_text') if instance.get( 'problem_text') is not None else chat_record.problem_text problem, _ = QuerySet(Problem).get_or_create(content=problem_text, knowledge_id=knowledge_id) - problem_paragraph_mapping = ProblemParagraphMapping(id=uuid.uuid1(), knowledge_id=knowledge_id, + problem_paragraph_mapping = ProblemParagraphMapping(id=uuid.uuid7(), knowledge_id=knowledge_id, document_id=document_id, problem_id=problem.id, paragraph_id=paragraph.id) diff --git a/apps/application/views/application_chat.py b/apps/application/views/application_chat.py index 9ee81c5ab..1eb10986d 100644 --- a/apps/application/views/application_chat.py +++ b/apps/application/views/application_chat.py @@ -6,7 +6,7 @@ @date:2025/6/10 11:00 @desc: """ -import uuid +import uuid_utils.compat as uuid from django.utils.translation import gettext_lazy as _ from drf_spectacular.utils import extend_schema @@ -114,7 +114,7 @@ class OpenView(APIView): def get(self, request: Request, workspace_id: str, application_id: str): return result.success(OpenChatSerializers( data={'workspace_id': workspace_id, 'application_id': application_id, - 'chat_user_id': str(uuid.uuid1()), 'chat_user_type': ChatUserType.ANONYMOUS_USER, + 'chat_user_id': str(uuid.uuid7()), 'chat_user_type': ChatUserType.ANONYMOUS_USER, 'debug': True}).open()) diff --git a/apps/chat/serializers/chat.py b/apps/chat/serializers/chat.py index 33ad6c5aa..903b985dc 100644 --- a/apps/chat/serializers/chat.py +++ b/apps/chat/serializers/chat.py @@ -232,7 +232,7 @@ class ChatSerializers(serializers.Serializer): work_flow_manage = WorkflowManage(Workflow.new_instance(work_flow), {'history_chat_record': history_chat_record, 'question': message, 'chat_id': chat_info.chat_id, 'chat_record_id': str( - uuid.uuid1()) if chat_record is None else chat_record.id, + uuid.uuid7()) if chat_record is None else chat_record.id, 'stream': stream, 're_chat': re_chat, 'chat_user_id': chat_user_id, diff --git a/apps/chat/serializers/chat_authentication.py b/apps/chat/serializers/chat_authentication.py index 0b83ca4df..ec43b27c6 100644 --- a/apps/chat/serializers/chat_authentication.py +++ b/apps/chat/serializers/chat_authentication.py @@ -6,7 +6,7 @@ @date:2025/6/6 13:48 @desc: """ -import uuid +import uuid_utils.compat as uuid from django.core import signing from django.core.cache import cache @@ -41,7 +41,7 @@ class AnonymousAuthenticationSerializer(serializers.Serializer): access_token = self.data.get("access_token") application_access_token = QuerySet(ApplicationAccessToken).filter(access_token=access_token).first() if application_access_token is not None and application_access_token.is_active: - chat_user_id = token_details.get('chat_user_id') or str(uuid.uuid1()) + chat_user_id = token_details.get('chat_user_id') or str(uuid.uuid7()) _type = AuthenticationType.CHAT_ANONYMOUS_USER return ChatUserToken(application_access_token.application_id, None, access_token, _type, ChatUserType.ANONYMOUS_USER, diff --git a/apps/chat/serializers/chat_embed_serializers.py b/apps/chat/serializers/chat_embed_serializers.py index 977b7fed4..3b35325af 100644 --- a/apps/chat/serializers/chat_embed_serializers.py +++ b/apps/chat/serializers/chat_embed_serializers.py @@ -7,7 +7,7 @@ @desc: """ import os -import uuid +import uuid_utils.compat as uuid from django.db.models import QuerySet from django.http import HttpResponse @@ -78,7 +78,7 @@ class ChatEmbedSerializer(serializers.Serializer): 'x_value': float_location.get('x', {}).get('value', 0), 'y_type': float_location.get('y', {}).get('type', 'bottom'), 'y_value': float_location.get('y', {}).get('value', 30), - 'max_kb_id': str(uuid.uuid1()).replace('-', ''), + 'max_kb_id': str(uuid.uuid7()).replace('-', ''), 'header_font_color': header_font_color})) response = HttpResponse(s, status=200, headers={'Content-Type': 'text/javascript'}) return response diff --git a/apps/common/utils/function_code.py b/apps/common/utils/function_code.py index 237a1385b..41d2af1a5 100644 --- a/apps/common/utils/function_code.py +++ b/apps/common/utils/function_code.py @@ -10,7 +10,7 @@ import os import pickle import subprocess import sys -import uuid +import uuid_utils.compat as uuid from textwrap import dedent from maxkb.const import BASE_DIR @@ -42,7 +42,7 @@ class FunctionExecutor: os.umask(old_mask) def exec_code(self, code_str, keywords): - _id = str(uuid.uuid1()) + _id = str(uuid.uuid7()) success = '{"code":200,"msg":"成功","data":exec_result}' err = '{"code":500,"msg":str(e),"data":None}' result_path = f'{self.sandbox_path}/result/{_id}.result' diff --git a/apps/knowledge/serializers/document.py b/apps/knowledge/serializers/document.py index b79e5a308..b3ecfb517 100644 --- a/apps/knowledge/serializers/document.py +++ b/apps/knowledge/serializers/document.py @@ -336,7 +336,7 @@ class DocumentSerializers(serializers.Serializer): problem_paragraph_mapping.problem_id = problem.id return problem, False else: - problem = Problem(id=uuid.uuid1(), knowledge_id=target_knowledge_id, content=problem_content) + problem = Problem(id=uuid.uuid7(), knowledge_id=target_knowledge_id, content=problem_content) target_problem_list.append(problem) problem_paragraph_mapping.problem_id = problem.id return problem, True diff --git a/apps/knowledge/serializers/paragraph.py b/apps/knowledge/serializers/paragraph.py index 65bda687f..bf3014cf0 100644 --- a/apps/knowledge/serializers/paragraph.py +++ b/apps/knowledge/serializers/paragraph.py @@ -548,7 +548,7 @@ class ParagraphSerializers(serializers.Serializer): problem_paragraph_mapping.problem_id = problem.id return problem, False else: - problem = Problem(id=uuid.uuid1(), knowledge_id=target_knowledge_id, content=problem_content) + problem = Problem(id=uuid.uuid7(), knowledge_id=target_knowledge_id, content=problem_content) target_problem_list.append(problem) problem_paragraph_mapping.problem_id = problem.id return problem, True diff --git a/apps/models_provider/impl/volcanic_engine_model_provider/model/stt.py b/apps/models_provider/impl/volcanic_engine_model_provider/model/stt.py index b2ab25572..35e9167cf 100644 --- a/apps/models_provider/impl/volcanic_engine_model_provider/model/stt.py +++ b/apps/models_provider/impl/volcanic_engine_model_provider/model/stt.py @@ -13,7 +13,7 @@ import hmac import json import os import ssl -import uuid +import uuid_utils.compat as uuid import wave from hashlib import sha256 from io import BytesIO @@ -285,7 +285,7 @@ class VolcanicEngineSpeechToText(MaxKBBaseModel, BaseSpeechToText): return header_dicts async def segment_data_processor(self, wav_data: bytes, segment_size: int): - reqid = str(uuid.uuid4()) + reqid = str(uuid.uuid7()) # 构建 full client request,并序列化压缩 request_params = self.construct_request(reqid) payload_bytes = str.encode(json.dumps(request_params)) diff --git a/apps/models_provider/impl/volcanic_engine_model_provider/model/tts.py b/apps/models_provider/impl/volcanic_engine_model_provider/model/tts.py index 6f8f3c600..c6a462f7e 100644 --- a/apps/models_provider/impl/volcanic_engine_model_provider/model/tts.py +++ b/apps/models_provider/impl/volcanic_engine_model_provider/model/tts.py @@ -14,7 +14,7 @@ import gzip import json import re import ssl -import uuid +import uuid_utils.compat as uuid from typing import Dict import websockets @@ -92,7 +92,7 @@ class VolcanicEngineTextToSpeech(MaxKBBaseModel, BaseTextToSpeech): "pitch_ratio": 1.0, } | self.params, "request": { - "reqid": str(uuid.uuid4()), + "reqid": str(uuid.uuid7()), "text": '', "text_type": "plain", "operation": "xxx" @@ -119,7 +119,7 @@ class VolcanicEngineTextToSpeech(MaxKBBaseModel, BaseTextToSpeech): for line in lines: if self.is_table_format_chars_only(line): continue - submit_request_json["request"]["reqid"] = str(uuid.uuid4()) + submit_request_json["request"]["reqid"] = str(uuid.uuid7()) submit_request_json["request"]["text"] = line payload_bytes = str.encode(json.dumps(submit_request_json)) payload_bytes = gzip.compress(payload_bytes) # if no compression, comment this line diff --git a/apps/system_manage/migrations/0001_initial.py b/apps/system_manage/migrations/0001_initial.py index 1877dd47c..1b4296ed5 100644 --- a/apps/system_manage/migrations/0001_initial.py +++ b/apps/system_manage/migrations/0001_initial.py @@ -22,7 +22,7 @@ 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.uuid1, 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')), ('menu', models.CharField(max_length=128, verbose_name='操作菜单')), ('operate', models.CharField(max_length=128, verbose_name='操作')), ('operation_object', models.JSONField(default=dict, encoder=common.encoder.encoder.SystemEncoder, verbose_name='操作对象')), diff --git a/apps/system_manage/models/log_management.py b/apps/system_manage/models/log_management.py index 2150d1614..c443c0588 100644 --- a/apps/system_manage/models/log_management.py +++ b/apps/system_manage/models/log_management.py @@ -6,7 +6,7 @@ @date:2025/6/4 14:15 @desc: """ -import uuid +import uuid_utils.compat as uuid from django.db import models @@ -18,7 +18,7 @@ class Log(AppModelMixin): """ 审计日志 """ - id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid1, editable=False, verbose_name="主键id") + id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id") menu = models.CharField(max_length=128, verbose_name="操作菜单")