Uh oh!
There was an error while loading. Please reload this page.
feat(frontend): exibe histórico de candidatura - #237
Conversation
…ode-Community#230) ## Linear Issue: PAV-119 Closes PAV-119 ## Branch flow - [ ] Este PR é uma feature/fix/chore destinada a `develop`. - [x] Este é um PR de release com origem `develop` e destino `master`. - [x] Este PR não pula o fluxo obrigatório entre `develop` e `master`. ## Objetivo Promover para `master` a implementação do lock distribuído do scraper, garantindo no máximo uma execução ativa do pipeline entre diferentes origens de disparo. ## Resumo das Alterações - Implementa lock distribuído no Valkey compartilhado por cron, execução manual administrativa e cache miss de `/scrape`. - Utiliza aquisição atômica com `SET NX PX`, TTL e renovação periódica. - Protege renovação e liberação por ownership/token. - Implementa comportamento fail-closed quando o Valkey não confirma a aquisição. - Cancela a execução de forma segura em caso de perda do lock. - Adiciona estado operacional com `runId`, origem, início e expiração sem expor o token proprietário. - Adiciona contratos HTTP para execução concorrente e indisponibilidade do run lock. - Alinha os defaults de `SCRAPER_RUN_LOCK_TTL` e `SCRAPER_RUN_LOCK_RENEW_INTERVAL` à semântica fail-fast definida anteriormente. - Adiciona cobertura de testes para concorrência, ownership, configuração, renovação, liberação e cenários de falha. - Atualiza documentação e configuração do Docker Compose. ## Arquivos e Módulos Afetados - Scraper Go - Run lock / Valkey - Scheduler e pipeline do scraper - Backend administrativo - Configuração do scraper - Docker Compose - Testes Go e backend - Documentação operacional ## Validação - [x] Implementação revisada contra o escopo da PAV-119. - [x] Ajustes solicitados no code review aplicados. - [x] Semântica fail-fast das configurações do run lock validada. - [x] Nenhuma alteração de frontend incluída no escopo. - [ ] CI final do PR de release validado. ## Observações Este PR promove alterações já integradas e revisadas em `develop`. Não realizar squash ou alterações adicionais diretamente em `master` fora do fluxo de release.
hltav
left a comment
There was a problem hiding this comment.
PR fora do padrão de contribuição do projeto.
Por favor, ajuste a descrição conforme o template/documentação do repositório, incluindo card relacionado, objetivo, resumo das alterações, módulos afetados e validações executadas.
Após a adequação, a revisão técnica será retomada.
hltav
left a comment
There was a problem hiding this comment.
A implementação atende aos critérios funcionais atuais da PAV-19 e pode seguir para merge.
Fica registrado como débito técnico o acoplamento do contrato da timeline ao tipo único de evento atualmente suportado. O modelo de histórico tende a evoluir para outros tipos de eventos, e essa limitação pode exigir revisão futura para evitar fragilidade no consumo da timeline.
Recomendo abrir um card específico de débito técnico para tratar essa evolução sem bloquear a entrega atual.
Uh oh!
There was an error while loading. Please reload this page.
## 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.
Card
Objetivo e escopo
O que foi feito
GET /saved-jobs/:id/eventsao abrir o detalhe.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
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.npm run lint --workspace=frontend- concluído sem erros.npm run build --workspace=frontend- concluído com sucesso.Riscos e observações
GET /saved-jobs/:id/eventspara vagas salvas.