From f7c41f3e236b9551c322334ffbc33b75e67e4fc0 Mon Sep 17 00:00:00 2001 From: AskaEth Date: Tue, 23 Jun 2026 21:21:46 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20LLM=E6=8F=90=E9=86=92=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=E5=8A=A02=E6=AC=A1=E9=87=8D=E8=AF=95=20=E2=80=94=20=E9=81=BF?= =?UTF-8?q?=E5=85=8Dai-core=E7=B9=81=E5=BF=99=E6=97=B6=E8=B6=85=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../internal/handler/reminder_handler.go | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/backend/gateway/internal/handler/reminder_handler.go b/backend/gateway/internal/handler/reminder_handler.go index cc53ef1..bc567d0 100644 --- a/backend/gateway/internal/handler/reminder_handler.go +++ b/backend/gateway/internal/handler/reminder_handler.go @@ -382,21 +382,35 @@ func triggerLLMReminder(aiCoreURL, internalToken string, r store.Reminder) { req.Header.Set("Content-Type", "application/json") req.Header.Set("X-Internal-Token", internalToken) - client := &http.Client{Timeout: 30 * time.Second} - resp, err := client.Do(req) - if err != nil { - logger.Printf("[ReminderScheduler] LLM提醒生成请求失败: %v", err) + // Retry up to 2 times (ai-core may be busy processing a message). + var lastErr error + for attempt := 0; attempt < 2; attempt++ { + if attempt > 0 { + time.Sleep(5 * time.Second) + // Re-create request body since previous one was consumed. + reqBody, _ = json.Marshal(body) + req, _ = http.NewRequest("POST", aiCoreURL+"/api/v1/internal/reminder-trigger", bytes.NewReader(reqBody)) + req.Header.Set("Content-Type", "application/json") + req.Header.Set("X-Internal-Token", internalToken) + } + client := &http.Client{Timeout: 30 * time.Second} + resp, err := client.Do(req) + if err != nil { + lastErr = err + logger.Printf("[ReminderScheduler] LLM触发尝试%%d失败: %%v", attempt+1, err) + continue + } + if resp.StatusCode >= 400 { + bodyBytes, _ := io.ReadAll(resp.Body) + resp.Body.Close() + logger.Printf("[ReminderScheduler] LLM触发返回 %%d: %%s", resp.StatusCode, string(bodyBytes)) + return + } + resp.Body.Close() + logger.Printf("[ReminderScheduler] LLM提醒已触发: title=%%s user=%%s", r.Title, r.UserID) return } - defer resp.Body.Close() - - if resp.StatusCode >= 400 { - bodyBytes, _ := io.ReadAll(resp.Body) - logger.Printf("[ReminderScheduler] LLM提醒生成返回 %d: %s", resp.StatusCode, string(bodyBytes)) - return - } - - logger.Printf("[ReminderScheduler] LLM提醒已触发: title=%s user=%s", r.Title, r.UserID) + logger.Printf("[ReminderScheduler] LLM触发最终失败: %%v", lastErr) }