# Garage77 V4 — instalação no cPanel

Pacote estático completo: não requer Python, Node, Composer, banco, extensão PHP, conta de API ou CDN. PHP pode estar disponível no plano, mas não participa da leitura. O servidor apenas entrega arquivos; ONNX Runtime Web executa os três modelos no aparelho.

## Instalar na raiz do subdomínio

1. No cPanel, abra **Domínios** e confirme a **raiz do documento** de `g77.youevolution.com.br`. Ela pode ser diferente de `public_html`.
2. Faça uma cópia dos arquivos atuais dessa raiz, especialmente `index.html`, `index.php` e `.htaccess`, antes de substituí-los. Este ZIP usa esses nomes comuns e pode alterar a página inicial do subdomínio.
3. Envie `Garage77-V4-cPanel.zip` pelo Gerenciador de arquivos e extraia **diretamente nessa raiz**. O ZIP não tem pasta envolvente: `index.html`, `app.js`, `core.js`, `inference-worker.js`, `style.css`, `.htaccess`, `models/`, `vendor/` e `licenses/` ficam no primeiro nível.
4. Habilite o SSL do subdomínio e abra `https://g77.youevolution.com.br/` no Chrome Android. A câmera exige contexto seguro e permissão do usuário.
5. Abra **Diagnóstico e opções de leitura → Verificar arquivos**. Os arquivos devem responder HTTP 200. Use **Preparar modelos** para carregar T384 e OCR antes da primeira foto.
6. Escolha uma imagem ou abra a câmera, capture uma foto e pressione **Ler placa**. Compare o texto com o recorte. A placa pode ser editada e copiada.

Não há instalador para executar. Permissões usuais do cPanel: arquivos 644 e pastas 755. Não execute os arquivos de desenvolvimento da conversa no servidor; eles não estão no ZIP.

## Modos e decisão

- **Automático:** T384 primeiro. S608 entra se não houver candidato, se o texto não tiver formato selecionado de sete caracteres, se o caractere menos confiante ficar abaixo de 85% ou se a detecção ficar abaixo de 50%.
- **Comparar:** executa os dois detectores e mostra seus candidatos. Útil em placas antigas, desgastadas e fotos com reflexos.
- **Somente T384 / S608:** permite verificar cada detector separadamente.

A seleção favorece formato brasileiro compatível e depois combina as pontuações do OCR e do detector. É uma heurística, não uma probabilidade calibrada. O aplicativo não acrescenta caracteres faltantes, não troca O por 0, nem inventa uma placa a partir do formato. Por padrão, a validação aceita somente Mercosul (`ABC1D23`). A opção **Aceitar também placas antigas (teste)** inclui `ABC1234`. Uma placa antiga no modo padrão permanece nos diagnósticos, mas não preenche o campo final. A validação não consulta cadastro oficial. Se os modelos produzirem placas diferentes, confira visualmente e edite. Todos os recortes retornados (até cinco por detector) podem ser selecionados para conferência. A lista de 327 placas fornecida pelo usuário foi validada como Mercosul, sem duplicatas. Ela orientou o padrão de validação; não foi embutida como cadastro/whitelist, e não é usada para substituir automaticamente uma leitura por uma placa parecida.

## Uso no celular

Use a câmera traseira, boa iluminação e uma placa inteira e focada. Capture uma foto por vez; a demo não faz leitura contínua de vídeo. Placas desgastadas podem produzir leituras incompletas ou erradas mesmo com confiança alta. A câmera é encerrada ao capturar, fechar, mudar de aba ou sair da página. Imagens com mais de 20 megapixels são recusadas com uma mensagem; reduza a resolução para abrir.

T384 + OCR + runtime transferem aproximadamente 22,4 MB decimais no primeiro uso. S608 acrescenta 28,6 MB. O navegador pode reaproveitar os arquivos pelo cache HTTP; esta versão não promete funcionamento offline. As sessões ficam na memória enquanto a página está aberta. Para cPanel sem isolamento entre origens, a execução usa WASM SIMD com uma thread em um worker dedicado, sem exigir COOP/COEP. Não há WebGPU nesta versão. O desempenho no Android depende do processador e da memória e precisa ser medido no aparelho real.

## Diagnóstico e falhas

- **Câmera indisponível:** confirme HTTPS, permissão da câmera nas configurações do Chrome, câmera livre em outros aplicativos e acesso direto à página (sem iframe). Use Escolher imagem como alternativa.
- **HTTP 404 de modelo/runtime:** a extração ficou incompleta ou em outra pasta. `models/` e `vendor/` devem estar ao lado de `index.html`.
- **Falha de importação de `.mjs` ou WebAssembly:** confira os tipos servidos. `.mjs` deve ser JavaScript e `.wasm` deve ser `application/wasm`. As regras estão em `.htaccess`. Um proxy/CDN ou uma política CSP herdada pode impedir worker, WebAssembly ou recursos locais; envie o diagnóstico ao responsável pela hospedagem.
- **HTTP 500 após extrair:** alguma diretiva pode estar bloqueada pelo provedor. Guarde a cópia do `.htaccess` e peça ao suporte para aceitar `DirectoryIndex` e `AddType`, ou aplique essas regras no painel. Sem `.htaccess`, `index.php` antigo pode ter prioridade; abra `/index.html` para verificar a demo.
- **Nenhuma placa:** aproxime a câmera, melhore o foco e teste S608. Não há promessa de detectar qualquer placa.
- **Tempo limite:** após 240 segundos o worker é encerrado. Tente T384, uma imagem menor ou reabra a página para liberar a memória. A interface registra a falha sem exibir uma leitura fictícia.
- **S608 falha após T384:** os candidatos de T384 ficam disponíveis e a falha aparece explicitamente como leitura parcial.

**Baixar diagnóstico** gera um JSON local com navegador, ambiente, tempos, recortes em coordenadas, textos e pontuações. O aplicativo não o envia automaticamente. A verificação de arquivos usa HEAD para conferir disponibilidade, tamanho e tipo; ela não recalcula os hashes no celular. Os SHA-256 de distribuição estão em `manifest.json`.

As fotos e a placa editada ficam na memória da página. Não há histórico, cadastro, upload para servidor, análise externa ou consulta de informações pessoais/veículo. “Copiar placa” usa a área de transferência do aparelho.

Leia `TESTES.md` para saber quais testes foram efetivamente executados e `FONTES.md` para a origem e os avisos de licença.
