From 8cb3b4aef2a4237b2677588ba6a5588ca53e0535 Mon Sep 17 00:00:00 2001 From: Darlewo Date: Tue, 20 May 2025 15:22:03 +0800 Subject: [PATCH 01/26] fix: multiple retrieve reranking_enabled switch (#19958) --- api/core/rag/retrieval/dataset_retrieval.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/core/rag/retrieval/dataset_retrieval.py b/api/core/rag/retrieval/dataset_retrieval.py index d3605da146..c4adf6de4d 100644 --- a/api/core/rag/retrieval/dataset_retrieval.py +++ b/api/core/rag/retrieval/dataset_retrieval.py @@ -190,7 +190,7 @@ class DatasetRetrieval: retrieve_config.rerank_mode or "reranking_model", retrieve_config.reranking_model, retrieve_config.weights, - retrieve_config.reranking_enabled or True, + True if retrieve_config.reranking_enabled is None else retrieve_config.reranking_enabled, message_id, metadata_filter_document_ids, metadata_condition, From 87f9d11d65971c0da046960d2817771e90f81d6a Mon Sep 17 00:00:00 2001 From: Zihe JI <36323338+williamjizihe@users.noreply.github.com> Date: Tue, 20 May 2025 15:38:31 +0800 Subject: [PATCH 02/26] fix: ensure Decimal values in metadata are JSON serializable (fixes #19936) (#19955) Co-authored-by: crazywoola <427733928@qq.com> --- .../sqlalchemy_workflow_node_execution_repository.py | 5 ++++- .../workflow_node_execution/test_sqlalchemy_repository.py | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py b/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py index 3bf775db13..7e0115e4e7 100644 --- a/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py +++ b/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py @@ -11,6 +11,7 @@ from sqlalchemy import UnaryExpression, asc, delete, desc, select from sqlalchemy.engine import Engine from sqlalchemy.orm import sessionmaker +from core.model_runtime.utils.encoders import jsonable_encoder from core.workflow.entities.node_entities import NodeRunMetadataKey from core.workflow.entities.node_execution_entities import ( NodeExecution, @@ -171,7 +172,9 @@ class SQLAlchemyWorkflowNodeExecutionRepository(WorkflowNodeExecutionRepository) db_model.status = domain_model.status db_model.error = domain_model.error db_model.elapsed_time = domain_model.elapsed_time - db_model.execution_metadata = json.dumps(domain_model.metadata) if domain_model.metadata else None + db_model.execution_metadata = ( + json.dumps(jsonable_encoder(domain_model.metadata)) if domain_model.metadata else None + ) db_model.created_at = domain_model.created_at db_model.created_by_role = self._creator_user_role db_model.created_by = self._creator_user_id diff --git a/api/tests/unit_tests/repositories/workflow_node_execution/test_sqlalchemy_repository.py b/api/tests/unit_tests/repositories/workflow_node_execution/test_sqlalchemy_repository.py index 8c10b272fb..7c5020db02 100644 --- a/api/tests/unit_tests/repositories/workflow_node_execution/test_sqlalchemy_repository.py +++ b/api/tests/unit_tests/repositories/workflow_node_execution/test_sqlalchemy_repository.py @@ -4,12 +4,14 @@ Unit tests for the SQLAlchemy implementation of WorkflowNodeExecutionRepository. import json from datetime import datetime +from decimal import Decimal from unittest.mock import MagicMock, PropertyMock import pytest from pytest_mock import MockerFixture from sqlalchemy.orm import Session, sessionmaker +from core.model_runtime.utils.encoders import jsonable_encoder from core.repositories import SQLAlchemyWorkflowNodeExecutionRepository from core.workflow.entities.node_entities import NodeRunMetadataKey from core.workflow.entities.node_execution_entities import NodeExecution, NodeExecutionStatus @@ -298,7 +300,7 @@ def test_to_db_model(repository): status=NodeExecutionStatus.RUNNING, error=None, elapsed_time=1.5, - metadata={NodeRunMetadataKey.TOTAL_TOKENS: 100}, + metadata={NodeRunMetadataKey.TOTAL_TOKENS: 100, NodeRunMetadataKey.TOTAL_PRICE: Decimal("0.0")}, created_at=datetime.now(), finished_at=None, ) @@ -324,7 +326,7 @@ def test_to_db_model(repository): assert db_model.inputs_dict == domain_model.inputs assert db_model.process_data_dict == domain_model.process_data assert db_model.outputs_dict == domain_model.outputs - assert db_model.execution_metadata_dict == domain_model.metadata + assert db_model.execution_metadata_dict == jsonable_encoder(domain_model.metadata) assert db_model.status == domain_model.status assert db_model.error == domain_model.error From 9ebc58b1a20d7958db60b5be88108cc58053c434 Mon Sep 17 00:00:00 2001 From: ruanjiefeng Date: Tue, 20 May 2025 16:37:31 +0800 Subject: [PATCH 03/26] feat: Web