From 02e6870755ea1eb6aca749083037c4228f55e866 Mon Sep 17 00:00:00 2001 From: Stephen Hu <812791840@qq.com> Date: Tue, 6 Jan 2026 11:39:07 +0800 Subject: [PATCH] Refactor: import_test_cases use bulk_create (#12456) ### What problem does this PR solve? import_test_cases use bulk_create ### Type of change - [x] Refactoring --- api/db/services/evaluation_service.py | 41 ++++++++++++++++++--------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/api/db/services/evaluation_service.py b/api/db/services/evaluation_service.py index 3f523b1d8..48255512f 100644 --- a/api/db/services/evaluation_service.py +++ b/api/db/services/evaluation_service.py @@ -225,21 +225,36 @@ class EvaluationService(CommonService): """ success_count = 0 failure_count = 0 + case_instances = [] + + if not cases: + return success_count, failure_count + + cur_timestamp = current_timestamp() - for case_data in cases: - success, _ = cls.add_test_case( - dataset_id=dataset_id, - question=case_data.get("question", ""), - reference_answer=case_data.get("reference_answer"), - relevant_doc_ids=case_data.get("relevant_doc_ids"), - relevant_chunk_ids=case_data.get("relevant_chunk_ids"), - metadata=case_data.get("metadata") - ) + try: + for case_data in cases: + case_id = get_uuid() + case_info = { + "id": case_id, + "dataset_id": dataset_id, + "question": case_data.get("question", ""), + "reference_answer": case_data.get("reference_answer"), + "relevant_doc_ids": case_data.get("relevant_doc_ids"), + "relevant_chunk_ids": case_data.get("relevant_chunk_ids"), + "metadata": case_data.get("metadata"), + "create_time": cur_timestamp + } - if success: - success_count += 1 - else: - failure_count += 1 + case_instances.append(EvaluationCase(**case_info)) + EvaluationCase.bulk_create(case_instances, batch_size=300) + success_count = len(case_instances) + failure_count = 0 + + except Exception as e: + logging.error(f"Error bulk importing test cases: {str(e)}") + failure_count = len(cases) + success_count = 0 return success_count, failure_count