diff --git a/apps/application/migrations/0020_application_record_update_time.py b/apps/application/migrations/0020_application_record_update_time.py new file mode 100644 index 00000000000..dc1d14081cc --- /dev/null +++ b/apps/application/migrations/0020_application_record_update_time.py @@ -0,0 +1,22 @@ +from django.db import migrations, connection + +batch_update_update_time = """ +UPDATE application_chat ac +SET update_time = acr_max.max_update_time +FROM ( + SELECT chat_id, MAX(update_time) AS max_update_time + FROM application_chat_record + GROUP BY chat_id +) acr_max +WHERE ac.id = acr_max.chat_id; +""" + + +class Migration(migrations.Migration): + dependencies = [ + ('application', '0019_application_file_upload_enable_and_more.py'), + ] + + operations = [ + migrations.RunPython(batch_update_update_time), + ] diff --git a/apps/application/serializers/chat_message_serializers.py b/apps/application/serializers/chat_message_serializers.py index b14e9f33e3f..455ef6a670c 100644 --- a/apps/application/serializers/chat_message_serializers.py +++ b/apps/application/serializers/chat_message_serializers.py @@ -6,6 +6,7 @@ @date:2023/11/14 13:51 @desc: """ +from datetime import datetime import uuid from typing import List, Dict from uuid import UUID @@ -125,7 +126,9 @@ def append_chat_record(self, chat_record: ChatRecord, client_id=None): # 插入数据库 if not QuerySet(Chat).filter(id=self.chat_id).exists(): Chat(id=self.chat_id, application_id=self.application.id, abstract=chat_record.problem_text[0:1024], - client_id=client_id).save() + client_id=client_id, update_time=datetime.now()).save() + else: + Chat.objects.filter(id=self.chat_id).update(update_time=datetime.now()) # 插入会话记录 chat_record.save() diff --git a/apps/application/serializers/chat_serializers.py b/apps/application/serializers/chat_serializers.py index ad25ac7d915..45e18a1ed9d 100644 --- a/apps/application/serializers/chat_serializers.py +++ b/apps/application/serializers/chat_serializers.py @@ -127,12 +127,12 @@ def get_query_set(self, select_ids=None): "star_num": models.IntegerField(), 'trample_num': models.IntegerField(), 'comparer': models.CharField(), - 'application_chat.create_time': models.DateTimeField(), + 'application_chat.update_time': models.DateTimeField(), 'application_chat.id': models.UUIDField(), })) base_query_dict = {'application_chat.application_id': self.data.get("application_id"), - 'application_chat.create_time__gte': start_time, - 'application_chat.create_time__lte': end_time, + 'application_chat.update_time__gte': start_time, + 'application_chat.update_time__lte': end_time, } if 'abstract' in self.data and self.data.get('abstract') is not None: base_query_dict['application_chat.abstract__icontains'] = self.data.get('abstract') @@ -158,7 +158,7 @@ def get_query_set(self, select_ids=None): condition = base_condition & min_trample_query else: condition = base_condition - return query_set.filter(condition).order_by("-application_chat.create_time") + return query_set.filter(condition).order_by("-application_chat.update_time") def list(self, with_valid=True): if with_valid: diff --git a/ui/src/views/log/index.vue b/ui/src/views/log/index.vue index 9df70acb6ba..eb1b0c3aacb 100644 --- a/ui/src/views/log/index.vue +++ b/ui/src/views/log/index.vue @@ -123,9 +123,9 @@ - +