Fix modal overflow and search timeout warning
build-push / docker (push) Successful in 4m1s

This commit is contained in:
AI Assistant
2026-03-17 12:05:44 +09:00
parent 70c975c231
commit 0b68feff80
11 changed files with 367 additions and 45 deletions
+39 -1
View File
@@ -97,6 +97,36 @@ func (g *GeminiService) ExpandQuery(query string) ([]string, error) {
return expanded, nil
}
func (g *GeminiService) TranslateSummaryToKorean(text string) (string, error) {
trimmed := strings.TrimSpace(text)
if trimmed == "" {
return "", nil
}
cacheKey := "summary-ko\n" + trimmed
if cached, ok := g.getCachedTranslation(cacheKey); ok {
g.debug("gemini:summary_translate_cache_hit", map[string]any{"length": len(trimmed)})
return cached, nil
}
if !looksMostlyASCII(trimmed) {
g.setCachedTranslation(cacheKey, trimmed, 15*time.Minute)
return trimmed, nil
}
g.debug("gemini:summary_translate_attempt", map[string]any{"length": len(trimmed)})
translated, err := g.translateViaGoogleToTarget(trimmed, "ko")
if err != nil {
g.debug("gemini:summary_translate_error", map[string]any{"length": len(trimmed), "error": err.Error()})
return "", err
}
translated = strings.TrimSpace(translated)
if translated == "" {
return "", fmt.Errorf("google translate summary returned empty translation")
}
g.debug("gemini:summary_translate_success", map[string]any{"length": len(trimmed)})
g.setCachedTranslation(cacheKey, translated, 15*time.Minute)
return translated, nil
}
func (g *GeminiService) TranslateQuery(query string) string {
trimmed := strings.TrimSpace(query)
if trimmed == "" {
@@ -784,11 +814,19 @@ func isOvercompressedTranslation(original, translated string) bool {
}
func (g *GeminiService) translateViaGoogle(query string) (string, error) {
return g.translateViaGoogleToTarget(query, "en")
}
func (g *GeminiService) translateViaGoogleToTarget(query, targetLanguage string) (string, error) {
baseURL := g.TranslateEndpoint
if strings.TrimSpace(baseURL) == "" {
baseURL = "https://translate.googleapis.com/translate_a/single"
}
endpoint := baseURL + "?client=gtx&sl=auto&tl=en&dt=t&q=" + neturl.QueryEscape(query)
targetLanguage = strings.TrimSpace(targetLanguage)
if targetLanguage == "" {
targetLanguage = "en"
}
endpoint := baseURL + "?client=gtx&sl=auto&tl=" + neturl.QueryEscape(targetLanguage) + "&dt=t&q=" + neturl.QueryEscape(query)
resp, err := g.Client.Get(endpoint)
if err != nil {
return "", err