Files
clube67_newwhats.local/base-scoreodonto/ESTRATEGIA_TECNICA.md
T
VPS 4 Deploy Agent 5ec6bd6354
continuous-integration/webhook Falha no deploy de clube67_newwhats.local (VPS 4)
chore(ops): migrate clube67 to newwhats.clube67.com directory
2026-05-18 03:26:41 +02:00

4.3 KiB

📒 Guia Estratégico e Arquitetura da Automação

Este documento detalha as escolhas técnicas e o funcionamento estratégico da automação desenvolvida para o Portal Viventeris (Cassems), explicando "o porquê" de cada decisão.


🏗️ 1. Arquitetura: Por que Playwright e não Axios?

Ao desenvolver automações para portais de saúde (TISS/SADT), escolhemos o Playwright em vez de ferramentas de requisição direta como o Axios. Aqui está a justificativa:

Playwright (Navegador Real) - Nossa Escolha

  • Simulação Humana: Ele carrega o JavaScript do portal, processa pop-ups e lida com o "autocomplete" do jQuery UI (essencial para que o sistema valide o procedimento).
  • Gestão de Sessão: O portal Viventeris possui tokens de segurança e cookies expiráveis. O navegador gerencia isso automaticamente.
  • Resiliência Visual: Se o portal mudar a posição de um campo, a automação baseada em id ou label continua funcionando.
  • Monitoramento: Você pode ver o navegador trabalhando, o que facilita identificar se o sistema da Cassems está lento ou fora do ar.

Axios/API (Requisições Ocultas) - Descartado

  • Extrema Complexidade: Exigiria descobrir todos os "requests" ocultos que o servidor espera.
  • Fragilidade: Qualquer mudança na segurança do servidor quebraria a integração sem deixar rastro visual.
  • Bloqueios: Sistemas modernos de saúde detectam requisições "secas" (sem navegador) e bloqueiam o acesso por suspeita de ataque.

🧠 2. Inteligência do Fluxo (Regras de Negócio)

O script foi treinado para seguir regras específicas de UX do portal:

  1. Regra de Urgência:
    • O sistema monitora o select #tipoAtendimento.
    • Se selecionado Urgência (ID 4), ele obrigatoriamente preenche a Justificativa.
    • Se selecionado Eletivo (ID 1), ele pula o campo para evitar erros de validação.
  2. Lógica do Autocomplete:
    • Digitar o código do procedimento não é suficiente. O script foi programado para clicar no item da lista suspensa que o sistema sugere. Sem esse clique, o sistema muitas vezes "limpa" o campo ao tentar avançar.
  3. Superação de Sobreposição:
    • No campo de Faces (V, M, D, L/P), o script utiliza cliques forçados nas labels, pois os checkboxes originais são ocultados por CSS de design do portal.

🛠️ 3. Manutenção e Boas Práticas

Como manter o código funcionando:

  • IDs Estáveis: Sempre que possível, usamos o id (ex: #cmbDente). Se o portal mudar o layout, mas mantiver os IDs, o código não quebra.
  • Timeouts: Configuramos esperas inteligentes. O script não trava se a internet oscilar por 2 segundos; ele aguarda o elemento aparecer.

Segurança dos Dados:

  • Credenciais: Atualmente fixas no código para testes. Em produção, recomenda-se usar variáveis de ambiente ou um arquivo de configuração externo.
  • Breakpoint de Erro: O código possui a função catch. Se algo der errado (ex: beneficiário bloqueado), o script para tudo, tira um print da tela (erro-guia-odonto.png) e mantém o navegador aberto para você ver o motivo.

🛠️ 4. Infraestrutura Atual (VM Windows)

Como estamos operando dentro de uma Máquina Virtual, optamos pela instalação nativa para garantir performance e estabilidade:

Recurso Status Host:Porta Credenciais Gerenciamento
MySQL (9.6) Ativo (Serviço) localhost:3306 User: root / Pass: (vazio) MySQL CLI / DBeaver
Redis (8.6) Ativo (PM2) localhost:6379 s/ senha pm2 monit / redis-cli
Python (3.14) Ativo - - python --version
PM2 Ativo - - pm2 list

Comandos de Manutenção:

  • Verificar Redis: pm2 list ou redis-cli ping
  • Verificar MySQL: Get-Service MySQL
  • Logs do Redis: pm2 logs redis-server

📋 5. Comandos Úteis

Objetivo Comando
Instalar Dependências npm install
Rodar Lançamento node lancar-guia-odonto.js
Verificar Versão Node node -v
Logs do Processo pm2 logs

Conclusão: Esta automação transforma um processo de 5 minutos de cliques manuais em uma tarefa de 20 segundos totalmente segura e auditável.