Skip to main content

DevTools

O plugin DevTools (devtools) reúne, em uma única tela, um conjunto de ferramentas voltadas exclusivamente ao desenvolvimento e manutenção do ACCELERO: geração de licenças, geração de código (classes e plugins), geração de bundles JS/CSS e preloads, e conferência do dicionário de traduções.

Ferramenta interna de desenvolvimento

Esta é uma ferramenta de uso interno da IONGRADE, destinada à equipe de desenvolvimento. Ela não faz parte do produto entregue ao cliente e não deve ser exposta a operadores. O acesso à tela e às ações (gerar/aplicar licença, gerar código, regenerar bundles) afeta diretamente o funcionamento da instância — use apenas em ambientes controlados e com conhecimento do que cada ferramenta faz.

Disponibilidade

Recurso disponibilizado como plugin (devtools), instalado e habilitado pela equipe técnica da IONGRADE apenas em ambientes de desenvolvimento ou manutenção. Não há dicionário de tradução nem rótulos voltados ao cliente — toda a interface é em linguagem de desenvolvimento.

Compatibilidade

Versão atual do plugin: 0.0.14 — compatível com ACCELERO 2.16.0, 2.16.1, 2.16.2 e 2.16.3 (conforme manifest.json).


O que o plugin faz​

Com o plugin ativo, um item DevTools é adicionado ao menu (ícone Linux) apontando para /devtools. A tela inicial apresenta seis cartões, cada um abrindo uma ferramenta:

FerramentaO que faz
License generatorMonta, visualiza e aplica localmente a licença da instância (quantitativos, recursos e módulos)
Class generatorGera o código-base de uma entidade (classe base/concreta, views de list/edit, permissões e rotas) a partir de uma tabela do banco
Plugin generatorEmpacota uma pasta de plugin em um .zip criptografado pronto para distribuição
Bundles & preloadsRegenera os bundles de JS/CSS e os scripts de preload da aplicação
DictionaryAponta traduções faltantes e órfãs nos idiomas adicionais e exporta o dicionário em CSV
Câmara Fria - SimuladorSimula as regras de tempo de permanência e descanso da Câmara Fria usando as políticas reais do backend, sem gravar eventos

Tela inicial do DevTools com os seis cartões de ferramentas


License generator​

Caminho de acesso: DevTools > License generator (/devtools/licensegenerator)

Ferramenta para montar a licença da instância. A tela é pré-carregada com a licença atual da instalação (facility, quantitativos e módulos ativos) e organizada em seções colapsáveis.

License generator com as seções Geral, Quantitativos e Módulos expandidas

Abertura da tela

Ao abrir o License generator, a tela mostra um modal decorativo ("WareZ KEYgEN ...") e toca uma música. Clique no texto do modal para fechá-lo e liberar o formulário.

Seção Geral​

CampoDescrição
FacilityIdentificador da instalação. Compõe a chave de criptografia da licença
VersãoPlano da licença: starter, plus, platinum, showroom ou eco

Seção Quantitativos​

Define os limites numéricos da instância, agrupados em:

  • Geral — Operadores, Operadores simultâneos, Categorias, Faixas horárias, Cartões ativos, Logs, Storage.
  • Controladores — Controladores, Indium.
  • Recursos — Campos configuráveis, DirectPass, AutoTeller.
  • Integrações — MorphoWave, ZKTeco, Beward, Hikvision, Hikvision LPR, Dahua, ControlID.

Seção Módulos​

Liga/desliga os módulos da instância, agrupados em Geral, Aplicativos / sistemas, Recursos, Avançado e Integrações. Exemplos de módulos: Offline / on-premises, ECO, Default, QRCode, Logs avançados, QRCode por e-mail, AppToHome, QI Solution, Telegram, Veículos, Passes, Créditos, Dupla custódia, Escorts, Multi-tenant, Synapsis, API, Custom CSS, I/O, entre outros.

A lista de módulos acompanha o ACCELERO

Os módulos exibidos refletem os módulos suportados pela versão do ACCELERO. Consulte o núcleo (plugins/accelero) quando precisar confirmar o efeito de um módulo específico.

Botões​

BotãoFunção
Pegar licença stringGera e exibe a string criptografada da licença montada, sem aplicá-la. Útil para copiar e usar em outro ambiente
Deploy localAplica a licença gerada diretamente na instância atual (grava na configuração license e limpa o cache de configuração)
"Deploy local" altera a instância em uso

O botão Deploy local sobrescreve a licença vigente da instalação atual. A ação roda no contexto do usuário de desenvolvimento (ACCELERO_DEV_USER). Confirme o ambiente antes de aplicar.

Detalhe de implementação

A string da licença é gerada cifrando os dados com a chave derivada de facility + salt geral da instância. A licença inclui um bloco hash com data de geração, facility, hostname e um nonce aleatório.


Class generator​

Caminho de acesso: DevTools > Class generator (/devtools/classgenerator)

Gera o esqueleto de código de uma nova entidade a partir de uma tabela existente no banco. A ferramenta lê a estrutura da tabela e produz os artefatos padrão do ACCELERO. É uma página avulsa, sem o menu e o cabeçalho do ACCELERO.

Class generator com os campos de entrada e os blocos gerados para a tabela empresas

Campos de entrada​

CampoDescrição
TabelaNome da tabela do banco usada como base da entidade
ClassnameNome da classe a ser gerada
Class aliasAlias da classe
PrefixPrefixo dos campos/arquivos gerados
PKeyChave primária da entidade
Deploy base pathCaminho-base onde os arquivos serão gravados ao fazer deploy de um artefato

Saídas geradas​

Ao clicar em Gerar classe, a ferramenta produz, em blocos colapsáveis:

BlocoConteúdo
Classe baseClasse ...Base.php com getters/setters e validações
Classe concretaClasse concreta que estende a base
HTML de listView de listagem (...List.view.html)
HTML de editView de edição (...Edit.view.html)
PermissõesQuery SQL de permissões da entidade
RoutesArquivo de rotas da entidade

Cada bloco tem uma ação de deploy que grava o respectivo artefato no Deploy base path informado (a classe base em src/..., as views em views/, as rotas em config/routes/).

Deploy grava arquivos no servidor

As ações de deploy do Class generator escrevem arquivos diretamente no caminho informado. Use apenas em ambiente de desenvolvimento e confira o Deploy base path.


Plugin generator​

Caminho de acesso: DevTools > Plugin generator (/devtools/plugingenerator)

Empacota uma pasta de plugin em um arquivo .zip criptografado pronto para distribuição/instalação.

Plugin generator após gerar o pacote, com o link Download, a quantidade de arquivos e o tamanho

CampoDescrição
Nome do pluginNome usado no pacote gerado
PathCaminho no servidor da pasta do plugin a ser empacotada

Ao clicar em Gerar plugin, a ferramenta:

  1. Lê a version do manifest.json do plugin para nomear o arquivo (<nome>_v<versão>.zip). Sem manifest.json ou sem versão, a geração é recusada.
  2. Seleciona só os arquivos de execução do plugin (ver abaixo).
  3. Cifra o .zip com a chave de criptografia de plugins do ACCELERO.
  4. Retorna um link Download para o pacote final, com a quantidade de arquivos e o tamanho (ex.: Download · 5 arquivos · 2 KB).

Arquivos que ficam de fora do pacote: em qualquer nível, .git/, node_modules/, arquivos ocultos (.env*, .gitignore etc.), *.md e *.zip; na raiz do plugin, as pastas tests/, testes/, docs/, dist/, tools/, dev/, frontend/, contract/, vendor/, changelog/ e dbmigration/ e os arquivos composer.json, composer.lock, package.json, package-lock.json, phpunit.xml(.dist) e phpstan.neon(.dist). O plugin pode ajustar essa regra com um arquivo .pluginignore na raiz, no estilo do .gitignore (!padrão traz de volta algo excluído, ex.: !vendor/ para um plugin que distribui as próprias dependências).

Erros de geração

Pasta inexistente, manifest.json sem versão, arquivo sem permissão de leitura para o servidor web ou falha ao cifrar aparecem como mensagem de erro na própria tela, e nenhum pacote é gerado.


Bundles & preloads​

Caminho de acesso: DevTools > Bundles & preloads (/devtools/bundles)

Regenera os artefatos estáticos da aplicação.

Tela Bundle generator com os botões Gerar bundles JS/CSS e Gerar preload scripts

BotãoFunção
Gerar bundles JS/CSSRegera os bundles de JavaScript e CSS, atualiza a assinatura MD5 do carregador de bundles e o dicionário JS (idiomas pt_BR e en_US). Roda em segundo plano e notifica o usuário ("Bundles gerados!") ao concluir
Gerar preload scriptsRegera os scripts de preload da aplicação
Execução assíncrona

A geração de bundles JS/CSS é disparada como job assíncrono — a tela retorna imediatamente e a conclusão chega por notificação ao operador que disparou a ação.


Dictionary​

Caminho de acesso: DevTools > Dictionary (/devtools/dictionarychecker)

Verifica a consistência das traduções nos idiomas adicionais — por padrão en_US e it_IT — comparando-os com o dicionário de referência pt_BR.

Tela quebrada na versão atual do plugin

No origin/master do plugin, /devtools/dictionarychecker responde só com o erro Too few arguments to function DevTools\DictionaryChecker\DictionaryCheckerController::__construct(). O controller importa Dictionary\DictionaryHelper, mas a classe do plugin é DevTools\Dictionary\DictionaryHelper, e a injeção de dependência não consegue montá-lo. A exportação do CSV usa o mesmo controller e também falha.

TODO: Adicionar Screenshot

Tela do Dictionary checker com as seções Missing translations e Dangling translations e o botão de exportação do CSV (depende da correção do import acima).

SeçãoConteúdo
Missing translationsTokens existentes no pt_BR mas sem tradução no idioma adicional (lista token + texto pt_BR; mostra "ALL GOOD!" quando não há pendências)
Dangling translationsTraduções órfãs — presentes no idioma adicional mas sem token correspondente no pt_BR

Exportação CSV​

A ferramenta gera um arquivo accelero_dictionary.csv com as colunas dos idiomas pt_BR, en_US e it_IT, para revisão ou tradução em massa.


Câmara Fria - Simulador​

Caminho de acesso: DevTools > Câmara Fria - Simulador (/devtools/camarafria-sim)

Simula, passo a passo, as regras da Câmara Fria do ION Guard sem gravar eventos nem mexer em pessoas. Cada ação chama o backend (POST /devtools/camarafria-sim/step), que aplica as políticas reais de descanso (ContinuousRestPolicy ou AccumulatedRestPolicy) sobre um estado mantido na própria tela. A tela e a rota exigem operador logado com perfil de administrador.

Câmara Fria - Simulador com a configuração padrão, o estado atual e as ações

BlocoConteúdo
ConfiguraçãoTempo máx. na câmara (s) (padrão 6000), Período de descanso (s) (padrão 1200), Regra de contagem (contínuo ou acumulado) e Resetar ao descansar. Aplicar & Reset zera a simulação
Cenário do clienteRodar cenário executa uma sequência pronta de entradas e saídas
Estado atualRelógio virtual, status (dentro/fora), total na câmara, banco de horas fora, última entrada e última saída
AçõesTentar entrar, Sair, Verificar acesso; + avançar, +1 min, +10 min avançam só o relógio virtual; Reset estado
Linha do tempo e Estado raw (JSON)Histórico das decisões e o estado bruto devolvido pelo backend

Casos de uso​

Aplicar uma licença em ambiente de desenvolvimento​

  1. Acesse DevTools > License generator.
  2. Ajuste Facility, Versão, quantitativos e módulos desejados.
  3. Clique em Pegar licença string para copiar a chave, ou em Deploy local para aplicar na instância atual.

Gerar o esqueleto de uma nova entidade​

  1. Crie a tabela no banco.
  2. Em DevTools > Class generator, informe Tabela, Classname, Class alias, Prefix, PKey e Deploy base path.
  3. Clique em Gerar classe e revise os blocos gerados.
  4. Faça o deploy de cada artefato (classe, views, rotas) para o caminho do projeto.

Empacotar um plugin para distribuição​

  1. Em DevTools > Plugin generator, informe Nome do plugin e Path da pasta do plugin.
  2. Gere o pacote e use o link Download — o .zip já sai criptografado e versionado pelo manifest.json.

Conferir traduções antes de um release​

  1. Acesse DevTools > Dictionary.
  2. Resolva os tokens listados em Missing translations e remova as entradas órfãs de Dangling translations.
  3. Exporte o CSV para tradução em massa, se necessário.

Boas práticas​

  • Ambiente correto: use o DevTools apenas em ambientes de desenvolvimento/manutenção. Deploy local (licença) e os deploys do Class generator alteram a instância e o sistema de arquivos.
  • Confira o Path/Deploy base path: as ferramentas de geração de código e de plugin escrevem arquivos no caminho informado — um path errado pode sobrescrever arquivos.
  • Regere bundles após alterar JS/CSS: mudanças em assets só refletem após Gerar bundles JS/CSS; lembre que a ação roda em segundo plano.
  • Não exponha ao cliente: mantenha o plugin desinstalado/desabilitado em instâncias de produção entregues a clientes.

Troubleshooting​

O item DevTools não aparece no menu​

Possíveis causas:

  • Plugin devtools não instalado ou não habilitado.
  • Versão do ACCELERO fora da faixa de compatibilidade (2.16.0 a 2.16.3).

Solução: confirme a instalação do plugin e a versão do ACCELERO.

Alterações de JS/CSS não refletem na interface​

Possíveis causas:

  • Bundles não foram regerados após a alteração.

Solução: acesse DevTools > Bundles & preloads, clique em Gerar bundles JS/CSS e aguarde a notificação "Bundles gerados!".

Deploy de classe/plugin falha​

Possíveis causas:

  • Deploy base path / Path inexistente ou sem permissão de escrita.

Solução: verifique se o diretório existe e tem permissão de escrita pelo processo do ACCELERO.


Integração com outros módulos​


Próximos Passos​