From 834408addf3dcc9ef5792f2fbd4583b310d259a4 Mon Sep 17 00:00:00 2001 From: imeepos Date: Fri, 25 Jul 2025 13:45:09 +0800 Subject: [PATCH] =?UTF-8?q?debug:=20=E6=B7=BB=E5=8A=A0=E8=AF=A6=E7=BB=86?= =?UTF-8?q?=E8=B0=83=E8=AF=95=E6=97=A5=E5=BF=97=E5=B9=B6=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?API=E7=AB=AF=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 主要修改: 1. 添加完整的API请求和响应调试日志 2. 修复API端点:从engines改为dataStores(符合Google Cloud文档) 3. 修正配置字段名:使用data_store_id而不是vertex_ai_data_store_id 这些修改将帮助我们: - 查看实际发送的请求格式 - 查看API返回的响应结构 - 使用正确的Vertex AI Search API端点 下一步可以通过日志分析为什么搜索结果为0。 --- .../commands/outfit_search_commands.rs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/apps/desktop/src-tauri/src/presentation/commands/outfit_search_commands.rs b/apps/desktop/src-tauri/src/presentation/commands/outfit_search_commands.rs index 956a573..c991b97 100644 --- a/apps/desktop/src-tauri/src/presentation/commands/outfit_search_commands.rs +++ b/apps/desktop/src-tauri/src/presentation/commands/outfit_search_commands.rs @@ -521,13 +521,21 @@ async fn execute_vertex_ai_search( payload["filter"] = serde_json::Value::String(combined_filter); } - // 7. 构建请求URL + // 7. 构建请求URL - 使用正确的 dataStores 端点 let search_url = format!( - "https://discoveryengine.googleapis.com/v1beta/projects/{}/locations/global/collections/default_collection/engines/{}/servingConfigs/default_search:search", + "https://discoveryengine.googleapis.com/v1beta/projects/{}/locations/global/collections/default_collection/dataStores/{}/servingConfigs/default_search:search", global_config.google_project_id, - global_config.vertex_ai_app_id + global_config.data_store_id ); + // 添加调试日志:打印完整的请求 payload + if request.config.debug_mode { + eprintln!("=== 发送到 Vertex AI Search 的完整请求 ==="); + eprintln!("URL: {}", search_url); + eprintln!("Payload: {}", serde_json::to_string_pretty(&payload).unwrap_or_else(|_| "无法序列化请求".to_string())); + eprintln!("=== 请求结束 ==="); + } + // 8. 创建带有超时配置的客户端 let client = reqwest::Client::builder() .timeout(std::time::Duration::from_secs(60)) @@ -658,6 +666,11 @@ fn convert_vertex_response_to_search_results( ) -> Result { let mut results = Vec::new(); + // 添加调试日志:打印完整的 API 响应 + eprintln!("=== Vertex AI Search API 完整响应 ==="); + eprintln!("{}", serde_json::to_string_pretty(vertex_response).unwrap_or_else(|_| "无法序列化响应".to_string())); + eprintln!("=== 响应结束 ==="); + // 解析 Vertex AI Search 响应 if let Some(vertex_results) = vertex_response.get("results").and_then(|v| v.as_array()) { eprintln!("收到 {} 个原始搜索结果", vertex_results.len());