-- Migration 009 — ALTER tbl_Permissao adicionando 11 flags do satelite agente
-- PRD: docs/PRDs/PRD-0002-modelo-agente/PRD-0002-modelo-agente.md
-- ADR: docs/ADRs/ADR-0004-prefixo-colunas-projeto-agente.md
-- Card: AUTH#1 (roadmap — em 🔵 progresso)
-- Data: 06/05/2026
--
-- ESCOPO: adiciona 11 colunas char(1) 'S'/'N' em tbl_Permissao (tabela do
-- newportaltefnet) seguindo padrao ADR-0004 (prefixo `agente_`). Cada flag
-- corresponde a uma autorizacao verificada por `auth_required()` nos
-- endpoints do satelite agente.
--
-- NOMENCLATURA: snake_case com prefixo `agente_` (decisao consolidada
-- 06/05/2026 entre dono e dev — vide PERGUNTAS.md de AUTH#1). Quebra padrao
-- camelCase historico do tbl_Permissao deliberadamente, em troca de
-- identidade cristalina do dono do satelite.
--
-- DEFAULT 'N': nenhum perfil ganha permissao automatica. Admin habilita
-- explicitamente quem precisa. Usuarios logados precisam relogar pra ver
-- permissao nova (limitacao do mecanismo $_SESSION existente — abordado
-- pelo endpoint refreshPermissao.php em passo posterior do AUTH#1).
--
-- ROLLBACK: vide 20260506_009_alter_tbl_permissao_flags_agente.down.sql
--
-- AGRUPAMENTO LOGICO (refletido em tblPermission.php):
--   Cadastro:  agente_ver, agente_criar, agente_editar, agente_vincular, agente_externo
--   Apuracao:  agente_pct_editar, agente_apurar, agente_fechar, agente_diretoria
--   Lote:      agente_lote_ver, agente_lote_liquidar

ALTER TABLE tbl_Permissao
  ADD COLUMN agente_ver           CHAR(1) NOT NULL DEFAULT 'N'
    COMMENT '[satelite:agente] Ver listagem de agentes externos',
  ADD COLUMN agente_criar         CHAR(1) NOT NULL DEFAULT 'N'
    COMMENT '[satelite:agente] Cadastrar novo agente',
  ADD COLUMN agente_editar        CHAR(1) NOT NULL DEFAULT 'N'
    COMMENT '[satelite:agente] Editar dados de agente existente',
  ADD COLUMN agente_vincular      CHAR(1) NOT NULL DEFAULT 'N'
    COMMENT '[satelite:agente] Vincular agente a revenda Premium/Standard',
  ADD COLUMN agente_externo       CHAR(1) NOT NULL DEFAULT 'N'
    COMMENT '[satelite:agente] Marca perfil como Agente Externo (acesso reduzido a proprio painel)',
  ADD COLUMN agente_pct_editar    CHAR(1) NOT NULL DEFAULT 'N'
    COMMENT '[satelite:agente] Editar percentual do agente em pedido especifico',
  ADD COLUMN agente_apurar        CHAR(1) NOT NULL DEFAULT 'N'
    COMMENT '[satelite:agente] Rodar apuracao de competencia',
  ADD COLUMN agente_fechar        CHAR(1) NOT NULL DEFAULT 'N'
    COMMENT '[satelite:agente] Fechar competencia apurada (B7)',
  ADD COLUMN agente_diretoria     CHAR(1) NOT NULL DEFAULT 'N'
    COMMENT '[satelite:agente] Reabrir competencia fechada / estornar lote (privilegio elevado)',
  ADD COLUMN agente_lote_ver      CHAR(1) NOT NULL DEFAULT 'N'
    COMMENT '[satelite:agente] Ver lotes de resgate',
  ADD COLUMN agente_lote_liquidar CHAR(1) NOT NULL DEFAULT 'N'
    COMMENT '[satelite:agente] Liquidar lote (marcar pago + anexar comprovante)';
