Feature: Allow page_size max value 100 (#15292)

Feature: Allow page_size max value 100
This commit is contained in:
Wang Qi
2026-05-28 11:13:01 +08:00
committed by GitHub
parent 0940f1a135
commit 0aff6a3f32
25 changed files with 110 additions and 43 deletions

View File

@@ -58,6 +58,7 @@ from api.utils.api_utils import (
server_error_response,
validate_request,
)
from api.utils.pagination_utils import validate_rest_api_page_size
from common import settings
from common.ssrf_guard import assert_host_is_safe
from common.constants import RetCode
@@ -349,7 +350,7 @@ def list_agent_sessions(agent_id, tenant_id):
session_id = request.args.get("id")
user_id = request.args.get("user_id")
page_number = int(request.args.get("page", 1))
items_per_page = int(request.args.get("page_size", 30))
items_per_page = validate_rest_api_page_size(int(request.args.get("page_size", 30)))
keywords = request.args.get("keywords")
from_date = request.args.get("from_date")
to_date = request.args.get("to_date")
@@ -517,7 +518,7 @@ def list_agents(tenant_id):
tags = [item for item in request.args.get("tags", "").strip().split(",") if item]
page_number = int(request.args.get("page", 0))
items_per_page = int(request.args.get("page_size", 0))
items_per_page = validate_rest_api_page_size(int(request.args.get("page_size", 0)))
order_by = request.args.get("orderby", "create_time")
desc = str(request.args.get("desc", "true")).lower() != "false"
tenants = TenantService.get_joined_tenants_by_user_id(tenant_id)

View File

@@ -45,6 +45,7 @@ from api.utils.api_utils import (
server_error_response,
validate_request,
)
from api.utils.pagination_utils import validate_rest_api_page_size
from api.utils.tenant_utils import ensure_tenant_model_id_for_params
from common.constants import LLMType, RetCode, StatusEnum
from common import settings
@@ -419,7 +420,7 @@ async def list_chats():
try:
page_number = int(request.args.get("page", 0))
items_per_page = int(request.args.get("page_size", 0))
items_per_page = validate_rest_api_page_size(int(request.args.get("page_size", 0)))
tenants = TenantService.get_joined_tenants_by_user_id(current_user.id)
authorized_owner_ids = {member["tenant_id"] for member in tenants}
@@ -769,7 +770,7 @@ async def list_sessions(chat_id):
code=RetCode.AUTHENTICATION_ERROR,
)
page_number = int(request.args.get("page", 1))
items_per_page = int(request.args.get("page_size", 30))
items_per_page = validate_rest_api_page_size(int(request.args.get("page_size", 30)))
orderby = request.args.get("orderby", "create_time")
desc = request.args.get("desc", "true").lower() != "false"
session_id = request.args.get("id")

View File

@@ -46,6 +46,7 @@ from api.utils.api_utils import (
server_error_response,
token_required,
)
from api.utils.pagination_utils import validate_rest_api_page_size
from api.utils.image_utils import store_chunk_image
from api.utils.reference_metadata_utils import (
enrich_chunks_with_document_metadata,
@@ -244,7 +245,7 @@ async def retrieval_test(tenant_id):
if "question" not in req:
return get_error_data_result("`question` is required.")
page = int(req.get("page", 1))
size = int(req.get("page_size", 30))
size = validate_rest_api_page_size(int(req.get("page_size", 30)))
question = req["question"].strip() if isinstance(req["question"], str) else req["question"]
if not question:
return get_result(data={"total": 0, "chunks": [], "doc_aggs": {}})
@@ -365,7 +366,7 @@ async def list_chunks(tenant_id, dataset_id, document_id):
doc = doc[0]
req = request.args
page = int(req.get("page", 1))
size = int(req.get("page_size", 30))
size = validate_rest_api_page_size(int(req.get("page_size", 30)))
question = req.get("keywords", "")
query = {
"doc_ids": [document_id],

View File

@@ -27,6 +27,7 @@ from google_auth_oauthlib.flow import Flow
from api.db import InputType
from api.db.services.connector_service import ConnectorService, SyncLogsService
from api.utils.api_utils import get_data_error_result, get_json_result, get_request_json, validate_request
from api.utils.pagination_utils import validate_rest_api_page_size
from common.constants import RetCode, TaskStatus
from common.data_source.config import GOOGLE_DRIVE_WEB_OAUTH_REDIRECT_URI, GMAIL_WEB_OAUTH_REDIRECT_URI, BOX_WEB_OAUTH_REDIRECT_URI, DocumentSource
from common.data_source.google_util.constant import WEB_OAUTH_POPUP_TEMPLATE, GOOGLE_SCOPES
@@ -140,7 +141,11 @@ def list_logs(connector_id):
return _connector_auth_error(connector_id, current_user.id)
req = request.args.to_dict(flat=True)
arr, total = SyncLogsService.list_sync_tasks(connector_id, int(req.get("page", 1)), int(req.get("page_size", 15)))
arr, total = SyncLogsService.list_sync_tasks(
connector_id,
int(req.get("page", 1)),
validate_rest_api_page_size(int(req.get("page_size", 15))),
)
return get_json_result(data={"total": total, "logs": arr})

View File

@@ -20,6 +20,7 @@ from quart import request
from common.constants import RetCode
from api.apps import login_required, current_user
from api.utils.api_utils import get_error_argument_result, get_error_data_result, get_json_result, get_result, add_tenant_id_to_kwargs
from api.utils.pagination_utils import validate_rest_api_page_size
from api.utils.validation_utils import (
CreateDatasetReq,
DeleteDatasetReq,
@@ -665,7 +666,7 @@ async def check_embedding(tenant_id, dataset_id):
def list_ingestion_logs(tenant_id, dataset_id):
try:
page = int(request.args.get("page", 0))
page_size = int(request.args.get("page_size", 0))
page_size = validate_rest_api_page_size(int(request.args.get("page_size", 0)))
orderby = request.args.get("orderby", "create_time")
desc = request.args.get("desc", "true").lower() != "false"
operation_status = request.args.getlist("operation_status")

View File

@@ -41,6 +41,7 @@ from api.common.check_team_permission import check_kb_team_permission
from api.db.services.task_service import TaskService, cancel_all_task_of
from api.utils.api_utils import construct_json_result, get_data_error_result, get_error_data_result, get_result, get_json_result, \
server_error_response, add_tenant_id_to_kwargs, get_request_json, get_error_argument_result, check_duplicate_ids
from api.utils.pagination_utils import validate_rest_api_page_size
from api.utils.validation_utils import (
UpdateDocumentReq, format_validation_error_message, validate_and_parse_json_request, DeleteDocumentReq,
)
@@ -795,7 +796,7 @@ def _get_docs_with_request(req, dataset_id:str):
q = req.args
page = int(q.get("page", 1))
page_size = int(q.get("page_size", 30))
page_size = validate_rest_api_page_size(int(q.get("page_size", 30)))
orderby = q.get("orderby", "create_time")
desc = str(q.get("desc", "true")).strip().lower() != "false"

View File

@@ -21,6 +21,7 @@ from api.db.db_models import MCPServer
from api.db.services.mcp_server_service import MCPServerService
from api.db.services.user_service import TenantService
from api.utils.api_utils import get_data_error_result, get_json_result, get_mcp_tools, get_request_json, server_error_response, validate_request
from api.utils.pagination_utils import validate_rest_api_page_size
from api.utils.web_utils import get_float, safe_json_parse
from common.constants import VALID_MCP_SERVER_TYPES
from common.mcp_tool_call_conn import MCPToolCallSession, close_multiple_mcp_toolcall_sessions
@@ -71,7 +72,7 @@ def _assert_mcp_url_is_safe(url, invalid_message: str = "Invalid url.") -> tuple
async def list_mcp() -> Response:
keywords = request.args.get("keywords", "")
page_number = int(request.args.get("page", 0))
items_per_page = int(request.args.get("page_size", 0))
items_per_page = validate_rest_api_page_size(int(request.args.get("page_size", 0)))
orderby = request.args.get("orderby", "create_time")
if request.args.get("desc", "true").lower() == "false":
desc = False

View File

@@ -24,6 +24,7 @@ from api.apps import login_required, current_user
from api.utils.api_utils import validate_request, get_request_json, get_error_argument_result, get_json_result
from api.apps.services import memory_api_service
from api.utils.tenant_utils import ensure_tenant_model_id_for_params
from api.utils.pagination_utils import validate_rest_api_page_size
@manager.route("/memories", methods=["POST"]) # noqa: F821
@@ -134,7 +135,7 @@ async def list_memory():
}
keywords = request.args.get("keywords")
page = int(request.args.get("page", 1))
page_size = int(request.args.get("page_size", 50))
page_size = validate_rest_api_page_size(int(request.args.get("page_size", 50)))
try:
res = await memory_api_service.list_memory(filter_params, keywords, page, page_size)
return get_json_result(message=True, data=res)
@@ -167,7 +168,7 @@ async def get_memory_messages(memory_id):
keywords = args.get("keywords", "")
keywords = keywords.strip()
page = int(args.get("page", 1))
page_size = int(args.get("page_size", 50))
page_size = validate_rest_api_page_size(int(args.get("page_size", 50)))
try:
res = await memory_api_service.get_memory_messages(
memory_id, agent_ids, keywords, page, page_size

View File

@@ -30,6 +30,7 @@ from api.db.services.user_service import TenantService, UserTenantService
from common.misc_utils import get_uuid
from common.constants import RetCode, StatusEnum
from api.utils.api_utils import get_data_error_result, get_json_result, get_request_json, server_error_response, validate_request
from api.utils.pagination_utils import validate_rest_api_page_size
def _full_text_weight(vector_similarity_weight):
@@ -77,7 +78,7 @@ async def create():
def list_searches():
keywords = request.args.get("keywords", "")
page_number = int(request.args.get("page", 0))
items_per_page = int(request.args.get("page_size", 0))
items_per_page = validate_rest_api_page_size(int(request.args.get("page_size", 0)))
orderby = request.args.get("orderby", "create_time")
desc = request.args.get("desc", "true").lower() != "false"
owner_ids = request.args.getlist("owner_ids")