-- Migration 052 — AP#11 / PRD-0007-EXT.
-- Cria tabela agente_lote_anexo_check — persiste os 3 checks individuais
-- que o operador Tef.Net marca no modal de validacao (NF / Boleto-ou-Pix /
-- Valor).
--
-- ESCOPO:
--   Modal AP#11 mostra 3 cards toggle no contexto da validacao. Clique
--   marca o check; persistimos para:
--     - Auditoria (quem confirmou que viu cada anexo + quando).
--     - Logica do botao "Aprovar Total" (so libera quando os 3 estao
--       marcados — gate de UX + backend).
--     - Recuperar estado parcial se operador fechar o modal e reabrir.
--
-- TIPOS:
--   - `nf`         — Nota Fiscal validada (existencia + conferencia visual)
--   - `boleto_pix` — Boleto bancario OU chave Pix (forma_pag do lote dita qual)
--   - `valor`      — Valor batendo com a competencia
--
-- UNIQUE (lote_id, tipo_check):
--   Idempotente — clique marca/desmarca via INSERT ... ON DUPLICATE KEY UPDATE
--   no backend; OU DELETE quando desmarca. UNIQUE garante 1 linha por par.
--
-- ON DELETE CASCADE: lote deletado fisicamente leva os checks junto (raro;
--   normalmente lote tem soft delete situacao=0 em outros modulos, mas
--   agente_lote_resgate nao tem coluna situacao — caso seja deletado de
--   verdade, anexos e checks vao tudo junto). Alinhado com
--   agente_lote_anexo.fk_anexo_lote (Migration 037).
--
-- `checado_by` INT NULL: tbl_Usuario.id_user do operador Tef.Net; NULL em
-- DEV bypass. Sem FK pra legacy (MyISAM) — mesmo precedente de
-- agente_lote_anexo.uploaded_by.

SET SESSION sql_mode = '';

CREATE TABLE IF NOT EXISTS agente_lote_anexo_check (
  id          INT AUTO_INCREMENT PRIMARY KEY,
  lote_id     INT NOT NULL,
  tipo_check  ENUM('nf','boleto_pix','valor') NOT NULL
              COMMENT 'AP#11 — Qual dos 3 cards de validacao foi marcado.',
  checado_em  DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  checado_by  INT NULL COMMENT 'tbl_Usuario.id_user do operador; NULL em DEV',
  UNIQUE KEY uq_lote_check (lote_id, tipo_check),
  CONSTRAINT fk_alac_lote
    FOREIGN KEY (lote_id) REFERENCES agente_lote_resgate(id)
    ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='AP#11 (PRD-0007-EXT) — Checks individuais (NF/Pix-Boleto/Valor) do operador Tef.Net por lote.';
