From 0569b50fed95ee702db62e128a1e2820c01ca210 Mon Sep 17 00:00:00 2001 From: Billy Bao Date: Mon, 17 Nov 2025 15:27:19 +0800 Subject: [PATCH] Fix: create dataset return type inconsistent (#11272) ### What problem does this PR solve? Fix: create dataset return type inconsistent #11167 ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- api/apps/kb_app.py | 4 ++++ api/db/services/knowledgebase_service.py | 18 +++++++++--------- .../test/test_frontend_api/test_dataset.py | 4 ++-- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/api/apps/kb_app.py b/api/apps/kb_app.py index b7cf58a20..f173b56a0 100644 --- a/api/apps/kb_app.py +++ b/api/apps/kb_app.py @@ -55,6 +55,10 @@ def create(): **req ) + code = req.get("code") + if code: + return get_data_error_result(code=code, message=req.get("message")) + try: if not KnowledgebaseService.save(**req): return get_data_error_result() diff --git a/api/db/services/knowledgebase_service.py b/api/db/services/knowledgebase_service.py index ca30ca074..28936576d 100644 --- a/api/db/services/knowledgebase_service.py +++ b/api/db/services/knowledgebase_service.py @@ -24,9 +24,9 @@ from common.time_utils import current_timestamp, datetime_format from api.db.services import duplicate_name from api.db.services.user_service import TenantService from common.misc_utils import get_uuid -from common.constants import StatusEnum +from common.constants import StatusEnum, RetCode from api.constants import DATASET_NAME_LIMIT -from api.utils.api_utils import get_parser_config, get_data_error_result +from api.utils.api_utils import get_parser_config class KnowledgebaseService(CommonService): """Service class for managing knowledge base operations. @@ -391,12 +391,12 @@ class KnowledgebaseService(CommonService): """ # Validate name if not isinstance(name, str): - return get_data_error_result(message="Dataset name must be string.") + return {"code": RetCode.DATA_ERROR, "message": "Dataset name must be string."} dataset_name = name.strip() - if dataset_name == "": - return get_data_error_result(message="Dataset name can't be empty.") + if len(dataset_name) == 0: + return {"code": RetCode.DATA_ERROR, "message": "Dataset name can't be empty."} if len(dataset_name.encode("utf-8")) > DATASET_NAME_LIMIT: - return get_data_error_result(message=f"Dataset name length is {len(dataset_name)} which is larger than {DATASET_NAME_LIMIT}") + return {"code": RetCode.DATA_ERROR, "message": f"Dataset name length is {len(dataset_name)} which is larger than {DATASET_NAME_LIMIT}"} # Deduplicate name within tenant dataset_name = duplicate_name( @@ -409,7 +409,7 @@ class KnowledgebaseService(CommonService): # Verify tenant exists ok, _t = TenantService.get_by_id(tenant_id) if not ok: - return False, "Tenant not found." + return {"code": RetCode.DATA_ERROR, "message": "Tenant does not exist."} # Build payload kb_id = get_uuid() @@ -419,10 +419,10 @@ class KnowledgebaseService(CommonService): "tenant_id": tenant_id, "created_by": tenant_id, "parser_id": (parser_id or "naive"), - **kwargs + **kwargs # Includes optional fields such as description, language, permission, avatar, parser_config, etc. } - # Default parser_config (align with kb_app.create) — do not accept external overrides + # Update parser_config (always override with validated default/merged config) payload["parser_config"] = get_parser_config(parser_id, kwargs.get("parser_config")) return payload diff --git a/sdk/python/test/test_frontend_api/test_dataset.py b/sdk/python/test/test_frontend_api/test_dataset.py index b57a3543b..3fb3e93ff 100644 --- a/sdk/python/test/test_frontend_api/test_dataset.py +++ b/sdk/python/test/test_frontend_api/test_dataset.py @@ -104,7 +104,7 @@ def test_invalid_name_dataset(get_auth): assert res['code'] == 100 res = create_dataset(get_auth, "") - assert res['code'] == 100 + assert res['code'] == 102 long_string = "" @@ -112,7 +112,7 @@ def test_invalid_name_dataset(get_auth): long_string += random.choice(string.ascii_letters + string.digits) res = create_dataset(get_auth, long_string) - assert res['code'] == 100 + assert res['code'] == 102 print(res)