PaintCheck
Controle visual de embalagem pós-pintura, integrado ao ERP por automação.
- Período
- 2025
- Papel
- Desenvolvimento individual
- Contexto
- Artefacto Indústria Metalúrgica
- Stack
- Python · PySide6 · Selenium · SQLite · Chrome CDP

O problema
Depois da pintura, cada peça precisa ser embalada de um jeito específico: um tipo de embalagem e uma quantidade por KLT. Essa informação existe no ERP Technicon, atrás de uma sequência de cliques, e consultá-la significa o operador sair da linha. É uma busca repetitiva no meio de um fluxo que não deveria parar — e embalar errado custa retrabalho.
A abordagem
Eliminar a consulta em vez de acelerá-la. O código de barras que já está na Ordem de Produção carrega a OP e o código do processo. O sistema lê esse código pelo scanner que já existe na linha, consulta o ERP sozinho e coloca a resposta num monitor em tela cheia, legível a distância. O operador não interage com o sistema: ele só bipa e olha.
Decisões técnicas
- 01
Separar scanner de teclado pela velocidade de digitação
Um hook global de teclado captura tudo que é digitado na máquina. Um leitor de código de barras emite teclas com menos de 80ms entre elas; uma pessoa nunca digita assim. Esse filtro, somado à exigência do prefixo fixo 00, deixa a máquina ser usada normalmente sem disparar leituras falsas.
- 02
Tampermonkey para alcançar um closure de JavaScript
O botão "Último Registro" do Technicon vive dentro de um closure JS que o Selenium não consegue chamar. Em vez de simular cliques frágeis, um userscript intercepta o addEventListener antes do ERP carregar e expõe window.clicarUltimoRegistro(). O Selenium passa a chamar a própria função da aplicação, o que é muito mais estável que perseguir elementos na tela.
- 03
Desktop com SQLite local, não aplicação web
A linha não pode depender de rede. SQLite em modo WAL dá conta da concorrência entre a thread do ERP e a interface, e a fila com EMB e QUANT sobrevive a uma queda de energia — ao voltar, o monitor recompõe o estado sozinho.
- 04
ERP em thread separada
A consulta ao Technicon leva segundos. Rodando fora da thread de interface e conversando com ela por signals do Qt, o monitor nunca congela enquanto uma busca está em andamento — o que importa numa tela que fica exposta o tempo todo.
- 05
Cor única por código de peça pela razão áurea
Distribuir os matizes pela razão áurea gera mais de 50 cores visualmente distintas sem ninguém escolher cor nenhuma à mão. O operador passa a reconhecer a peça pela cor antes mesmo de ler o texto.