feat(api-v2): endpoint de generación de texto para la integración de VCard

El sistema de vCard necesitaba usar la IA configurada en /app/ai-config y el
único camino era /api/v1/ia/ollama-generate, que autentica con cookie de
sesión: incómodo para una llamada entre servidores y la razón de los 401.

Ahora hay POST /api/v2/vcard/ia, bajo el mismo scope y la misma API key
(Bearer + IP) que ya usa esa integración para los QR y los VCF. Manda prompt,
recibe texto.

La clave del proveedor no sale del servidor. La alternativa —devolverle la
configuración con la api_key adentro, como hace el Landing Generator— reparte
la credencial de OpenAI/Anthropic a cada aplicación que la quiera usar.

El módulo va fijo en "ia": si lo eligiera quien llama, una llave con scope
vcard podría usar la configuración del agente o la del Landing Generator.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-08-17 20:44:35 -05:00
co-authored by Claude Opus 5
parent 5afbd9e375
commit 4135850e5b
4 changed files with 45 additions and 0 deletions
+4
View File
@@ -394,6 +394,10 @@ func AdminApiRoutes(api fiber.Router) {
vcard.Post("/qr-url", apiControllers.CreateUrlQr)
vcard.Post("/vcf", apiControllers.CreateVcf)
// Generación de texto con la configuración de IA del panel. La integración
// manda el prompt y recibe el texto: la clave del proveedor no sale de acá.
vcard.Post("/ia", apiControllers.GenerarTextoIA)
// dLocal y Rapyd bajo el mismo scope: son las operaciones de cobro que
// acompañan a la VCard, y quien integra una necesita la otra.
vcard.Post("/dlocal/planes", apiControllers.CreatePlan)
+1
View File
@@ -26,6 +26,7 @@ func TestRutasVcardRegistradas(t *testing.T) {
"POST /v2/vcard/qr",
"POST /v2/vcard/qr-url",
"POST /v2/vcard/vcf",
"POST /v2/vcard/ia",
"POST /v2/vcard/dlocal/planes",
"GET /v2/vcard/dlocal/planes",
"GET /v2/vcard/dlocal/planes/:planID",