Configurações
O grupo Configurações do menu reúne o que vale para a instalação inteira. Esta página cobre quatro telas: Parâmetros, Workers, Licença e Danger Zone. As demais do grupo têm páginas próprias — Variáveis e Conexões Externas e Agendadores.
Parâmetros — /settings

Nove abas, cada uma com um assunto fechado. Tudo que é senha ou chave é gravado cifrado e nunca reexibido — os campos abrem em branco com a nota “deixe em branco para manter”. A exceção é trocar o endereço: mudar o host do SMTP ou do LDAP, a URL do Webhook ou a Base URL da IA sem redigitar a senha (ou chave) correspondente apaga a salva. Um segredo nunca segue sozinho para um endereço novo.
Configurações
O básico de operação da instalação.
| Campo | O que define |
|---|---|
| URL Base do Sistema | Endereço público do CMS. Entra nos exemplos de integração e nos endpoints WSDL. Em branco, o CMS usa o endereço pelo qual foi acessado |
| Idioma | Idioma padrão da interface — português, inglês ou espanhol |
| Timezone do Sistema | Como datas e horas são exibidas em toda a aplicação |
| Autenticação de dois fatores (2FA) | Liga a exigência de segundo fator no login |
Desligar o 2FA aqui faz nenhum usuário passar pela etapa de segundo fator, mesmo os que já o configuraram. Os dados de configuração de cada um são preservados: religar restaura tudo, sem ninguém precisar recadastrar o autenticador.
Trocar o timezone aplica-se de imediato na interface; o backend precisa que a API seja reiniciada para acompanhar.
Aparência

O rosto da instalação — é aqui que o CMS deixa de parecer um produto genérico.
| Área | Campos |
|---|---|
| Tema | Tema padrão (claro, escuro ou seguir o sistema operacional) e o bloqueio da troca pelo usuário |
| Identidade | Nome da empresa, apelido da planta e logotipo |
| Tela de Login | Fundo: padrão, cor sólida ou imagem |
O tema padrão vale para quem ainda não escolheu um. Marcando bloquear alteração pelo usuário, o botão de alternar tema some da barra superior e todo mundo usa o tema definido aqui.
O apelido da planta, quando preenchido, substitui “Config. de Integração” como nome do grupo de cadastros no menu lateral — útil em instalações multi-planta, onde o menu passa a dizer “Planta São Paulo”.
O logotipo aparece na barra lateral, na tela de login e no Cockpit.
Sem cor nem imagem escolhidas, o fundo padrão da tela de login desenha a cena industrial da marca — degradê azul-marinho, malha técnica e a silhueta de uma fábrica em linha. A prévia ao lado dos campos é o mesmo componente que o login usa, então ela não promete um fundo diferente do que será exibido; e resolve o tema como o login faz, pelo tema padrão da instalação, e não pela preferência de quem está mexendo na tela.
Servidor SMTP usado pelos Alertas e pelos envios feitos a partir das telas (token por e-mail, PDF de mensagem): host, porta, usuário, senha, remetente e Exigir conexão cifrada (TLS).
A cifragem segue a porta, e a linha abaixo da chave diz o que o envio vai fazer:
| Porta | Chave ligada | Chave desligada |
|---|---|---|
| 465 | TLS desde o primeiro byte (SSL implícito) | Igual — a 465 sempre usa TLS |
| 587, 25 ou 2525 | Começa em texto e sobe para TLS (STARTTLS); falha se o servidor não oferecer TLS | STARTTLS se o servidor oferecer; senão, envia sem cifrar |
| Outra | TLS desde o primeiro byte | Sem exigência de TLS |
Na 587 a chave ligada não significa SSL implícito. Até 2026-09-29 significava, e o envio
falhava com wrong version number no log da API: o servidor respondia em texto a um handshake
TLS.
As configurações de SMTP salvas aqui têm precedência sobre variáveis de ambiente. É esta tela que realmente configura o envio de alertas por e-mail — configurar só no ambiente não basta.
LDAP
Autenticação via Active Directory ou OpenLDAP, como alternativa ao login local.
| Campo | Papel |
|---|---|
| Habilitar | Liga a validação no diretório |
| Host / Porta / SSL | Endereço do diretório (ldaps:// quando SSL) |
| Bind DN e senha | Usuário de serviço que faz a busca |
| Base DN | Onde procurar |
| Filtro de busca | Use {{login}} como marcador — (sAMAccountName={{login}}) no AD, (uid={{login}}) no OpenLDAP |
| Timeout | Limite da consulta, em ms |
Habilitar LDAP não converte ninguém automaticamente. A validação no diretório vale para os usuários cuja origem de autenticação está marcada como LDAP no cadastro — ver Segurança. Isso permite migrar aos poucos e manter um usuário local de emergência.
O botão Testar conexão faz o bind de serviço e diz se ele funcionou, antes de qualquer usuário tentar entrar.
Ferramentas
Catálogo das Ferramentas do sistema: cada tela do CMS corresponde a uma Ferramenta, e é ela que os Perfis de Acesso liberam ou não. A aba mostra nome, descrição e endpoint de cada uma, com contagem de ativas e inativas.
É uma aba de manutenção: as Ferramentas são criadas pelo próprio sistema a cada versão. Você mexe aqui quando precisa retirar uma tela do ar para todos, ou conferir qual Ferramenta uma rota exige.
Desativar uma Ferramenta some com a tela para todos os perfis, inclusive o de administrador. Se a intenção é restringir a um grupo, o lugar é o Perfil de Acesso, não aqui.
Webhook
Endpoint que recebe os alertas marcados para envio externo — tipicamente uma automação (n8n, Power Automate) que dispara WhatsApp, Teams ou SMS.
| Campo | Papel |
|---|---|
| Habilitar | Liga o envio |
| URL do Webhook | Endpoint que recebe o JSON do alerta |
| Usuário / Senha (Basic Auth) | Opcional, enviados na chamada |
O botão Testar Webhook dispara uma chamada real. O formato do payload está em Alertas.
IA

Provedor usado por todos os recursos de IA do produto, e a chave de liga/desliga de cada um deles.
| Campo | Papel |
|---|---|
| Habilitar | A chave-mestra. Desligada, nenhum recurso de IA funciona |
| Provedor | Anthropic, OpenAI ou um compatível com a API OpenAI |
| Modelo | Nome do modelo |
| Chave de API | Cifrada, nunca reexibida. Opcional em servidores locais |
| Base URL | Só no provedor compatível: Ollama (http://localhost:11434/v1), Groq, OpenRouter… |
O terceiro provedor existe para quem não pode mandar nada para fora: apontando a Base URL para um Ollama na sua rede, a geração roda inteiramente dentro da empresa. Nesse modo o campo Modelo é obrigatório e a chave costuma ser dispensável.
O botão Testar conexão confirma provedor, modelo e chave antes de alguém depender deles.
Recursos
Abaixo do provedor, cada recurso de IA tem a sua própria chave. Desligar um não afeta os demais; com a chave-mestra desligada, nenhum funciona. Todos nascem ligados numa atualização — desligar em silêncio o que o cliente já usa seria pior que a economia — e a chave-mestra nasce desligada numa instalação nova, para que ninguém fale com um provedor externo sem alguém ter decidido.
| Recurso | O que faz | Onde aparece |
|---|---|---|
| Transformer por IA | Gera o script de transformação a partir de exemplos e um prompt | Transformadores, no editor |
| Diagnóstico de erro | Sugere a causa provável de um erro de entrega | Mensagens, no detalhe de uma tentativa com erro |
| Assistente de Integração | Descobre o contrato de uma API e monta Interface, Coleta e Entrega | Aplicações |
| Integração entre Aplicações | Gera o script que liga o formato de uma Aplicação ao de outra | Transformadores |
| Agente de IA | Chave-mãe das duas abas pagas. Exige o módulo Agente na licença | Assistente de IA |
| ↳ Investigar | Investiga a instalação e entrega um laudo com evidência. Só leitura | Aba Investigar |
| ↳ Configurar | Propõe a integração pronta para aprovação | Aba Configurar |
| Pergunte ao CMS | Responde sobre o produto lendo o manual embutido, citando a página | Aba Pergunte |
| Plano de Teste por IA | Propõe cenários de teste a partir das Definições, do contrato observado e dos Erros de Negócio. Os cenários nascem desativados | Planos de Teste |
| Descrição de ferramenta MCP por IA | Sugere a descrição que o agente lê para decidir quando chamar a ferramenta. Só vale depois que a pessoa revisa e salva | Coleta e Entrega, no popup da ferramenta MCP |
| Servidor MCP | Deixa uma IA externa ler e configurar o CMS | Servidor MCP |
| Servidor MCP de integrações | Expõe as Entregas e Coletas marcadas como ferramentas que um agente de IA chama | Servidor MCP de integrações |
Os dois servidores MCP são a exceção: eles não consomem o provedor configurado aqui — quem paga o modelo do outro lado é quem se conecta. Nesses casos a chave é controle de acesso, não de custo. Desligar o de configuração faz os tokens deixarem de ser aceitos, e a recusa acontece depois da validação do token, para que quem chama sem credencial não descubra que o servidor existe. Desligar o de integrações tira do ar o endereço de todas as Aplicações de uma vez, sem desmarcar Definição nenhuma.
Quando todos os recursos estão desligados, o ícone do Assistente de IA some do cabeçalho: um botão que abre um painel vazio contradiz quem desligou tudo.
Plantão do Agente de Integração
Última chave da aba, e a única desligada por padrão. Com ela ligada, um alerta disparado faz o agente investigar sozinho e deixar o laudo pronto para quem recebeu o alerta — gastando a sua chave de IA sem ninguém ter clicado. Exige o módulo Agente, e o diagnóstico roda com a permissão de quem recebe o alerta. Detalhes em Assistente de IA.
SDK SAP
Instala o SAP NW RFC SDK usado pelos conectores SAP. A biblioteca é licenciada pela SAP e não
acompanha o CMS: o cliente baixa a sua no SAP Support Portal e envia o .zip aqui — o CMS valida o
pacote, grava os arquivos e reinicia os conectores sozinho.
A aba só aparece para administradores: enviar ou remover a SDK instala ou tira uma biblioteca nativa que os conectores executam, e isso não é tarefa delegável por Ferramenta.
A aba mostra a versão detectada (ex.: 7.50 PL18), a arquitetura, quem instalou, quando, e o
estado de cada conector. Enquanto não houver SDK, os tipos de conexão SAP aparecem desabilitados em
Conexões Externas — visíveis, com o motivo e um atalho que abre esta aba direto.
Passo a passo, variante correta para baixar e o que a validação recusa: SDK do SAP.
Help Desk
As ferramentas de atendimento onde o CMS abre chamado quando um alerta dispara — ServiceNow, Jira Service Management, Freshservice, Zendesk, GLPI, InvGate e nota no SAP PM. Aqui se ativa a ferramenta (URL, autenticação e a Interface que ela usa), se testa a conexão e se registra o modelo de corpo do chamado. A aba só aparece com a Ferramenta Help Desk no perfil.
O passo a passo completo, com os destinos e a ligação ao alerta: Help Desk.
Wallboard — /settings/cockpit
Os tokens que deixam uma TV do chão de fábrica abrir o Cockpit sem login, com escopo por Aplicação e revogação individual. Quem já tem sessão no CMS não precisa de token nenhum.
Workers — /settings/workers

O que o Painel de Interfaces mostra por Interface, esta tela mostra por job: é a fila interna que o CMS usa para processar mensagem, vista de dentro.
O período usa o mesmo seletor das Mensagens: abre em Hoje e, num atalho como Últimos 15 minutos, a janela anda junto com a atualização automática da tela.
Os cinco números do topo respondem à pergunta operacional mais comum — “está acumulando?”.
| Indicador | O que significa | Vem de |
|---|---|---|
| Aguardando | Mensagens ainda não processadas | A tabela de mensagens |
| Em execução | Jobs que os workers estão processando agora | A fila |
| Processadas | Total de mensagens entregues com sucesso | A tabela de mensagens |
| Falhos | Jobs que esgotaram as tentativas e pararam | A fila |
| Atrasados | Jobs agendados para o futuro — retentativa com espera | A fila |
Falhos conta job, não mensagem em erro. Uma mensagem que falhou na entrega e voltou para a fila aparece em Mensagens com Erro; aqui só entra o job que desistiu. Os dois números são diferentes de propósito, e não bater é o esperado.
As quatro abas abrem a lista por trás de cada número. Execuções é a mais usada no dia a dia: uma linha por tentativa, com Aplicação, Interface, Definição, status HTTP, duração, resultado e o detalhe do erro quando houve.
Na aba Falhos, cada linha traz a razão da falha e dois botões: reprocessar e remover da fila — individualmente ou em lote, para o conjunto selecionado.
Remover um job da fila não cancela a mensagem: some o trabalho pendente, não o registro. Para tirar a mensagem do fluxo de verdade, use Cancelar Mensagem.
Diferente das telas de Relatórios, aqui os cinco indicadores ignoram os filtros: eles são o estado ao vivo da fila inteira, atualizado a cada poucos segundos. Os filtros de Aplicação, Interface, Definição e período recortam as listas das abas. É proposital — a pergunta “está acumulando?” é sobre o sistema, não sobre o recorte que você está olhando.
Licença — /settings/license

Identificação desta instalação e validade do contrato: cliente, CNPJ, edição, data de validade, suporte até, dias restantes e observações.
A tela também mostra o ID da instalação — o código que a XMII Consulting pede para emitir a
chave. Uma chave nova é instalada colando o texto recebido (começa com CMS1.) e clicando em
instalar.
| Situação | Significa |
|---|---|
| Licença ativa | Tudo em ordem |
| Vence em breve | Aviso no topo das telas, com os dias restantes. Começa 30 dias antes |
| Licença vencida | O sistema reinicia sozinho a cada 30 minutos, até 10 vezes |
| Bloqueada | Os 10 reinícios acabaram: o CMS para de responder |
| Sem licença instalada | Instalação ainda não licenciada; o sistema funciona normalmente |
| Licença inválida | A chave instalada não é desta instalação |
O que acontece quando a licença vence
A partir do vencimento, a licença passa a ter consequência operacional. Sem isso “vencida” era um aviso que se aprendia a ignorar, e o contrato não tinha efeito nenhum.
A escalada tem dois degraus:
- Reinícios. A cada 30 minutos de execução, o CMS encerra o processo e o Docker o sobe de novo. São 30 minutos de vida do processo, não de relógio — assim cada volta dá sempre a mesma janela para instalar a chave. O contador aparece na tela e no e-mail de aviso.
- Bloqueio. Depois de 10 reinícios, o estado vira Bloqueada e o CMS recusa tudo: recebimento de mensagem, coleta e entrega inclusive.
No estado bloqueado, três coisas continuam de pé — sem elas não haveria como sair do bloqueio pela própria tela: o login, a tela de Licença (consultar e instalar a chave nova) e a leitura das Configurações, que alimenta a marca e o idioma da tela de login.
O contador fica gravado no banco, e não em memória — o próprio reinício apagaria a contagem e a escalada nunca sairia do primeiro degrau. Instalar uma chave nova zera tudo, porque grava outro registro.
Sem licença e licença inválida ficam de fora da escalada, de propósito: punir uma instalação recém-criada, que ainda vai pedir a chave, seria autolesão.
O aviso no topo das telas tem três pesos visuais — vence em breve, vencida e bloqueada não podem parecer a mesma coisa — e diz o que vai acontecer com o sistema e quando, em vez de apenas pedir que se fale com o fornecedor.
Danger Zone — /settings/danger-zone

Operações que afetam muita coisa de uma vez. Três abas.
Bloqueio / Desbloqueio de Interfaces
As Interfaces agrupadas por Aplicação, com contagem de ativas e bloqueadas, filtro por tipo (Coleta / Entrega) e seleção múltipla.
| Ação | Alcance |
|---|---|
| Bloquear / Desbloquear Todas | Todas as interfaces de uma Aplicação |
| Bloquear / Desbloquear Selecionadas | Só as marcadas, mesmo de aplicações diferentes |
As duas pedem confirmação digitada (BLOQUEIO / DESBLOQUEIO). Bloquear em massa é a manobra
padrão antes de uma janela de manutenção do sistema destino: as mensagens continuam entrando e ficam
na fila, sem virar erro.
Mensagens Não Processadas
A lista completa de mensagens pendentes, com os mesmos filtros da tela de Mensagens, e duas ações em lote: reprocessar e cancelar.
Reprocessamento em massa não funciona com “todas as mensagens do filtro” selecionadas — as mensagens são reenfileiradas uma a uma. Limpe a seleção e reprocesse por página.
O cancelamento pede confirmação digitada (CANCELAR) e não apaga nada: as mensagens ficam com
status Cancelada, saem da fila de processamento e continuam no histórico. É a saída para um lote
que nunca deveria ter entrado — um teste, uma carga duplicada — sem perder o rastro de que ele
existiu.
Marcando “todas as mensagens do filtro”, o cancelamento acontece no servidor, sem o navegador enumerar ids — é o que permite cancelar dezenas de milhares de mensagens de uma vez. O filtro respeita as Interfaces permitidas do usuário, sempre.
Importar / Exportar

Leva a configuração de um ambiente para outro — de desenvolvimento para produção, de uma planta para outra, ou para backup antes de uma mudança grande.
Só administradores veem esta seção: o import grava Perfis e Parâmetros, e o export decifra os segredos de todas as Aplicações. Migrar um ambiente é ato de quem administra a instalação inteira.
Exportar gera um ZIP com um JSON por domínio selecionado. Domínios disponíveis:
| Aplicações | Interfaces |
| Definições de Entrega | Definições de Coleta |
| Erros de Negócio | Configurações de Alertas |
| Transformadores | Parâmetros |
| Perfis de Acesso | API Keys |
| Credenciais | Chaves de Criptografia |
| Conexões Externas | Agendadores |
| Motivos de Parada | Variáveis |
| Perfis do OPC Simulator | Perfis do Modbus Simulator |
| Perfis do PI Simulator |
Campos sensíveis (senhas, chaves, tokens) são protegidos por uma senha de arquivo, informada na exportação e exigida na importação.
Importar aceita o mesmo ZIP (até 200 MB descompactado), em dois modos:
| Modo | O que faz |
|---|---|
| Mesclar | Atualiza o que existe e cria o que falta. Nada é apagado |
| Substituir | Apaga os dados atuais dos domínios escolhidos e recria do zero. Não é possível desfazer |
Substituir exige justificativa e confirmação digitada (SUBSTITUIR), e fica registrado no log de
auditoria.
Sem a senha correta, os campos sensíveis dos itens importados não são restaurados — os demais dados entram normalmente. O resultado é uma configuração completa com credenciais vazias, que falha na primeira execução. A tela avisa, mas vale conferir depois de importar.
O resultado da importação vem detalhado por domínio: criados, atualizados, pulados, erros e avisos.
As Definições de Entrega levam junto o Transformador por Aplicação produtora de cada uma, pela sigla da Aplicação e pelo nome do Transformador. Se um dos dois não existir no destino, aquela linha é pulada, com aviso no resultado — sem o Transformador, ela não significaria nada.
Uma lista dentro de um item — os encaminhamentos de uma Definição, os Transformadores por produtora de uma Entrega, as permissões de um Perfil, os cenários de um Plano de Teste — que não vem no arquivo deixa como está o que existe no destino. É o caso do export feito antes de a lista existir: antes, a ausência era lida como lista vazia, e o import apagava no destino o que o arquivo nunca soube que existia. Uma lista que vem vazia continua valendo, e esvazia a do destino.
Interfaces criadas por importação já entram no agendador em funcionamento — não é preciso reiniciar a API. Um agendador que já existia e estava desligado não é religado pelo import: quem parou uma interface na mão não a vê voltar sozinha.