diff --git a/pkg/models/ai_config.go b/pkg/models/ai_config.go index 82e25ff..83ce715 100644 --- a/pkg/models/ai_config.go +++ b/pkg/models/ai_config.go @@ -235,6 +235,25 @@ func GetAiConfigForService(service string) (*AiConfig, error) { return &items[0], nil } +// HayAiConfigParaModulo dice si alguna config activa declara ese módulo. +// Sirve para elegir un módulo propio solo cuando el admin lo configuró, y si no +// caer al que se venía usando — GetAiConfigForService no lo distingue porque +// tiene fallback a la global y a cualquier activa. +func HayAiConfigParaModulo(modulo string) bool { + var items []AiConfig + if err := app.Http.Database.DB.Where("is_active = ?", true).Find(&items).Error; err != nil { + return false + } + for i := range items { + for _, m := range SplitModulos(items[i].Modulo) { + if m == modulo { + return true + } + } + } + return false +} + // GetWhisperConfig retorna la config de IA activa etiquetada específicamente con // el módulo "whisper" (transcripción de audio). A diferencia de // GetAiConfigForService, NO cae a una config global: si el admin no configuró diff --git a/pkg/services/plantilla_import_service.go b/pkg/services/plantilla_import_service.go index 149cc56..a1e56b6 100644 --- a/pkg/services/plantilla_import_service.go +++ b/pkg/services/plantilla_import_service.go @@ -3,6 +3,8 @@ package services import ( "fmt" "strings" + + "github.com/sujit-baniya/fiber-boilerplate/pkg/models" ) // variablesPorTipo documenta, para la IA, qué campos recibe cada plantilla al @@ -59,7 +61,16 @@ Documento de referencia: %s ---`, tipo, variablesComunes, vars, textoDocumento) - salida, err := CompletarTextoIA("ia", sistema, usuario) + // Si el admin asignó una config al módulo "plantillas" se usa esa; si no, + // sigue saliendo por "ia" como hasta ahora. Convertir un documento entero + // pide un modelo más capaz que el resto de las tareas, y esto deja + // elegirlo sin tocar lo que ya usa la vCard. + modulo := "ia" + if models.HayAiConfigParaModulo("plantillas") { + modulo = "plantillas" + } + + salida, err := CompletarTextoIA(modulo, sistema, usuario) if err != nil { return "", err } diff --git a/resources/views/ai_config.html b/resources/views/ai_config.html index e59488b..a2f9972 100644 --- a/resources/views/ai_config.html +++ b/resources/views/ai_config.html @@ -294,6 +294,7 @@ function aiConfigApp() { { value: 'landing', label: 'Landing Generator' }, { value: 'query_runner', label: 'Query Runner SQL' }, { value: 'ia', label: 'IA / vCard' }, + { value: 'plantillas', label: 'Plantillas de documento (importar con IA)' }, { value: 'whisper', label: 'Transcripción de audio (Whisper)' }, { value: 'umind_embeddings', label: 'uMind — embeddings (RAG del widget)' }, ], diff --git a/resources/views/automatizacion/plantillas_documento.html b/resources/views/automatizacion/plantillas_documento.html index bfddd33..8b8410d 100644 --- a/resources/views/automatizacion/plantillas_documento.html +++ b/resources/views/automatizacion/plantillas_documento.html @@ -96,6 +96,11 @@ Subí el archivo (PDF, Word .docx, .html, .txt o una foto/captura del documento) y la IA lo devuelve armado como plantilla, con las variables puestas. Después lo editás acá abajo antes de guardar.
++ No usa un agente: esto no conversa ni consulta una base de conocimiento, convierte el documento y listo. + El modelo sale de Configuración de IA — asignale el módulo + Plantillas de documento a la config que quieras usar acá, o dejalo sin asignar y usa la de IA / vCard. +