Saltar al contenido principal

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.

  1. Configuración → Parámetros.
  2. Editar el valor.
  3. 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_admin puede editarlos).

Roles y Permisos

  1. Seguridad → Roles.
  2. Seleccionar un rol.
  3. Marcar/desmarcar permisos por módulo.
  4. Asignar usuarios al rol (en Seguridad → Usuarios).

Roles predefinidos

Roles humanos (5):

RolNivel de acceso
super_adminTodo el sistema (cross-tenant)
tenant_adminTodo en su tenant
managerExpedientes, tareas, doc-flows
reviewerRevisar, aprobar, asistente IA en docs
readonlySolo lectura

Roles M2M / integraciones (4) — para clientes API que se autentican con service_clients:

RolUso
api_fullCliente API con permisos completos
api_readonlyCliente API solo lectura
api_dossierCliente API limitado a expedientes
api_documentCliente 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ónQué configura
Proveedor LLMOllama (local), OVH cloud, Anthropic, OpenAI, Google, Mistral
ModelosPor tier: local y cloud. Default: gpt-oss:20b / gpt-oss-120b
BudgetLímite de tokens/USD por período (día/mes). Cuando se excede, las llamadas a cloud se rechazan; las locales siguen
System prompt baseTexto que precede toda conversación del asistente. Útil para fijar tono/dominio del organismo
Tools habilitadasLista de tools que el asistente puede invocar (search, canvas, lectura sobre expedientes, etc.). Las destructivas requieren confirmación explícita
Greeting policyauto (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ámetroNotas
Modelo de embeddingsDefault nomic-embed-text (Ollama, 768 dim)
Tamaño de chunkEn tokens (default 512)
Overlap entre chunksEn tokens (default 50)
Top-k para contextoCantidad de chunks a recuperar por query (default 8)
Reindexar todoBotó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:

  1. Crear.
  2. Scope: TENANT (todo el tenant), ACCOUNT (una cuenta), DOSSIER (un expediente). El scope determina el nivel del árbol al que se da acceso.
  3. Protocolos habilitados (toggles): WebDAV / SFTP / FTPS / SMB / S3.
  4. Autenticación: tipo (PASSWORD / SSH_KEY / CERTIFICATE / KERBEROS), username, secret (cifrado AES-256-GCM al guardar).
  5. Comportamiento: canCreateAccounts, canCreateDossiers, defaultDossierTypeId, defaultDocumentTypeId, mapeo MIME→DocumentType (wildcard * para fallback).
  6. Guardar — el provisioning del recurso externo se dispara async.
  7. 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, Dossier o Document individual.
  • Asignación a User, Role o Credential (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:

CampoDescripción
Nombrekebab-case, único por tenant. Lo usa <DashboardLoader name="..." />
EtiquetaTexto visible al usuario
DescripciónPara la card en el viewer
URLTemplate con placeholders $(VAR) o path de Grafana
Permiso requeridoEj. dashboard.ViewActivity. El menú esconde dashboards a los que el usuario no tiene permiso
Modo embedproxy (Grafana reescrito a /observability/grafana/...) o direct (con env-var substitution)
OrdenPosició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.

CampoNotas
NombreÚnico por tenant
Cron expressionEstándar Unix (5 campos). Ej: 0 8 * * 1 = todos los lunes 8 AM
QueryFiltro sobre dossiers/documentos/tareas (con tenantId implícito)
FormatoPDF / XLSX / CSV
DestinatariosLista de emails (separados por coma)
Subject del emailTemplate 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_KEY para credenciales, API keys de proveedores LLM) NO están en pantallas de configuración — viven en el .env de 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 GET nunca devuelven el ciphertext ni el plaintext — solo hasSecret: true|false.