feat(plantillas): poder elegir qué modelo usa "Leer con IA"
Convertir un documento entero en plantilla pide un modelo más capaz que el resto de las tareas, pero salía por el módulo "IA / vCard", compartido con la integración de vCard: subir el modelo ahí es subírselo a todo. Ahora hay un módulo "Plantillas de documento" en /app/ai-config. Si alguna config activa lo declara, la importación usa esa; si no, sigue saliendo por "ia" exactamente como hasta ahora. Nadie tiene que configurar nada para que siga funcionando. La pantalla de plantillas aclara además que esto no usa un agente de uMind y adónde ir a cambiar el modelo, que era la duda. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
c75a6d7deb
commit
dcffab4311
@@ -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ó
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)' },
|
||||
],
|
||||
|
||||
@@ -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.
|
||||
</p>
|
||||
<p class="text-xs text-gray-400 mb-2">
|
||||
No usa un agente: esto no conversa ni consulta una base de conocimiento, convierte el documento y listo.
|
||||
El modelo sale de <a href="/app/ai-config" class="underline">Configuración de IA</a> — asignale el módulo
|
||||
<em>Plantillas de documento</em> a la config que quieras usar acá, o dejalo sin asignar y usa la de <em>IA / vCard</em>.
|
||||
</p>
|
||||
<div class="flex flex-wrap items-center gap-2">
|
||||
<input type="file" x-ref="archivo" accept=".pdf,.docx,.html,.htm,.txt,.md,image/*"
|
||||
class="text-xs" />
|
||||
|
||||
Reference in New Issue
Block a user