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());