14-16 Mar 2026
Logica do Sistema

Carga Adicional — Microservico Externo

Secao 4

CargaAdicionalService

Arquivo: cargo_fleet.Application/CargasAdicionais/CargaAdicionalService.cs

Cliente HTTP para um microservico externo separado (nao e parte do monorepo).

VerificarCargasAdicionaisEmLoteAsync(codigosOferta, tenantId):

  1. Busca o tenant por ID.
  2. Obtem token OAuth2 via GetAccessTokenAsync (endpoint configurado em CargaAdicionalAuthCredentials).
  3. Chama POST {CargaAdicionalService:BaseUrl}/api/app/oferta-scraps/custom-batch.
  4. Payload: { NormalizedTenantName, CodigoOferta: [list] }.
  5. Retorna List<OfertaScrapBatchResult> com CodigoOferta e CargaAdicional (bool?).

VerificarCargaAdicionalAsync(codProgColeta, tenantId): (metodo individual — legado)

  • GET {BaseUrl}/api/app/oferta-scraps/custom?CodigoOferta={cod}&NormalizedTenantName={name}.

CreateTenant(name):

  • POST {BaseUrl}/api/saas/tenants.
  • Payload com adminPassword = "1q2w3E*" hardcoded (P-09).
  • Metodo comentado nos handlers — nao ativo.

GetAccessTokenAsync (privado):

  • Fluxo OAuth2 password grant.
  • Credenciais de CargaAdicionalAuthCredentials (ClientId, ClientSecret, Username, Password, Scope).
  • Token nao e cacheado — obtido a cada chamada (P-10).

CargaAdicionalScraperService (desativado)

Arquivo: cargo_fleet.Application/CargaAdicionalScraper/CargaAdicionalScraperService.cs

Cliente HTTP para um "ScraperOrchestrator" (servico externo). Metodos:

  • ConfigurarTenantAsync: POST com tenantId, tenantName, galileuUsername, galileuPassword em texto claro (P-11).
  • AtualizarCredenciaisGalileuAsync: PUT com credenciais.
  • IniciarScrapingAutomaticoAsync: POST start.
  • StopScraperAsync: POST stop.

Status: Todos os metodos estao comentados nos event handlers. O scraper nao esta ativo.


Event Handlers de Credenciais

Diretorio: cargo_fleet.Application/EventHandlers/

HandlerStatusComportamento
GalileuCredentialCreatedEventHandlerVazioawait Task.CompletedTask — logica de scraper comentada
GalileuCredentialUpdatedEventHandlerVazioawait Task.CompletedTask — logica de scraper comentada
GalileuCredentialDeletedEventHandlerAtivoEnvia WhatsApp util_credencial_galileu_limpa

Incoerencias Identificadas

IDDescricao
P-09Senha "1q2w3E*" hardcoded em CreateTenant
P-10Token OAuth nao cacheado — uma autenticacao por chamada
P-11Senha Galileu transmitida em texto claro para ScraperOrchestrator