Uh oh!
There was an error while loading. Please reload this page.
Conversation
# Card - PAV-120 ## O que foi feito - Controla a concorrência intra-execução do `scraper-go` com dois tetos: global (`SCRAPER_MAX_CONCURRENCY`, padrão `12`) e por provider (`SCRAPER_PROVIDER_MAX_CONCURRENCY`, padrão `2`), com overrides opcionais em `SCRAPER_PROVIDER_CONCURRENCY_OVERRIDES` no formato `provider=limite`. Config inválida, vazia, duplicada, desconhecida ou acima do teto global impede a inicialização. - Substitui o fan-out `adapters × keywords` por um scheduler round-robin com fila limitada (`maxConcurrency * 2`) e workers fixos. O orçamento é cancelável, o release é idempotente e o limite efetivo é `min(provider, global)`. Providers com várias instâncias (Greenhouse/Lever) compartilham o mesmo limite. - Declara capacidades por fonte: IDs canônicos (`linkedin`, `adzuna`, `themuse`, `gupy`, `inhire`, `jooble`, `greenhouse`, `lever`) e modos `batch` (LinkedIn, Adzuna, Jooble, Gupy), `catalog` (The Muse, InHire, Greenhouse, Lever) e `keyword` para fontes ainda não migradas. Catálogos são buscados uma vez e agregam keywords, sem duplicar jobs. - Remove concorrência interna dos adapters (LinkedIn, Adzuna, Gupy, InHire, The Muse); loops passam a ser seriais e canceláveis. `INHIRE_DETAILS_CONCURRENCY` foi removida. Logs agregados: `scraper concurrency budget` no início da run e `scraper provider execution summary` por provider. A fórmula da cache key permanece inalterada. ## Validação - [x] `go test ./...` em `scraper-go` - [x] `go test -race ./...` em `scraper-go` - [x] Conferir `.env.example`, `docker-compose.yml` e `SCRAPER.md` com `SCRAPER_PROVIDER_MAX_CONCURRENCY=2` e `SCRAPER_PROVIDER_CONCURRENCY_OVERRIDES=""` - [x] Confirmar que `INHIRE_DETAILS_CONCURRENCY` não aparece mais em env/Compose/docs - [x] Subir o scraper e validar nos logs o budget no início da run e o summary por provider - [x] Testar override inválido (provider desconhecido, limite `0`, acima do global) e confirmar fail-fast na inicialização
## Card - PAV-19 ## Objetivo e escopo - Exibir no detalhe de uma vaga acompanhada o histórico de mudanças de status da candidatura. - Manter o histórico restrito a vagas já salvas pelo usuário. ## O que foi feito - Consulta os eventos da vaga salva em `GET /saved-jobs/:id/events` ao abrir o detalhe. - Exibe estados de carregamento, histórico vazio e falha de carregamento. - Mostra a transição de status, data e metadados disponíveis para cada evento. - Atualiza o histórico ao alterar o status da vaga enquanto o detalhe está aberto. ## Módulos afetados - `frontend/src/domains/new_dashboard/components/jobs/JobDetailModal.tsx` - `frontend/src/domains/new_dashboard/NewDashboardPage.tsx` - `frontend/src/domains/new_dashboard/infrastructure/dashboardJobsApi.ts` - `frontend/src/domains/new_dashboard/types/job.ts` - Testes unitários do dashboard, API e página. ## Validação - [x] CI do PR concluído com sucesso, incluindo coverage de frontend e backend, lint e build. - [x] `npm exec --workspace=frontend vitest run tests/unit/new_dashboard/api.test.ts tests/unit/new_dashboard/jobs.test.tsx tests/unit/new_dashboard/page.test.tsx` - 3 arquivos e 43 testes aprovados. - [x] Os testes cobrem o carregamento do histórico, estado vazio, erro de API e a atualização após mudança de status. - [x] `npm run lint --workspace=frontend` - concluído sem erros. - [x] `npm run build --workspace=frontend` - concluído com sucesso. - [x] Fluxo navegável do dashboard validado: abertura de vaga acompanhada, exibição do evento inicial, alteração de status e atualização do histórico com o novo evento. ## Riscos e observações - Sem alteração de schema ou migration. - O histórico depende da disponibilidade do endpoint `GET /saved-jobs/:id/events` para vagas salvas.
hltav
requested review from
Benevanio, lima300 and nayarakarinesilva
as code ownersAugust 29, 2026 12:03
hltav
commented
Aug 29, 2026
CollaboratorAuthor
Code review concluído e aprovado. |
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Card
Objetivo e escopo
status da candidatura.
O que foi feito
GET /saved-jobs/:id/eventsaoabrir o detalhe.
carregamento.
evento.
está aberto.
Módulos afetados
frontend/src/domains/new_dashboard/components/jobs/JobDetailModal.tsxfrontend/src/domains/new_dashboard/NewDashboardPage.tsxfrontend/src/domains/new_dashboard/infrastructure/dashboardJobsApi.tsfrontend/src/domains/new_dashboard/types/job.tsValidação
backend, lint e build.
npm exec --workspace=frontend vitest run tests/unit/new_dashboard/api.test.ts tests/unit/new_dashboard/jobs.test.tsx tests/unit/new_dashboard/page.test.tsx- 3 arquivos e 43 testesaprovados.
de API e a atualização após mudança de status.
npm run lint --workspace=frontend- concluído sem erros.npm run build --workspace=frontend- concluído com sucesso.acompanhada, exibição do evento inicial, alteração de status e
atualização do histórico com o novo evento.
Riscos e observações
GET /saved-jobs/:id/eventspara vagas salvas.