@@ -37,12 +37,32 @@ def get_data_training_base_query(oid: int, name: Optional[str] = None):
3737
3838
3939def build_data_training_query (session : SessionDep , oid : int , name : Optional [str ] = None ,
40- paginate : bool = True , current_page : int = 1 , page_size : int = 10 ):
40+ paginate : bool = True , current_page : int = 1 , page_size : int = 10 ,
41+ ds_list : Optional [list [int ]] = None , adv_list : Optional [list [int ]] = None ):
4142 """
4243 构建数据训练查询的通用方法
4344 """
4445 parent_ids_subquery = get_data_training_base_query (oid , name )
4546
47+ # 添加数据源/高级应用筛选条件(ds_list 与 adv_list 为或的关系)
48+ ds_filter_condition = None
49+ adv_filter_condition = None
50+
51+ if ds_list is not None and len (ds_list ) > 0 :
52+ ds_filter_condition = DataTraining .datasource .in_ (ds_list )
53+
54+ if adv_list is not None and len (adv_list ) > 0 :
55+ adv_filter_condition = DataTraining .advanced_application .in_ (adv_list )
56+
57+ if ds_filter_condition is not None and adv_filter_condition is not None :
58+ parent_ids_subquery = parent_ids_subquery .where (
59+ or_ (ds_filter_condition , adv_filter_condition )
60+ )
61+ elif ds_filter_condition is not None :
62+ parent_ids_subquery = parent_ids_subquery .where (ds_filter_condition )
63+ elif adv_filter_condition is not None :
64+ parent_ids_subquery = parent_ids_subquery .where (adv_filter_condition )
65+
4666 # 计算总数
4767 count_stmt = select (func .count ()).select_from (parent_ids_subquery .subquery ())
4868 total_count = session .execute (count_stmt ).scalar ()
@@ -121,12 +141,13 @@ def execute_data_training_query(session: SessionDep, stmt) -> List[DataTrainingI
121141
122142
123143def page_data_training (session : SessionDep , current_page : int = 1 , page_size : int = 10 ,
124- name : Optional [str ] = None , oid : Optional [int ] = 1 ):
144+ name : Optional [str ] = None , oid : Optional [int ] = 1 , ds_list : Optional [list [int ]] = None ,
145+ adv_list : Optional [list [int ]] = None ):
125146 """
126147 分页查询数据训练(原方法保持不变)
127148 """
128149 stmt , total_count , total_pages , current_page , page_size = build_data_training_query (
129- session , oid , name , True , current_page , page_size
150+ session , oid , name , True , current_page , page_size , ds_list , adv_list
130151 )
131152 _list = execute_data_training_query (session , stmt )
132153
@@ -305,7 +326,8 @@ def batch_create_training(session: SessionDep, info_list: List[DataTrainingInfo]
305326
306327 assistant_name_to_id = {}
307328
308- assistant_stmt = select (AssistantModel .id , AssistantModel .name ).where (and_ (AssistantModel .type == 1 , AssistantModel .oid == oid ))
329+ assistant_stmt = select (AssistantModel .id , AssistantModel .name ).where (
330+ and_ (AssistantModel .type == 1 , AssistantModel .oid == oid ))
309331 assistant_result = session .execute (assistant_stmt ).all ()
310332 for assistant in assistant_result :
311333 assistant_name_to_id [assistant .name .strip ()] = assistant .id
0 commit comments