diff --git a/app/run.py b/app/run.py index 9f2cf7e..19b0b16 100644 --- a/app/run.py +++ b/app/run.py @@ -3626,6 +3626,18 @@ def get_history_records(): # 获取筛选参数 task_name_filter = request.args.get("task_name", "") keyword_filter = request.args.get("keyword", "") + task_names_raw = request.args.get("task_names", "") + task_name_list = [] + if task_names_raw: + try: + decoded_names = json.loads(task_names_raw) + if isinstance(decoded_names, list): + task_name_list = [ + str(name).strip() for name in decoded_names + if isinstance(name, (str, bytes)) and str(name).strip() + ] + except Exception: + task_name_list = [] # 是否只请求所有任务名称 get_all_task_names = request.args.get("get_all_task_names", "").lower() in ["true", "1", "yes"] @@ -3648,6 +3660,7 @@ def get_history_records(): order=order, task_name_filter=task_name_filter, keyword_filter=keyword_filter, + task_name_list=task_name_list, exclude_task_names=["rename", "undo_rename"] ) # 添加所有任务名称到结果中 @@ -3669,6 +3682,7 @@ def get_history_records(): order=order, task_name_filter=task_name_filter, keyword_filter=keyword_filter, + task_name_list=task_name_list, exclude_task_names=["rename", "undo_rename"] ) diff --git a/app/sdk/db.py b/app/sdk/db.py index 77ecc53..3f70771 100644 --- a/app/sdk/db.py +++ b/app/sdk/db.py @@ -167,7 +167,8 @@ class RecordDB: @retry_on_locked(max_retries=3, base_delay=0.1) def get_records(self, page=1, page_size=20, sort_by="transfer_time", order="desc", - task_name_filter="", keyword_filter="", exclude_task_names=None): + task_name_filter="", keyword_filter="", exclude_task_names=None, + task_name_list=None): """获取转存记录列表,支持分页、排序和筛选 Args: @@ -178,6 +179,7 @@ class RecordDB: task_name_filter: 任务名称筛选条件(精确匹配) keyword_filter: 关键字筛选条件(模糊匹配任务名、转存为名称) exclude_task_names: 需要排除的任务名称列表 + task_name_list: 任务名称集合(包含多个任务名时使用IN筛选) """ cursor = self.conn.cursor() offset = (page - 1) * page_size @@ -208,6 +210,11 @@ class RecordDB: where_clauses.append("task_name NOT IN ({})".format(",".join(["?" for _ in exclude_task_names]))) params.extend(exclude_task_names) + if task_name_list: + placeholders = ",".join(["?" for _ in task_name_list]) + where_clauses.append(f"task_name IN ({placeholders})") + params.extend(task_name_list) + where_clause = " AND ".join(where_clauses) where_sql = f"WHERE {where_clause}" if where_clause else "" diff --git a/app/templates/index.html b/app/templates/index.html index 3102d7b..d2f6d9f 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -967,7 +967,7 @@