-- Migration 037 — RES#2 Sprint C (10/05/2026 madrugada virada 2).
--
-- Cria tabela agente_lote_anexo pra registrar arquivos (NF, boleto, comprovantes)
-- vinculados a cada agente_lote_resgate. Referência opaca via `storage_key` —
-- driver atual é StorageLocal (api/_storage_local.php) gravando em
-- /uploads/local/{section}/{YYYY-MM}/{hash}.{ext}; quando ARM#1 fechar, migra
-- pra R2/S3/MinIO sem mexer no schema (a key continua opaca).
--
-- Sprint C introduz fluxo:
--   1. Parceiro clica "Solicitar resgate" → modal abre
--   2. Modal coleta forma_pag (pix|boleto) + upload NF (obrigatório) +
--      upload Boleto (obrigatório se forma_pag='boleto')
--   3. POST api/resgate_anexar.php: faz upload via get_storage()->upload(),
--      cria lote em pendente_aprovacao, INSERT em agente_lote_anexo
--   4. Bandeja Tef.Net mostra links pra baixar anexos via api/arquivo_baixar.php
--
-- Tipos:
--   nf           — Nota Fiscal (PDF/JPG/PNG/XML)
--   boleto       — Boleto bancário (PDF)
--   comprovante  — Comprovante de pagamento (Tef.Net pode anexar futuramente)
--   outro        — Catch-all pra extensões
--
-- ON DELETE CASCADE — se o lote for soft-deletado fisicamente (raro), anexos vão junto.
-- Em situacao=0 (soft delete) o anexo permanece, só fica oculto.

SET SESSION sql_mode = '';

CREATE TABLE IF NOT EXISTS agente_lote_anexo (
  id INT PRIMARY KEY AUTO_INCREMENT,
  lote_id INT NOT NULL,
  tipo ENUM('nf','boleto','comprovante','outro') NOT NULL,
  storage_key VARCHAR(500) NOT NULL COMMENT 'Key opaca do driver (path em local, key em S3/R2)',
  nome_original VARCHAR(255) NOT NULL,
  mime_type VARCHAR(100) NOT NULL,
  tamanho_bytes INT NOT NULL,
  uploaded_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  uploaded_by INT NULL COMMENT 'user_id do uploader (NULL em DEV bypass)',
  situacao TINYINT(1) NOT NULL DEFAULT 1,
  INDEX idx_anexo_lote (lote_id),
  INDEX idx_anexo_tipo (tipo),
  CONSTRAINT fk_anexo_lote FOREIGN KEY (lote_id) REFERENCES agente_lote_resgate(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='RES#2 Sprint C — anexos (NF/Boleto/Comprovante) por lote de resgate. Driver opaco via api/_storage.php.';
