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.