Modules
Unidades funcionales activables a la carta. Cada tenant elige solo los módulos que usa.
¿Qué es un módulo?
Un módulo es un paquete que aporta:
- DDL — sentencias
CREATE TABLE IF NOT EXISTSpara tablas del módulo en el schema del tenant - Permisos — keys registradas en
permission_master_catalog(e.g.appointments:read,inventory:write) - Schemas RJSF — JSON Schema para configurar el módulo desde la UI
- Server Actions — operaciones con audit log
Catálogo de módulos
Los módulos viven en packages/modules/<module-key>. Se registran en module_registry. Están disponibles para instalación desde admin.vertix.lat/tenants/<slug> → Modules.
Instalación per-tenant
- Superadmin abre tenant detail → tab Modules
- Selecciona módulo del catálogo + clic Instalar
- Sistema ejecuta DDL contra schema
tenant_<slug> - Inserta filas en
tenant_modules (tenant_id, module_key, installed_at) - Audit log
module.install
Niche presets
Atajo: aplicar un preset por nicho instala un bundle pre-curado de módulos. Ejemplos:
- Clínica: appointments, contacts, billing, notifications
- Veterinario: appointments, contacts, inventory, billing
- Restaurante: tables, orders, inventory, billing, team
- Barbería: appointments, contacts, billing, team, commissions
- Retail: inventory, pos, contacts, billing, multi-branch
Invariantes
plans.config.features ⊆ feature_master_catalog.feature_keymodule.permissions ⊆ permission_master_catalog.permission_keyniche_preset.modules ⊆ module_registry.keys- Toda instalación de módulo escribe audit log