Skip to content

Dashboard de Visualização

🖥️ Camada de Visualização (Dashboard PHP)

Este documento detalha o script index.php, que atua como o front-end minimalista do sistema. Sua responsabilidade é conectar-se ao banco de dados, recuperar o histórico de rastreamento consolidado e exibi-lo em uma interface tabular limpa.

URL: https://rastreio.anhanguerapricing.com.br/

Configuração Inicial e Conexão

  • Depuração: O script inicia habilitando a exibição de erros (display_errors, display_startup_errors e error_reporting(E_ALL)) para facilitar o processo de debug.
  • Conexão com o Banco: Utiliza a função nativa pg_connect para estabelecer comunicação com o PostgreSQL. As credenciais apontam para o host 127.0.0.1 na porta 5432, conectando-se ao banco rastreio_db com o usuário app_user e a senha secret123.
  • Validação: Em caso de falha na conexão, o script é interrompido com die(), exibindo a última mensagem de erro capturada pelo driver do banco (pg_last_error()).

Consulta de Dados

  • O script realiza uma consulta direta na tabela que consolida os retornos dos scrapers: SELECT danfe, tracking_data, created_at FROM ssw_tracking_urls ORDER BY created_at DESC.
  • A ordenação decrescente garante que as persistências de rastreio mais recentes apareçam no topo da lista para o operador.

Renderização e Processamento (Front-end)

A interface é estruturada em uma tabela HTML simples com bordas ativas (<table border="1">), dividida em três colunas principais: DANFE, Data e Eventos. Durante a iteração dos resultados através do loop while com pg_fetch_assoc, o PHP aplica as seguintes lógicas:

  • Segurança na Exibição: Utiliza a função htmlspecialchars() na exibição da DANFE e da data de criação da linha para prevenir problemas de formatação HTML e injeção (XSS).
  • Decodificação JSON: A coluna tracking_data, que armazena os eventos brutos, é convertida em um array associativo manipulável do PHP utilizando json_decode($row['tracking_data'], true).
  • Normalização Defensiva de Chaves: Como os dados provêm de múltiplos scrapers e transportadoras distintas, o sistema utiliza o operador de coalescência nula (??) para mapear as chaves de forma dinâmica e evitar erros de "Undefined index":
  • Data: Tenta buscar a chave data_hora, com fallback para data ou o valor padrão 'N/A'.
  • Unidade: Tenta buscar a chave unidade, com fallback para descricao ou 'Rastreio'.
  • Situação: Tenta buscar a chave situacao, com fallback para descricao ou string vazia.
  • Filtro de Higienização: Antes de imprimir um evento como item de lista (<li>), o script verifica se a situação extraída está vazia ou possui o valor literal 'N/A'. Caso afirmativo, ele aciona a instrução continue para pular a renderização daquele item específico, evitando sujar a tela com eventos irrelevantes.
  • Encerramento: Ao finalizar a renderização do corpo da tabela (<tbody>), a conexão com o banco de dados é encerrada de forma explícita e limpa usando pg_close($conn).