-- Migration 049 — AP#11 / PRD-0007-EXT.
-- Cria tabela agente_motivo_reprovacao — cadastro Tef.Net dos motivos
-- categorizados que aparecem no dropdown da Bandeja de aprovacao de resgate.
--
-- ESCOPO:
--   - Dropdown gated por permissao `agente.motivo_reprovacao.editar`
--     (Migration 054 adiciona a flag em tbl_Permissao).
--   - CRUD inline na propria modal de validacao via botao "+ Cadastrar".
--   - Soft delete logico via coluna `ativo` (1/0) — preserva FK historica
--     em agente_lote_resgate.reprovado_motivo_categoria_id mesmo apos
--     desativar (ON DELETE SET NULL na FK do 051).
--
-- DESIGN:
--   - `descricao` VARCHAR(120): cabe na UI sem quebrar layout do dropdown.
--   - `criado_por` INT NULL: id do usuario tbl_Usuario; permanece NULL em
--     DEV bypass ou seed inicial. Sem FK explicita pra tbl_Usuario porque
--     legacy (MyISAM) — alinhado a `agente_lote_anexo.uploaded_by`.
--   - INDEX `idx_ativo`: queries de listagem do dropdown filtram por
--     ativo=1; cardinalidade baixa (5–50 motivos esperados) mas hot path.
--
-- ENGINE InnoDB DEFAULT CHARSET=utf8mb4 — padrao agente_* (CLAUDE.md item 5).
--
-- Seed inicial (5 motivos comuns) vai em Migration 053.

SET SESSION sql_mode = '';

CREATE TABLE IF NOT EXISTS agente_motivo_reprovacao (
  id          INT AUTO_INCREMENT PRIMARY KEY,
  descricao   VARCHAR(120) NOT NULL COMMENT 'Texto exibido no dropdown (ate 120 chars)',
  ativo       TINYINT(1)   NOT NULL DEFAULT 1 COMMENT 'Soft delete: 1=visivel, 0=oculto mas preserva historico',
  criado_em   DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  criado_por  INT          NULL COMMENT 'tbl_Usuario.id_user do criador; NULL em DEV/seed',
  INDEX idx_ativo (ativo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='AP#11 (PRD-0007-EXT) — Catalogo Tef.Net de motivos de reprovacao/correcao de resgate.';
