-- ---------------------------------------------------------------------------
-- Bitácora del canal de replicación de reservaciones (rsv_bitacorareplicacion).
--
-- Equivalente manual de la migración
--   database/migrations/2026_08_18_110000_create_rsv_bitacorareplicacion_table.php
-- para aplicarlo directo cuando `php artisan migrate` no esté disponible.
--
-- POR QUÉ EXISTE
--   El correo de MonitorReservaciones avisa; esta tabla permite RECONSTRUIR. Se escribe
--   SIEMPRE, esté el correo throttleado o el monitoreo apagado. Es lo que separa
--   "no nos avisaron" de "no quedó rastro".
--
-- bitacoraReplicacionAvisada distingue "no pasó nada" de "pasó y se silenció". Sin esa
-- columna, revisar la bitácora no permite saber si alguien fue notificado — y esa es justo
-- la pregunta después de un reclamo del socio.
--
-- SIN claves foráneas, y idReservacion nullable: la bitácora debe poder registrar
-- incidencias de reservaciones que ya se borraron o que nunca llegaron a existir. Una FK
-- convertiría el registro del error en un segundo error.
--
-- Referencia: PROPUESTA_REPLICACION_BIDIRECCIONAL_RESERVACIONES.md §14bis.5.
-- ---------------------------------------------------------------------------

CREATE TABLE IF NOT EXISTS `rsv_bitacorareplicacion` (
  `idBitacoraReplicacion`      bigint       NOT NULL AUTO_INCREMENT,
  `bitacoraReplicacionFecha`   datetime(6)  NOT NULL,
  `bitacoraReplicacionProceso` varchar(80)  NOT NULL COMMENT 'replicacion:portal, ReplicacionController@veredicto, ...',
  `bitacoraReplicacionTipo`    varchar(10)  NOT NULL COMMENT 'Codigo del catalogo de incidencias: R1..R15',
  `bitacoraReplicacionMensaje` varchar(500) NOT NULL,
  `bitacoraReplicacionDatos`   json         NULL     COMMENT 'Contexto completo de la incidencia',
  `bitacoraReplicacionFirma`   varchar(120) NOT NULL COMMENT 'Clave de throttle usada',
  `bitacoraReplicacionAvisada` tinyint(1)   NOT NULL DEFAULT 0 COMMENT '0 = se silencio por throttle o monitoreo apagado',
  `idReservacion`              int          NULL     DEFAULT NULL COMMENT 'Nullable y SIN FK a proposito',
  PRIMARY KEY (`idBitacoraReplicacion`),
  KEY `idx_bitrep_tipo_fecha` (`bitacoraReplicacionTipo`, `bitacoraReplicacionFecha`),
  KEY `idx_bitrep_reservacion` (`idReservacion`)
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;

-- Comprobación
-- SHOW CREATE TABLE `rsv_bitacorareplicacion`;

-- Reversa
-- DROP TABLE IF EXISTS `rsv_bitacorareplicacion`;
