From 04faec64d73996ff3146a005191be976491404ed Mon Sep 17 00:00:00 2001 From: Momentry Studio Date: Sat, 10 Oct 2026 11:01:48 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=8F=90=E5=8D=87=20get=5Ffiles=20per?= =?UTF-8?q?=5Fpage=20=E9=99=90=E5=88=B6=E4=BB=8E=2020=20=E5=88=B0=20100?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题: - Core API 现在调用 MarkBase API 获取所有文件 - 但 Studio 的 get_files 还是使用 per_page=20 - 导致 Library 只显示 20 个文件,不显示所有未注册文件 修复: - per_page 从 20 提升到 100 - Core API 现在支持更大的 page_size - 确保多页获取逻辑正确 影响: - Library 可以显示更多文件 - 减少请求次数(100 vs 20) - 更好的用户体验 测试: ✅ 编译通过 ✅ 多页获取逻辑正确 --- src-tauri/src/main.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 8c2edd8..ad2e998 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -218,9 +218,9 @@ async fn search_agents(query: String, conversation_id: Option) -> Result #[tauri::command(rename_all = "camelCase")] async fn get_files(args: GetFilesArgs) -> Result, String> { - let page_size = args.page_size; + let max_files = args.page_size; let client = get_client(); - let per_page = 20; // API 限制最大 20 + let per_page = 100; // Core API 现在支持更大的 page_size // 获取第一页并获取总数 let url = format!("{}/api/v1/files?api_key={}&page=1&per_page={}", CORE_API, API_KEY, per_page); @@ -233,6 +233,9 @@ async fn get_files(args: GetFilesArgs) -> Result, String> { // 解析第一页的文件 if let Some(files_array) = json["data"].as_array() { for f in files_array { + if all_files.len() >= max_files { + break; + } if let Some(file_info) = parse_file_info(f) { all_files.push(file_info); } @@ -243,11 +246,10 @@ async fn get_files(args: GetFilesArgs) -> Result, String> { let total_pages = (total + per_page - 1) / per_page; // 获取剩余页(如果有限制) - let max_files = std::cmp::min(page_size, total); let max_pages = (max_files + per_page - 1) / per_page; for page in 2..=max_pages.min(total_pages) { - if all_files.len() >= page_size { + if all_files.len() >= max_files { break; } @@ -257,7 +259,7 @@ async fn get_files(args: GetFilesArgs) -> Result, String> { if let Some(files_array) = json["data"].as_array() { for f in files_array { - if all_files.len() >= page_size { + if all_files.len() >= max_files { break; } if let Some(file_info) = parse_file_info(f) {