Pular para conteúdo

Serviço de Upload

O Serviço de Upload é um Windows Service instalado junto ao Software Desktop. Ele garante que todos os pacotes coletados em campo sejam transmitidos com segurança para o backend mesmo em ambientes de rede instável.

Responsabilidades

  • Monitorar a pasta de saída criptografada e identificar novos pacotes *.payload.
  • Assinar digitalmente e compactar os arquivos antes do envio.
  • Solicitar SAS Tokens junto à R-Collector API e enviá-los ao Azure Blob Storage.
  • Retentar transmissões em caso de perda de conexão, seguindo política exponencial controlada.
  • Notificar a API central sobre o sucesso/falha de cada lote, alimentando dashboards e auditorias.

Arquitetura

Elemento Descrição
Serviço Windows (.NET 4.8) Roda como RCollector.UploadService, inicia com o sistema operacional e se auto-recupera após falhas.
Fila local Implementada em SQLite, garante ordem FIFO e persistência durante quedas.
Worker de envio Paraleliza transmissões (até 3 threads) usando HttpClient resiliente + Polly.
Monitor de integridade Verifica espaço em disco, temperatura das pastas e presença de antivírus bloqueando .payload.

Ciclo de Processamento

  1. Descoberta: detecta novo pacote na fila e valida hash/assinatura local.
  2. Registro: chama POST /upload/start na API para registrar intenção e receber SAS + metadados.
  3. Transmissão: envia para o container dedicado (coletas/{posto}/{renach}/{guid}) e acompanha progresso.
  4. Confirmação: ao finalizar, envia POST /upload/finish e armazena recibo com timestamp e eTag.
  5. Retentativas: em caso de falha, aplica política 1m → 5m → 15m → 1h. Após 10 tentativas, gera alerta crítico.

Configurações

{
  "UploadIntervalSeconds": 60,
  "ParallelUploads": 3,
  "MaxRetries": 10,
  "RetryBackoffMinutes": [1,5,15,60],
  "TempFolder": "C:/ProgramData/RCollector/tmp",
  "LogLevel": "Information"
}

Valores são provisionados pela API e sincronizados no workstationconfig.bin. Alterações locais só são permitidas para suporte nível 2.

Monitoramento

  • Eventos no Windows Event Viewer (Application → fonte RCollector.UploadService).
  • Logs centralizados via Serviço de Logs → Application Insights (UploadDuration, UploadRetry, UploadQueueSize).
  • Indicadores locais mostrados no Software Desktop (fila, último envio, status do serviço, botão "reiniciar").

Segurança

  • Pacotes permanecem criptografados em repouso; apenas o backend possui as chaves para decriptar.
  • SAS Tokens expiram em até 10 minutos e são específicos para cada arquivo.
  • O serviço valida o certificado da API e rejeita endpoints fora da allowlist configurada.
  • Comunicação usa TLS 1.2, e proxies são suportados via configuração (ProxyUrl, ProxyUser).

Troubleshooting Rápido

Situação Passos
Serviço não inicia Executar services.msc → localizar RCollector Upload Service → verificar dependências (.NET, libs) e privilégios.
Fila cresce indefinidamente Checar conectividade externa, firewall outbound e validade do certificado. Reiniciar serviço após corrigir.
SAS expirando Confirmar horário da estação (NTP), pois diferença > 2 minutos invalida tokens.
Antivírus bloqueando pasta Adicionar exceção para C:\ProgramData\RCollector.

Manter o Serviço de Upload saudável é crítico para garantir que as coletas sejam oficializadas dentro do SLA definido pelo Detran-PA.