diff --git a/api/fields/dataset_fields.py b/api/fields/dataset_fields.py index b44e6a1365..f967e78d10 100644 --- a/api/fields/dataset_fields.py +++ b/api/fields/dataset_fields.py @@ -162,9 +162,9 @@ class DatasetVectorSettingResponse(ResponseModel): class DatasetWeightedScoreResponse(ResponseModel): - weight_type: str | None - keyword_setting: DatasetKeywordSettingResponse | None - vector_setting: DatasetVectorSettingResponse | None + weight_type: str | None = None + keyword_setting: DatasetKeywordSettingResponse | None = None + vector_setting: DatasetVectorSettingResponse | None = None class DatasetRetrievalModelResponse(ResponseModel): diff --git a/api/openapi/markdown/console-swagger.md b/api/openapi/markdown/console-swagger.md index 188e1a4a9f..ab2949100f 100644 --- a/api/openapi/markdown/console-swagger.md +++ b/api/openapi/markdown/console-swagger.md @@ -12085,9 +12085,9 @@ Condition detail | Name | Type | Description | Required | | ---- | ---- | ----------- | -------- | -| keyword_setting | [DatasetKeywordSettingResponse](#datasetkeywordsettingresponse) | | Yes | -| vector_setting | [DatasetVectorSettingResponse](#datasetvectorsettingresponse) | | Yes | -| weight_type | string | | Yes | +| keyword_setting | [DatasetKeywordSettingResponse](#datasetkeywordsettingresponse) | | No | +| vector_setting | [DatasetVectorSettingResponse](#datasetvectorsettingresponse) | | No | +| weight_type | string | | No | #### DatasourceCredentialDeletePayload diff --git a/api/openapi/markdown/service-swagger.md b/api/openapi/markdown/service-swagger.md index 7f5591e32e..2d0f63415b 100644 --- a/api/openapi/markdown/service-swagger.md +++ b/api/openapi/markdown/service-swagger.md @@ -2574,9 +2574,9 @@ Condition detail | Name | Type | Description | Required | | ---- | ---- | ----------- | -------- | -| keyword_setting | [DatasetKeywordSettingResponse](#datasetkeywordsettingresponse) | | Yes | -| vector_setting | [DatasetVectorSettingResponse](#datasetvectorsettingresponse) | | Yes | -| weight_type | string | | Yes | +| keyword_setting | [DatasetKeywordSettingResponse](#datasetkeywordsettingresponse) | | No | +| vector_setting | [DatasetVectorSettingResponse](#datasetvectorsettingresponse) | | No | +| weight_type | string | | No | #### DatasourceNodeRunPayload diff --git a/api/tests/unit_tests/controllers/console/datasets/test_datasets.py b/api/tests/unit_tests/controllers/console/datasets/test_datasets.py index 3de2260c42..d9f3270bd0 100644 --- a/api/tests/unit_tests/controllers/console/datasets/test_datasets.py +++ b/api/tests/unit_tests/controllers/console/datasets/test_datasets.py @@ -245,6 +245,55 @@ class TestDatasetList: assert status == 200 + def test_get_allows_legacy_weighted_score_without_weight_type(self, app: Flask): + api = DatasetListApi() + method = unwrap(api.get) + + current_user = self._mock_user() + datasets = [ + make_dataset( + retrieval_model={ + "search_method": "hybrid_search", + "reranking_enable": True, + "reranking_mode": "weighted_score", + "reranking_model": None, + "weights": { + "vector_setting": { + "vector_weight": 0.7, + "embedding_model_name": "text-embedding", + "embedding_provider_name": "openai", + }, + "keyword_setting": {"keyword_weight": 0.3}, + }, + "top_k": 3, + "score_threshold_enabled": False, + "score_threshold": 0.0, + } + ) + ] + + with app.test_request_context("/datasets"): + with ( + patch( + "controllers.console.datasets.datasets.current_account_with_tenant", + return_value=(current_user, "tenant-1"), + ), + patch.object( + DatasetService, + "get_datasets", + return_value=(datasets, 1), + ), + patch.object( + ProviderManager, + "get_configurations", + return_value=MagicMock(get_models=lambda **_: []), + ), + ): + resp, status = method(api) + + assert status == 200 + assert resp["data"][0]["retrieval_model_dict"]["weights"]["weight_type"] is None + def test_embedding_available_false(self, app: Flask): api = DatasetListApi() method = unwrap(api.get) diff --git a/packages/contracts/generated/api/console/datasets/types.gen.ts b/packages/contracts/generated/api/console/datasets/types.gen.ts index b0cafa0a66..e53acaa329 100644 --- a/packages/contracts/generated/api/console/datasets/types.gen.ts +++ b/packages/contracts/generated/api/console/datasets/types.gen.ts @@ -709,9 +709,9 @@ export type DatasetRerankingModelResponse = { } export type DatasetWeightedScoreResponse = { - keyword_setting: DatasetKeywordSettingResponse - vector_setting: DatasetVectorSettingResponse - weight_type: string | null + keyword_setting?: DatasetKeywordSettingResponse + vector_setting?: DatasetVectorSettingResponse + weight_type?: string | null } export type DatasetRerankingModel = { diff --git a/packages/contracts/generated/api/console/datasets/zod.gen.ts b/packages/contracts/generated/api/console/datasets/zod.gen.ts index 8f21000ace..9acd97cf49 100644 --- a/packages/contracts/generated/api/console/datasets/zod.gen.ts +++ b/packages/contracts/generated/api/console/datasets/zod.gen.ts @@ -670,9 +670,9 @@ export const zDatasetVectorSettingResponse = z.object({ * DatasetWeightedScoreResponse */ export const zDatasetWeightedScoreResponse = z.object({ - keyword_setting: zDatasetKeywordSettingResponse, - vector_setting: zDatasetVectorSettingResponse, - weight_type: z.string().nullable(), + keyword_setting: zDatasetKeywordSettingResponse.optional(), + vector_setting: zDatasetVectorSettingResponse.optional(), + weight_type: z.string().nullish(), }) /** diff --git a/packages/contracts/generated/api/service/types.gen.ts b/packages/contracts/generated/api/service/types.gen.ts index 88145a0a6e..aaf4d618f4 100644 --- a/packages/contracts/generated/api/service/types.gen.ts +++ b/packages/contracts/generated/api/service/types.gen.ts @@ -377,9 +377,9 @@ export type DatasetVectorSettingResponse = { } export type DatasetWeightedScoreResponse = { - keyword_setting: DatasetKeywordSettingResponse - vector_setting: DatasetVectorSettingResponse - weight_type: string | null + keyword_setting?: DatasetKeywordSettingResponse + vector_setting?: DatasetVectorSettingResponse + weight_type?: string | null } export type DatasourceNodeRunPayload = { diff --git a/packages/contracts/generated/api/service/zod.gen.ts b/packages/contracts/generated/api/service/zod.gen.ts index d183697811..1b0b03f8cd 100644 --- a/packages/contracts/generated/api/service/zod.gen.ts +++ b/packages/contracts/generated/api/service/zod.gen.ts @@ -354,9 +354,9 @@ export const zDatasetVectorSettingResponse = z.object({ * DatasetWeightedScoreResponse */ export const zDatasetWeightedScoreResponse = z.object({ - keyword_setting: zDatasetKeywordSettingResponse, - vector_setting: zDatasetVectorSettingResponse, - weight_type: z.string().nullable(), + keyword_setting: zDatasetKeywordSettingResponse.optional(), + vector_setting: zDatasetVectorSettingResponse.optional(), + weight_type: z.string().nullish(), }) /**