Configuración
Esta sección cubre la administración del tenant (organismo). Las acciones aquí descriptas requieren rol tenant_admin o equivalente.
Parámetros del sistema
Los parámetros permiten personalizar el comportamiento del sistema sin modificar código.
- Configuración → Parámetros.
- Editar el valor.
- Guardar.
Los cambios aplican inmediatamente (caché Redis con TTL de 1 hora).
Parámetros del tenant vs globales
- Tenant: aplican solo a tu organización.
- Globales (sistema): aplican a todas las organizaciones (solo
super_adminpuede editarlos).
Roles y Permisos
- Seguridad → Roles.
- Seleccionar un rol.
- Marcar/desmarcar permisos por módulo.
- Asignar usuarios al rol (en Seguridad → Usuarios).
Roles predefinidos
Roles humanos (5):
| Rol | Nivel de acceso |
|---|---|
super_admin | Todo el sistema (cross-tenant) |
tenant_admin | Todo en su tenant |
manager | Expedientes, tareas, doc-flows |
reviewer | Revisar, aprobar, asistente IA en docs |
readonly | Solo lectura |
Roles M2M / integraciones (4) — para clientes API que se autentican con service_clients:
| Rol | Uso |
|---|---|
api_full | Cliente API con permisos completos |
api_readonly | Cliente API solo lectura |
api_dossier | Cliente API limitado a expedientes |
api_document | Cliente API limitado a documentos |
Hay 132 permisos granulares en total, organizados en 23 módulos. Cada nuevo módulo agrega sus permisos automáticamente al bootstrap. Fuente de verdad: api/src/bootstrap/permissions.json.
Source-of-truth de assignments
Keycloak es la fuente de verdad del assignment user↔role. La caché local en Kuatia se actualiza en cada login desde el claim realm_access.roles del JWT. Para asignar/quitar roles a un usuario, hacerlo en Keycloak — el próximo login lo refleja en Kuatia.
Tipos de Expediente
Administración → Tipos de Expediente — configurar templates de expedientes:
- Campos por estado (metadata schema).
- Documentos requeridos.
- Flujo asociado (pestaña Flujo — ver Administración de Flujos).
Tipos de Documento
Administración → Tipos de Documento — configurar templates de documentos:
- Metadata schema.
- MIME types asociados.
- Doc-flow asociado (pestaña Flujo) — Layer 2 con extracción y revisión IA.
Tipos de Cuenta
Administración → Tipos de Cuenta — categorías de cuentas (persona física, empresa, deudor, firmante, etc.). Cada tipo define su propio metadata schema.
Asistente IA (configuración del tenant)
Administración → Configuración IA (/admin/ai-settings) — controla cómo se comporta el Asistente AI en tu tenant.
| Sección | Qué configura |
|---|---|
| Proveedor LLM | Ollama (local), OVH cloud, Anthropic, OpenAI, Google, Mistral |
| Modelos | Por tier: local y cloud. Default: gpt-oss:20b / gpt-oss-120b |
| Budget | Límite de tokens/USD por período (día/mes). Cuando se excede, las llamadas a cloud se rechazan; las locales siguen |
| System prompt base | Texto que precede toda conversación del asistente. Útil para fijar tono/dominio del organismo |
| Tools habilitadas | Lista de tools que el asistente puede invocar (search, canvas, lectura sobre expedientes, etc.). Las destructivas requieren confirmación explícita |
| Greeting policy | auto (asistente saluda al abrir el chat) o manual (espera al usuario) |
RAG (búsqueda semántica)
Administración → Configuración IA → RAG — parámetros de la indexación y búsqueda semántica:
| Parámetro | Notas |
|---|---|
| Modelo de embeddings | Default nomic-embed-text (Ollama, 768 dim) |
| Tamaño de chunk | En tokens (default 512) |
| Overlap entre chunks | En tokens (default 50) |
| Top-k para contexto | Cantidad de chunks a recuperar por query (default 8) |
| Reindexar todo | Botón administrativo: re-chunkea y re-embeddea todos los documentos del tenant. Útil al cambiar chunk_size |
Shares (acceso filesystem-like)
Administración → Shares — crear share para que usuarios externos accedan al árbol de archivos via WebDAV, SFTP, Samba o S3.
Pasos:
- Crear.
- Scope:
TENANT(todo el tenant),ACCOUNT(una cuenta),DOSSIER(un expediente). El scope determina el nivel del árbol al que se da acceso. - Protocolos habilitados (toggles): WebDAV / SFTP / FTPS / SMB / S3.
- Autenticación: tipo (PASSWORD / SSH_KEY / CERTIFICATE / KERBEROS), username, secret (cifrado AES-256-GCM al guardar).
- Comportamiento:
canCreateAccounts,canCreateDossiers,defaultDossierTypeId,defaultDocumentTypeId, mapeo MIME→DocumentType (wildcard*para fallback). - Guardar — el provisioning del recurso externo se dispara async.
- Instrucciones de conexión (botón en la vista de detalle) — abre un dialog con instrucciones por protocolo × sistema operativo. La password nunca aparece (placeholders).
Limitaciones SMB: random writes sobre archivos grandes (>100 MB) son lentos por FUSE-mount. Apps con SMB locks estrictos (ej. MS Access multi-user) no funcionan.
ACL fino (acceso a entidades individuales)
Para reglas de acceso más finas que los permisos por módulo:
Seguridad → Reglas de acceso (cuando se habilita ACL):
- Reglas a nivel
Account,DossieroDocumentindividual. - Asignación a
User,RoleoCredential(INBOUND, para Shares). - Audit chain de cambios sobre reglas.
- Log de denegaciones para análisis (qué credencial intentó qué, cuándo).
Dashboards embebidos
Administración → Dashboards — administrar dashboards de Grafana embebidos en Kuatia:
| Campo | Descripción |
|---|---|
| Nombre | kebab-case, único por tenant. Lo usa <DashboardLoader name="..." /> |
| Etiqueta | Texto visible al usuario |
| Descripción | Para la card en el viewer |
| URL | Template con placeholders $(VAR) o path de Grafana |
| Permiso requerido | Ej. dashboard.ViewActivity. El menú esconde dashboards a los que el usuario no tiene permiso |
| Modo embed | proxy (Grafana reescrito a /observability/grafana/...) o direct (con env-var substitution) |
| Orden | Posición en el menú del usuario |
Los dashboards isSystem=true (seeds del bootstrap: kuatia-activity y kuatia-inventory) son reconciliados — no se pueden borrar pero sí editar orden/enabled.
Para el usuario final, los dashboards aparecen en Mis dashboards (/my-dashboards). El grupo de menú se esconde si el usuario no tiene ningún dashboard.View*.
Reportes programados
Administración → Reportes programados — configurar cron-driven reports vía email.
| Campo | Notas |
|---|---|
| Nombre | Único por tenant |
| Cron expression | Estándar Unix (5 campos). Ej: 0 8 * * 1 = todos los lunes 8 AM |
| Query | Filtro sobre dossiers/documentos/tareas (con tenantId implícito) |
| Formato | PDF / XLSX / CSV |
| Destinatarios | Lista de emails (separados por coma) |
| Subject del email | Template con placeholders |
Cada ejecución queda registrada con timestamp, destinatarios efectivos y status (success/failed).
Integraciones
Ver Administración de Integraciones para External Systems, Endpoints, Credentials y UI Endpoints.
MIME Handlers
Administración → Handlers MIME — extractores y visores custom por tipo de archivo. Los handlers builtin (PDF, Office, imágenes, audio/video, etc.) ya están — esta pantalla es para agregar handlers custom via WEBHOOK / ENDPOINT / REACT_COMPONENT / IFRAME_URL para tipos que tu organismo necesite procesar de forma especial.
Procesadores especializados
Administración → Procesadores especializados — catálogo de procesadores (sidecars o servicios externos) que pueden invocarse desde el nodo Extraer con Procesador en doc-flows. Cada procesador declara su outputSchema (Ajv) — los resultados quedan en metadata.extracted[processorName].fields.
Parámetros sensibles
- Variables de ambiente: los secrets del sistema (Keycloak admin, MinIO root, JWT signing keys,
CRYPTO_KEYpara credenciales, API keys de proveedores LLM) NO están en pantallas de configuración — viven en el.envde cada VM. El admin de infraestructura los gestiona. El bootstrap valida que estén presentes al arrancar; si falta una required, el sistema NO levanta. - Credenciales (cifradas AES-256-GCM): los
GETnunca devuelven el ciphertext ni el plaintext — solohasSecret: true|false.