Feature/pav 121 processar lotes - #248
RuhanFreitas wants to merge 4 commits into
Conversation
|
Revisei o diff todo + o card. Arquitetura tá boa, backpressure/cancelamento ok, só indexa o que persistiu, testes cobrem bem. CI verde. Nada que eu ache bloqueante, mas uns pontos:
Perguntas:
|
Benevanio
left a comment
There was a problem hiding this comment.
Status
❌ REQUER ALTERAÇÕES ANTES DO MERGE
A implementação de processamento em lotes e controle de backpressure está bem encaminhada, porém foram identificados alguns pontos que podem causar regressões funcionais e inconsistências nos dados processados.
Pontos que precisam ser corrigidos
-
🔴 ALTO —
scraper-go/internal/pipeline/index.go:99-137— A indexação deixou de utilizar a reconstrução atômica comRENAMEe passou a utilizarSADDde forma incremental, porém as associações antigas não são removidas.Com isso, uma vaga que deixe de corresponder a uma keyword, família, senioridade ou tecnologia pode continuar presente nos sets anteriores enquanto esses índices forem atualizados por outras vagas. Consequentemente, o
GET /jobs/searchpode retornar vagas que não correspondem mais aos filtros informados.Solicitação: ajustar a estratégia de indexação para garantir que os índices representem exatamente o estado atual da execução. Pode ser feita a remoção das associações obsoletas ou, preferencialmente, a reconstrução dos índices de forma isolada seguida de uma publicação atômica, sem remover os lotes que já foram processados.
-
🔴 ALTO —
scraper-go/internal/pipeline/process.go:171-176— Duplicatas que chegam após oflushestão sendo descartadas apenas com base em suas chaves, sem que ocorra o merge com o documento que já foi persistido.Isso pode causar perda de informações quando a mesma vaga é encontrada por fontes diferentes. Dados complementares como URL, descrição, fontes e keywords podem deixar de ser incorporados dependendo de em qual lote a ocorrência foi processada.
Solicitação: preservar o comportamento de merge entre lotes, buscando e mesclando o documento já persistido ou mantendo estado suficiente para realizar esse merge quando a duplicata chegar em um lote posterior.
-
🟡 MÉDIO —
scraper-go/internal/cronjob/cronjob.go:283— O callbackOnCompleteestá recebendosaved = len(jobs), independentemente do resultado real da persistência.Esse valor pode divergir da quantidade efetivamente salva, considerando inserções, atualizações, rejeições, duplicatas e falhas. Isso pode gerar métricas incorretas e impactar qualquer consumidor que utilize o callback para reportar os resultados da execução.
Solicitação: propagar o
ProcessStatsaté o callback ou, no mínimo, utilizar os contadores reais de persistência para queOnCompletecontinue representando corretamente o resultado da execução.
Resumo
Os mecanismos de processamento em lotes e backpressure estão bem encaminhados, porém os pontos acima precisam ser corrigidos antes da integração, principalmente porque podem resultar em:
- resultados de busca contendo associações obsoletas;
- perda de informações durante a deduplicação entre lotes;
- métricas incorretas sobre o resultado do scraper.
Solicito as alterações nesses pontos antes do merge. Após os ajustes, recomendo validar especialmente cenários em que a mesma vaga aparece em lotes diferentes, vagas que deixam de corresponder a determinados filtros e execuções com inserções, atualizações, duplicatas e falhas de persistência.
… real da execução
… real da execução
Signed-off-by: Hudson Lima Tavares <109999011+hltav@users.noreply.github.com>
Card
O que foi feito
Validação