=== Teste E2E: agent_enum / EnumRotulos === -- índice x runtime dos models -- ✅ inventario_dados.tipo indexada ✅ TODO item de InventarioDados::LISTA_TIPO (runtime PHP) tem o mesmo rótulo no índice — 10 itens ✅ constante fora do banco numa coluna COM lista da tela é podada (TIPO_AUDITORIA = 6 não existe em inventario_dados.tipo) ✅ pa_plano_acao.status: sem cores (#21C044...) nem 6/7/8 (ação proposta), só os 6 estados da lista — [0,1,2,3,4,5] ✅ grupo só de constantes NÃO é podado (aplicacao.importancia, sem lista, segue indexado) ✅ rótulo da tela para o código 3 é "SI & TI" (não o nome interno SEGURANCA) ✅ cada valor real de inventario_dados.tipo no banco tem significado — [] ✅ índice tem dezenas de colunas (mecanismo geral, não só inventário) — 39 colunas ✅ nada de coluna de texto livre/id/pontuação ligada por engano — [] ✅ outra tela: pa_plano_acao.status vem de PlanoAcao (lista da tela) -- sql_query devolve a legenda -- ✅ consulta ok ✅ legenda_codigos traz inventario_dados.tipo com rótulos ✅ só traz colunas que a consulta usa (geral_especifico ausente) ✅ consulta sem coluna codificada: sem legenda ✅ JOIN: legenda das tabelas citadas (d.tipo => inventario_dados.tipo) -- schema_info -- ✅ schema_info de tabela FORA do catálogo curado devolve valores_codificados — ["geral_especifico","padrao","tipo"] ✅ objeto inexistente segue dando erro claro -- rótulos nas categorias do gráfico -- ✅ códigos 1,3,4 viram rótulos da tela ✅ valor sem significado => NÃO troca nada (não inventa) ✅ rótulo que já é texto (alias diferente) => intacto ✅ coluna "tipo" em 2 tabelas da consulta => ambíguo, intacto ✅ gráfico por d.tipo: ok ✅ categorias do gráfico são RÓTULOS (ROPA, Operadores de dados...), não números — ["ROPA","SI & TI","Operadores de dados","Governança de Dados"] ✅ soma continua = total do banco — gráfico=210 banco=210 -- nomes internos antigos (renomeações: constante x rótulo da tela) -- ✅ TIPO_FORNECEDOR: rótulo "Operadores de dados" x nome interno "Fornecedor" — {"tipo":{"2":"Fornecedor","3":"Seguranca"}} ✅ TIPO_SEGURANCA: rótulo "SI & TI" x nome interno "Seguranca" ✅ NÃO marca o que bate: ROPA, Governança de Dados, Operadores de dados internacionais, RIPD — [2,3] ✅ inventario_resposta.status=2 (CADASTRADO => "Respondido") marcado ✅ licenca: LICENCA_ATIVA/"Ativa" NÃO é renomeação (repete o nome da classe); LICENCA_VENCE_30_DIAS => "Comunicada Inativação" é — {"status":{"2":"Vence 30 Dias"}} ✅ EXIBE_SIM/"Sim" não é renomeação (repete a coluna exibe_link) ✅ sql_query devolve nomes_internos_NAO_USAR da coluna usada ✅ consulta sem a coluna codificada: sem nomes internos ✅ schema_info devolve nomes_internos_NAO_USAR ✅ glossário: 2=Operadores de dados com a marca "NÃO usar" do nome antigo — geral_especifico (1=Geral; 2=Específico), tipo (1=ROPA; 2=Operadores de dados (nome interno antigo "Fornecedor": NÃO usar); 3=SI & TI (nome interno antigo "Segu -- o PROMPT real que o LLM recebe não usa o termo antigo -- ✅ prompt sem "Fornecedor(es)" fora de identificador técnico/marca de nome antigo — [] ✅ prompt traz o rótulo atual "Operadores de dados" (vindo de LISTA_TIPO) ✅ regra de VOCABULÁRIO presente ✅ definições das tools (o que o LLM lê) só citam "fornecedores" como sinônimo de entrada (máx. 1) — [" segurança\\\" (se o usuário disser o nome antigo \\\"fornecedores\\\", é a categoria \\\"operadores\\\"). Na "] === RESULTADO: 38 passaram, 0 falharam ===