fix: unifica el mapeo proveedor→URL, el botón "Probar conexión" tenía su propia copia sin Gemini

El fix anterior de Gemini (22efb9c) solo tocó providerDefaultURL, que usan
el chat/embeddings/whisper reales. TestAiConfigHandler (el botón "Probar
conexión" del panel de AI Config) tenía una tercera copia independiente del
mismo mapeo, sin caso para Gemini ni Deepseek — por eso el chat ya
funcionaba con Gemini pero la prueba de conexión seguía fallando.

Se exporta providerDefaultURL a services.ProviderDefaultURL y el controller
la reusa, en vez de mantener una copia más que se desactualiza cada vez que
se agrega un proveedor.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-08-12 21:38:16 -05:00
co-authored by Claude Sonnet 5
parent 22efb9ca70
commit 9dc44decd7
4 changed files with 10 additions and 14 deletions
+6 -10
View File
@@ -10,6 +10,7 @@ import (
"github.com/gofiber/fiber/v2"
"github.com/sujit-baniya/fiber-boilerplate/pkg/models"
"github.com/sujit-baniya/fiber-boilerplate/pkg/services"
)
// AiConfigIndex renderiza la vista del panel de configuraciones de IA.
@@ -214,18 +215,13 @@ func TestAiConfigHandler(c *fiber.Ctx) error {
req.Header.Set("x-api-key", item.ApiKey)
req.Header.Set("anthropic-version", "2023-06-01")
default:
// Mismo mapeo proveedor→URL que usa el chat/embeddings real
// (services.ProviderDefaultURL) — antes esta prueba tenía su propia
// copia desactualizada que no conocía proveedores nuevos como Gemini,
// así que "funcionaba" en el chat pero la prueba de conexión fallaba.
base := item.BaseURL
if base == "" {
switch item.Provider {
case "openai":
base = "https://api.openai.com/v1"
case "qwen":
base = "https://dashscope.aliyuncs.com/compatible-mode/v1"
case "groq":
base = "https://api.groq.com/openai/v1"
default:
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "BaseURL requerida para este provider"})
}
base = services.ProviderDefaultURL(item.Provider)
}
testURL = base + "/models"
req, _ = http.NewRequest("GET", testURL, nil)