mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-19 22:21:04 +08:00
Fixes #16855. ## Problem `ListDatasetReq` declares `include_parsing_status: bool = False` but `dataset_api_service.list_datasets` ignored the flag, so callers passing `include_parsing_status=true` got `null` for every parsing-status field. The helper that produces the counts (`DocumentService.get_parsing_status_by_kb_ids`) already existed and returned the documented shape; it just wasn't being called. ## Fix Read the flag in `list_datasets`, call the helper only when truthy, and attach per-kb counts to each record before serialisation. The flag follows the same string-coercion idiom already used for `desc` in this function. When the flag is false or absent, no new field is added to the response, so the change is non-breaking and additive. Existing callers see byte-identical responses. ## Tests New file `test/unit_test/api/apps/services/test_dataset_api_service_list_datasets.py` (7 tests, all passing): - `test_list_datasets_without_include_parsing_status_does_not_call_helper` - `test_list_datasets_with_include_parsing_status_true_attaches_counts` - `test_list_datasets_with_include_parsing_status_string_true` - `test_list_datasets_with_include_parsing_status_false_skips_helper` - `test_list_datasets_with_include_parsing_status_string_false_skips_helper` - `test_list_datasets_with_empty_kb_list_skips_helper_even_when_flag_true` - `test_list_datasets_with_include_parsing_status_missing_kb_gets_empty_dict` ``` $ uv run pytest test/unit_test/api/apps/services/test_dataset_api_service_list_datasets.py -v ============================== 7 passed in 0.19s ============================== ``` ## Files changed - `api/apps/services/dataset_api_service.py` (+15) - `test/unit_test/api/apps/services/test_dataset_api_service_list_datasets.py` (new) ## Follow-up (out of scope) Register the `parsing_status` field in the OpenAPI response schema at `api/apps/restful_apis/dataset_api.py` so Swagger / generated clients document it. Co-authored-by: Harsh23Kashyap <harsh@example.com>