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_errorseerror_reporting(E_ALL)) para facilitar o processo de debug. - Conexão com o Banco: Utiliza a função nativa
pg_connectpara estabelecer comunicação com o PostgreSQL. As credenciais apontam para o host127.0.0.1na porta5432, conectando-se ao bancorastreio_dbcom o usuárioapp_usere a senhasecret123. - 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 utilizandojson_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 paradataou o valor padrão'N/A'. - Unidade: Tenta buscar a chave
unidade, com fallback paradescricaoou'Rastreio'. - Situação: Tenta buscar a chave
situacao, com fallback paradescricaoou 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çãocontinuepara 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 usandopg_close($conn).