-- Migration 034 — AUDIT#1 — log estruturado de acoes do app web/agente.
--
-- Contexto: GAP de auditoria detectado em 10/05/2026 — Reapurar/Fechar/Resgatar
-- e demais transicoes de lote nao logam em BD. Aprovado pelo dono ("pode
-- providenciar, para ficar tudo rastreado").
--
-- Acoes capturadas:
--   apurar | fechar | reabrir | resgate_solicitar | lote_liquidar |
--   lote_estornar | rollback_executar | cron_manual
--
-- Insercao SEMPRE fora de transacao (depois de commit ou erro). Helper em
-- api/_log_helpers.php sob funcao log_acao().

CREATE TABLE IF NOT EXISTS agente_log_acao (
  id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  usuario_id INT NOT NULL DEFAULT 0 COMMENT 'tbl_Usuario.id (0 quando DEV sem login)',
  usuario_nome VARCHAR(120) NULL COMMENT 'snapshot do nome no momento da acao',
  usuario_tpuser VARCHAR(20) NULL COMMENT 'Tef.Net | Revenda | Agente',
  cod_Representante INT NULL COMMENT 'agente alvo da acao',
  competencia CHAR(7) NULL COMMENT 'AAAA-MM',
  acao VARCHAR(40) NOT NULL COMMENT 'apurar | fechar | reabrir | resgate_solicitar | lote_liquidar | lote_estornar | rollback_executar | cron_manual',
  status_resultado ENUM('OK','ERRO') NOT NULL,
  mensagem VARCHAR(500) NULL,
  apuracao_id BIGINT UNSIGNED NULL,
  lote_id BIGINT UNSIGNED NULL,
  payload_resumo TEXT NULL COMMENT 'JSON pequeno com contexto (max 500 chars)',
  ip_address VARCHAR(45) NULL,
  user_agent VARCHAR(255) NULL,
  ambiente VARCHAR(20) DEFAULT 'PROD' COMMENT 'DEV | PROD (DEV quando ?dev=1)',
  PRIMARY KEY (id),
  KEY idx_log_data (created_at),
  KEY idx_log_acao_data (acao, created_at),
  KEY idx_log_cod_comp (cod_Representante, competencia),
  KEY idx_log_apuracao (apuracao_id),
  KEY idx_log_lote (lote_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='AUDIT#1 — log estruturado de acoes do app web/agente. Aprovado em 10/05/2026.';
