-- =============================================================================
-- Migración:    0002_create_roles_table
-- Sprint:       1.1 — auth + RBAC + audit
-- Tabla:        roles
-- Aplica en:    BD de cada tenant (innovium_<slug>)
-- Dependencias: ninguna.
--
-- Descripción:
--   Roles del sistema. En Sprint 1.1 son 6 fijos sembrados por seeder:
--   superadmin, tenant_admin, gerente, vendedor, operativo, contador.
--   `nivel` es la jerarquía 1..100 (mayor número = más poder), usada
--   para checks rápidos del tipo "este rol está por encima de aquel".
--
-- Notas:
--   - slug se usa en código (ej: Auth::role() === 'vendedor').
--   - actualizado_en presente por consistencia con la convención global
--     de CLAUDE.md: TODAS las tablas tienen creado_en y actualizado_en.
-- =============================================================================

CREATE TABLE roles (
    id             BIGINT UNSIGNED  NOT NULL AUTO_INCREMENT
                   COMMENT 'PK auto-incremental del rol.',
    slug           VARCHAR(50)      NOT NULL
                   COMMENT 'Código único usado en código PHP (ej: "vendedor").',
    nombre         VARCHAR(100)     NOT NULL
                   COMMENT 'Nombre legible para UI (ej: "Vendedor").',
    descripcion    TEXT                 NULL
                   COMMENT 'Texto explicativo del rol, opcional.',
    nivel          TINYINT UNSIGNED NOT NULL DEFAULT 0
                   COMMENT 'Jerarquía 1..100 (mayor = más poder). superadmin=100.',
    activo         TINYINT(1)       NOT NULL DEFAULT 1
                   COMMENT '1=asignable, 0=desactivado (no asignable a nuevos users).',
    creado_en      DATETIME         NOT NULL DEFAULT CURRENT_TIMESTAMP
                   COMMENT 'UTC de creación. Inmutable.',
    actualizado_en DATETIME         NOT NULL DEFAULT CURRENT_TIMESTAMP
                                             ON UPDATE CURRENT_TIMESTAMP
                   COMMENT 'UTC de la última edición. Auto-actualizado por MySQL.',
    PRIMARY KEY (id),
    UNIQUE KEY uq_roles_slug (slug)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='Roles fijos del sistema. RBAC: usuarios → user_roles → roles → role_permissions → permissions.';
