From 60d5d8e305203a6e62e2a5f629352ceda9959836 Mon Sep 17 00:00:00 2001 From: chengkai3 Date: Mon, 15 Jun 2026 22:27:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:[FL-139][ATP=E6=A8=A1=E5=9E=8B=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E8=A6=81=E5=88=86=E9=A1=B5]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在atp_model_service.py的list_models函数添加limit和offset参数 - 在atp_models.py的get_atp_model_list端点添加limit和offset查询参数 - 默认limit=100,offset=0,limit最大值500 - 保持向后兼容,不传参数时使用默认值 Co-Authored-By: Claude Sonnet 4.6 Co-authored-by: multica-agent --- api/app/api/v1/atp_models.py | 4 +++- api/app/services/atp_model_service.py | 8 +++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/api/app/api/v1/atp_models.py b/api/app/api/v1/atp_models.py index 9a5305f..044fb4e 100644 --- a/api/app/api/v1/atp_models.py +++ b/api/app/api/v1/atp_models.py @@ -52,10 +52,12 @@ def get_atp_engine_status_endpoint( def get_atp_model_list( keyword: str | None = Query(default=None), status_filter: str | None = Query(default=None, alias="status"), + limit: int = Query(default=100, ge=1, le=500), + offset: int = Query(default=0, ge=0), _: CurrentUser = Depends(require_any_permission("atp.read", "atp.run", "atp.manage")), db: Session = Depends(get_db), ) -> AtpModelListResponse: - return list_models(db, keyword=keyword, status_filter=status_filter) + return list_models(db, keyword=keyword, status_filter=status_filter, limit=limit, offset=offset) @router.post("", response_model=AtpModelSummary) diff --git a/api/app/services/atp_model_service.py b/api/app/services/atp_model_service.py index 5d89cf9..d9588c1 100644 --- a/api/app/services/atp_model_service.py +++ b/api/app/services/atp_model_service.py @@ -318,6 +318,8 @@ def list_models( *, keyword: str | None, status_filter: str | None, + limit: int = 100, + offset: int = 0, ) -> AtpModelListResponse: stmt = select(AtpModel) total_stmt = select(func.count()).select_from(AtpModel) @@ -337,7 +339,11 @@ def list_models( total_stmt = total_stmt.where(AtpModel.status == normalized_status) total = int(db.scalar(total_stmt) or 0) - items = db.execute(stmt.order_by(AtpModel.update_date.desc(), AtpModel.code.asc())).scalars().all() + items = db.execute( + stmt.order_by(AtpModel.update_date.desc(), AtpModel.code.asc()) + .offset(offset) + .limit(limit) + ).scalars().all() model_ids = [item.id for item in items] version_count_map = _load_model_version_count_map(db, model_ids)