Glosario
Términos clave del sistema Vertix.
Tenant
Cliente de la plataforma. Cada tenant tiene su propio subdominio (<slug>.vertix.lat) y schema PostgreSQL aislado (tenant_<slug>).
Slug
Identificador único URL-safe del tenant. Regla: /^[a-z][a-z0-9_-]+$/. No puede colisionar con subdominios reservados (www, admin, api, docs, demo, app, vertix).
Schema
Espacio de nombres PostgreSQL aislado por tenant. Todas las queries de tenant aplican SET LOCAL search_path a su schema antes de ejecutar. Garantiza que un tenant nunca lee datos de otro.
Module
Unidad funcional activable a la carta (Citas, Inventario, Facturación, IA, etc). Cada módulo registra DDL para sus tablas, permisos en el catálogo, y schemas RJSF para UIs.
Niche / Preset
Niche = vertical de negocio (clínica, veterinario, restaurante, barbería, retail). Preset = bundle de módulos + permisos + seeds aplicable a un tenant para configurarlo rápido según su nicho.
Membership
Relación user→tenant con rol. PK compuesta (user_id, tenant_id). Roles: owner, admin, user, viewer.
Better Auth
Sistema de auth multi-tenant. users.id es text (formato ULID, ~26 chars), no UUID. Sessions validadas vía cookie __Secure-vertix.session_token con Domain=.vertix.lat.
API key
Token autenticación programática per-tenant. Formato vx_live_*. Almacenado como SHA-256 hash; key completa solo se muestra una vez al crear. Soporta scopes (read:contacts, write:appointments, *).
Webhook endpoint
URL HTTP que recibe eventos del tenant. Firmados HMAC-SHA256 con secret per-endpoint. Header X-Vertix-Signature contiene sha256=<digest>. Reintentos exponential backoff hasta 5 intentos.
Feature flag
Toggle de feature experimental o restricted-rollout. Catálogo global + override per-tenant. Tabla tenant_feature_flags tiene PK (tenant_id, flag_key).
Audit log
Registro inmutable de toda mutación. Campos: tenant_id, user_id, actor_kind (human | claude | system), action, target, metadata, ip, user_agent, created_at.
Impersonation
Mecanismo superadmin → ver tenant como un user específico. Toda sesión de impersonación se registra en audit log como impersonate.start / impersonate.stop.
Plan
Tier comercial del tenant. Define límites (módulos, sucursales, usuarios) y features disponibles. Mapeo: plans.config.features ⊆ feature_master_catalog.feature_key.