--- tags: [skymilhas, arquitetura, técnico] created: 2026-04-14 --- # Arquitetura Técnica SkyMilhas ## Fluxo de Dados ``` Usuário busca → PHP (Busca::pesquisar) → Gateway API (server.js:3019) → Scraper específico → API da companhia → Parse response → server.js formata → PHP formata → Frontend renderiza ``` ## Server.js - DOIS Paths de Formatação (ATENÇÃO!) - **Path 1** (~linha 5980): Formato completo com tarifas, segmentos, etc. - **Path 2** (~linha 6060): Formato simplificado - PRECISA ter os mesmos campos! ## Scrapers por Porta | Companhia | Processo PM2 | Proxy Bridge | |-----------|-------------|--------------| | GOL | scraper-gol | 40506 | | American Airlines | scraper-american-aadvantage | 40504 | | Smiles | scraper-smiles-gol | padrão | | Azul TudoAzul | scraper-azul-tudoazul | 40506 | | LATAM Miles | scraper-latam-miles | padrão | ## Frontend - Layouts Específicos - **GOL**: Layout com popup tarifas (Light/Classic/Flex) + deep link - **American Airlines**: Layout estilo aa.com com 4 colunas (Principal/Premium/Executiva/Primeira) - **Smiles**: Layout com milhas clube/cliente + money combos - **Livelo**: Layout com pontos + clube Livelo - **Azul**: Layout padrão com TudoAzul points - **Demais**: Layout genérico de milhas ## PHP - Funções Chave - `extrairMenorTarifa()`: retorna `?float` (NÃO int!) - `extrairTaxaEmbarque()`: busca em múltiplos campos - `extrairMilhas()`: retorna `?int` - `formatarResultados()`: formata todos os voos para o frontend