-- =============================================================================
-- XPERT 3PL - Migracion 019
-- Endurecimiento de audit_log para cumplir GAMP5/DINAVISA: hoy la tabla existe
-- desde 001_schema.sql pero se usa en un unico lugar de todo el codigo (login),
-- sin capa generica de acceso, sin categoria, y sin ningun mecanismo de
-- inmutabilidad mas alla de un comentario. Esta migracion solo cambia el
-- esquema; el codigo que la llena (AuditService) y la revocacion de permisos
-- UPDATE/DELETE se hacen aparte (paso de deploy, no de migracion SQL, porque
-- REVOKE depende del host/usuario real de conexion de cada entorno).
-- =============================================================================

ALTER TABLE `audit_log`
    MODIFY COLUMN `record_id` INT UNSIGNED NULL COMMENT 'Nullable: un evento de acceso generico o un login fallido no tiene un registro puntual',
    ADD COLUMN `company_id` INT UNSIGNED NULL AFTER `record_id`,
    ADD COLUMN `event_category` ENUM('ACCESS','DATA_CHANGE','SECURITY') NOT NULL DEFAULT 'DATA_CHANGE' AFTER `action`,
    ADD COLUMN `request_method` VARCHAR(10) NULL AFTER `event_category`,
    ADD COLUMN `request_path` VARCHAR(255) NULL AFTER `request_method`,
    ADD COLUMN `http_status` SMALLINT UNSIGNED NULL AFTER `request_path`,
    ADD COLUMN `prev_hash` CHAR(64) NULL AFTER `ip_address`,
    ADD COLUMN `row_hash` CHAR(64) NULL AFTER `prev_hash`,
    ADD KEY `idx_audit_category` (`event_category`),
    ADD KEY `idx_audit_company` (`company_id`),
    ADD KEY `idx_audit_created` (`created_at`);
