Skip to content

PAV-182: [Frontend] Revisar busca de vagas, filtros e integração com dados reais após PAV-181 - #335

Merged
hltav merged 3 commits into
Cla-Code-Community:developfrom
hltav:hltavdev/pav-182-frontend-revisar-busca-de-vagas-filtros-e-integracao-com
Nov 3, 2026
Merged

hltav merged 3 commits into
Cla-Code-Community:developfrom
hltav:hltavdev/pav-182-frontend-revisar-busca-de-vagas-filtros-e-integracao-com

Conversation

@hltav

@hltav hltav commented Nov 3, 2026

Copy link
Copy Markdown
Collaborator

Linear

Issue: PAV-182 — Revisar busca de vagas, filtros e integração com dados reais após PAV-181

Referência independente: PAV-184 — Vincular vagas salvas ao catálogo e enriquecer Match pelo perfil atual.

Branch flow

  • Este PR é uma feature/fix/chore destinada a develop.
  • Este PR não contém alteração direta ou fluxo indevido para master.
  • A branch foi criada a partir da base prevista pelo fluxo do projeto.

A branch existente foi criada a partir de develop, conforme autorização da PAV-182. O README recomenda origem em master; a origem existente foi preservada, sem rebase, e o destino é Cla-Code-Community/candidate:develop.

Objetivo

Modernizar a interface de vagas do Candidate, preservando os contratos reais de busca, salvamento e a arquitetura modular da PAV-181. A ordenação por Match usa a pontuação recebida da API; quando a compatibilidade não estiver disponível, tabela, modal e Kanban exibem Não calculado, sem criar percentuais artificiais.

Escopo

O que faz parte desta entrega:

  • Paletas dark/light, destaques da Home e menu lateral.
  • Busca, filtros geográficos e áreas profissionais, tabela, detalhes e apresentação da compatibilidade.
  • Correções de parâmetros, componentes de apresentação, documentação e testes de regressão.

O que está fora do escopo:

  • Backend, scraper Go, front_admin, infraestrutura, migrations e deploy.
  • Enriquecimento das vagas salvas com Match pelo backend, pertencente à PAV-184. A PAV-182 funciona de forma independente e não depende dessa evolução para tratar corretamente scores ausentes.

Resumo das alterações

  • Atualiza a identidade visual dark/light e os destaques do hero e da sidebar.
  • Organiza os filtros em duas linhas, com continente, país, estado/região e cidade, multiselect de áreas, modalidades e senioridade.
  • Conecta Match ASC/DESC ao contrato existente de ordenação global da API, preservando URL, filtros e paginação; mantém os sorts existentes de Fonte, Nível e Publicada em.
  • Moderniza a tabela com área profissional, localização compacta, tags de tecnologias em linha única e expansão +N.
  • Normaliza equivalências geográficas e oferece acesso a localidades adicionais sem alterar dados persistidos.
  • Padroniza o modal de detalhes e seus rótulos em português.
  • Remove scores artificiais e recálculos após paginação/salvamento; preserva zero real e usa Não calculado para ausência.
  • Acrescenta regressões de filtros, ordenação, paginação, tags, localizações, modal e fluxo busca → salvar → Kanban → recarregar.

Arquivos e módulos afetados

  • frontend/src/app/dashboard: composição, sidebar e tema existente.
  • frontend/src/features/home, jobs e applications: hero, filtros, tabela, detalhes, API adapters, hooks e Kanban.
  • frontend/src/styles/globals.css, frontend/tests/unit/new_dashboard e frontend/docs/PAV-182-match-vagas-salvas.md.
  • Nenhum arquivo de backend, scraper, front_admin, .env, dicionário local ou scripts-local/ integra o PR.

Como testar

npm run test --workspace=frontend
npm run test --workspace=backend
npm run lint --workspace=frontend
npx tsc --noEmit -p frontend/tsconfig.json
npm run build --workspace=frontend
git diff --check

Resultados locais:

  • Frontend: 59 suítes e 468 testes passaram.
  • Backend: 82 suítes e 865 testes passaram; 18 testes ignorados. A primeira tentativa no sandbox falhou por listen EPERM; a execução fora do sandbox passou.
  • ESLint frontend: zero erros e quatro avisos (três em artefatos locais de coverage e um em teste preexistente).
  • Build frontend: passou; aviso de bundle acima de 500 kB.
  • TypeScript: 63 erros preexistentes, reproduzidos em snapshot de develop com as mesmas dependências; comparação por arquivo, código e mensagem identificou zero erros novos. Nenhuma correção alheia ao escopo foi aplicada.
  • git diff --check: passou.
  • Não foi repetida validação manual autenticada no navegador nesta finalização.

Validation

  • Lint executado
  • Testes relevantes executados
  • Coverage permanece dentro do mínimo do projeto
  • Build executado quando aplicável
  • Validação manual realizada quando aplicável
  • Documentação atualizada quando necessária

Cobertura será conferida pelo CI existente; percentuais não foram presumidos.

Impacto de banco / migration

  • Não altera schema nem migrations
  • Altera schema ou migrations

Detalhes: alterações restritas ao frontend Candidate.

Impacto em contratos/API

  • Não altera contratos
  • Altera endpoint, payload, schema ou comportamento de API

Detalhes: reutiliza GET /jobs/search, filtros existentes e GET/POST/PATCH /saved-jobs. A ausência de score passa a ser representada como null no modelo interno do frontend; nenhum contrato HTTP é alterado. O contrato atual de vagas salvas não retorna Match e sua evolução fica na PAV-184.

Impacto de configuração / infraestrutura

  • Não altera configuração
  • Altera env, Docker, filas, cache, serviços ou infraestrutura

Detalhes: sem novas dependências, workflows, templates ou configuração de infraestrutura.

Impacto de segurança

  • Sem impacto relevante
  • Impacto de segurança avaliado

Detalhes: mantém a sessão e os endpoints autenticados existentes.

Impacto de dados pessoais / privacidade

  • Sem tratamento novo ou alteração de dados pessoais
  • Impacto avaliado

Detalhes: usa o contexto de perfil existente, sem novo armazenamento de dados de Match.

Compatibilidade / dependências

  • Não depende de outra task/PR
  • Existe dependência ou ordem de deploy/merge

Detalhes: PAV-184 é uma evolução independente. Até sua entrega, vagas salvas sem score confiável apresentam Não calculado.

Evidências

  • Testes automatizados abrangem filtros, multiselect, geografia, ASC/DESC de Match, sorts preservados, paginação, tecnologias, localizações e detalhes.
  • Regressões do salvamento validam score real, zero e ausência, renderização no Kanban e recarga sem fabricar 45%.
  • Auditoria e limitação de recuperação por identidade documentadas em frontend/docs/PAV-182-match-vagas-salvas.md.

Riscos

  • Scores de vagas salvas permanecem indisponíveis até a PAV-184, conforme contrato atual.
  • Os erros globais preexistentes de TypeScript continuam pendentes; não houve novos diagnósticos nesta branch.
  • Coverage, CI remoto, revisão visual autenticada e revisão humana devem ser conferidos antes do merge.

Rollback

Reverter os commits da PAV-182 por PR, sem migrations ou alterações de contratos/infraestrutura.

Checklist final

  • Escopo limitado ao card
  • Não inclui segredos, .env, certificados ou tokens
  • Não inclui arquivos temporários, builds, caches ou artefatos desnecessários
  • Não executa deploy como efeito desta PR
  • Critérios de aceite do card foram conferidos individualmente
  • Alterações de contrato possuem testes e documentação correspondentes
  • Alterações em banco/migrations foram validadas quando aplicável

Os dois últimos itens são não aplicáveis: não há mudança de contrato HTTP, banco ou migration. O aceite manual autenticado permanece para revisão.

@hltav
hltav merged commit 965248b into Cla-Code-Community:develop Nov 3, 2026
1 check passed
@github-project-automation github-project-automation Bot moved this from Backlog to Done in JobAtlas – Kanban Nov 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants