diff --git a/api/models/chatflow_memory.py b/api/models/chatflow_memory.py index 773c69405d..b02b809cd7 100644 --- a/api/models/chatflow_memory.py +++ b/api/models/chatflow_memory.py @@ -67,7 +67,10 @@ class ChatflowMessage(Base): id: Mapped[str] = mapped_column(StringUUID, primary_key=True, server_default=sa.text("uuid_generate_v4()")) conversation_id: Mapped[str] = mapped_column(StringUUID, nullable=False) - index: Mapped[int] = mapped_column(sa.Integer, nullable=False) + index: Mapped[int] = mapped_column(sa.Integer, nullable=False) # This index starts from 0 version: Mapped[int] = mapped_column(sa.Integer, nullable=False) data: Mapped[str] = mapped_column(sa.Text, nullable=False) # Serialized PromptMessage JSON created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp()) + updated_at: Mapped[datetime] = mapped_column( + DateTime, nullable=False, server_default=func.current_timestamp(), onupdate=func.current_timestamp() + ) diff --git a/api/services/chatflow_history_service.py b/api/services/chatflow_history_service.py index 915d5ff2c8..521cf22218 100644 --- a/api/services/chatflow_history_service.py +++ b/api/services/chatflow_history_service.py @@ -68,21 +68,21 @@ class ChatflowHistoryService: next_index = max_index + 1 # Save new message to append-only table - message_data = { - 'role': prompt_message.role.value, - 'content': prompt_message.get_text_content(), - 'timestamp': time.time() - } - new_message = ChatflowMessage( conversation_id=chatflow_conv.id, index=next_index, version=1, - data=json.dumps(message_data) + data=json.dumps(prompt_message) ) session.add(new_message) session.commit() + # 添加:每次保存消息后简单增长visible_count + current_metadata = ChatflowConversationMetadata.model_validate_json(chatflow_conv.conversation_metadata) + new_visible_count = current_metadata.visible_count + 1 + new_metadata = ChatflowConversationMetadata(visible_count=new_visible_count) + chatflow_conv.conversation_metadata = new_metadata.model_dump_json() + @staticmethod def save_app_message( prompt_message: PromptMessage, @@ -209,7 +209,7 @@ class ChatflowHistoryService: else: if create_if_missing: # Create a new chatflow conversation - default_metadata = ChatflowConversationMetadata(visible_count=20) + default_metadata = ChatflowConversationMetadata(visible_count=0) new_chatflow_conv = ChatflowConversation( tenant_id=tenant_id, app_id=app_id, diff --git a/api/services/chatflow_memory_service.py b/api/services/chatflow_memory_service.py index 23e9f4174d..0e6e064b89 100644 --- a/api/services/chatflow_memory_service.py +++ b/api/services/chatflow_memory_service.py @@ -549,6 +549,15 @@ class ChatflowMemoryService: ) ChatflowMemoryService.save_memory(updated_memory, variable_pool, is_draft) + # 添加以下代码:重置 visible_count 为 preserved_turns + ChatflowHistoryService.update_visible_count( + conversation_id=memory_block.conversation_id, + node_id=memory_block.node_id, + new_visible_count=memory_block.spec.preserved_turns, + app_id=memory_block.app_id, + tenant_id=memory_block.tenant_id + ) + @staticmethod def delete_memory(app: App, memory_id: str, created_by: MemoryCreatedBy): workflow = WorkflowService().get_published_workflow(app)