Recursos do terminal¶
Além do fluxo básico de apontamento, o terminal traz vários recursos operacionais que muitas vezes passam despercebidos. Esta página os documenta.
Sistema 100% online — leia primeiro
O terminal é um PWA: a interface e os recursos visuais ficam pré-carregados e abrem mesmo sem rede — mas toda operação de apontamento depende do Protheus. Sem conexão com o ERP, o sistema mostra a tela:
"O sistema de Apontamento necessita de conexão com o servidor ERP para funcionar."
Ou seja: "instalável / offline" significa app instalável com interface em cache — não "opera desconectado". Nada é gravado sem o ERP (o Service Worker declara "Sistema 100% online — depende do ERP").
Leitura por código de barras (wedge)¶
Leitor de teclado (keyboard wedge), sem configuração no terminal:
- 8 dígitos = operador (filial 2 + matrícula 6) → identifica o operador e habilita a OP.
- 11 dígitos = OP (nº 6 + item 2 + sequência 3) → carrega a Ordem de Produção.
- Distingue leitura de scanner (teclas muito rápidas) de digitação humana;
Enterfinaliza a leitura e o código não "vaza" para o campo em foco.
Typeahead de operador¶
Campo de operador com busca conforme digita (endpoint apt003), com debounce — mostra
matrícula + nome e preenche ao selecionar. Alternativa ao leitor de código de barras.
Troca de OP¶
Botão Trocar: muda para outra OP mantendo o operador identificado. A sessão anterior continua no servidor (não é perdida nem encerrada).
Controle de sessão¶
- Estado da sessão (ocioso / ativo) e restauração automática da sessão ativa ao identificar o operador.
- Cronômetro da sessão em andamento.
Encerramento automático da OP¶
O encerramento (apt013 → MATA250) é disparado automaticamente após o STOP da última operação da
OP — o operador não precisa encerrar manualmente.
Sincronização de relógio¶
Os horários usados no apontamento vêm do servidor (o backend devolve horaServidor nas respostas).
O terminal não depende do relógio local, evitando divergências de horário entre dispositivos.
Reconexão / offline¶
Detecta os eventos online/offline, exibe um banner de rede indisponível, bloqueia a gravação
enquanto offline e restaura automaticamente ao reconectar (ver aviso no topo desta página).
Atualização automática de versão¶
Polling de version.json + Service Worker (skipWaiting / controllerchange): novos deploys
chegam ao terminal sem reinstalar, com banner de atualização. (Versão atual em version.json.)
Cache¶
- Service Worker com cache versionado dos assets (
apontamento-producao-vN) — inclui ovendor/(fontes, ícones, pdf.js) para a interface abrir perfeita mesmo sem internet externa. - Cache do estado de operações e lazy-load do histórico (rebusca ao trocar de OP).
Timeout e trava de concorrência¶
- Toda requisição tem timeout (
AbortController+CONFIG.TIMEOUT, 30 s). - Trava de processamento (
STATE.isProcessing) impede envio duplicado enquanto uma operação está em curso.
Visualizador de PDF¶
Base de conhecimento (apt023) com zoom e pan dos desenhos/documentos.
Onde isso está no código
Os módulos acima estão marcados por seções no web/app.js (banner // === + título): BARCODE
SCANNER, OPERADOR TYPEAHEAD, TIMER, VERSION CHECK, SERVICE WORKER, ACTIONS etc. Bom ponto de
partida para manutenção.