PAV-92: Reorganizar detalhe da candidatura - #252
Merged
Benevanio merged 7 commits intoSep 7, 2026
Merged
Conversation
Local, modalidade, nível, fonte, salário e match viram tiles rotulados em vez de chips soltas sem legenda. Status fica isolado como pill.
Bloco 'Detalhes adicionais' (ex Payload da vaga) não repete mais o que já aparece nos tiles principais, no subtítulo ou no link 'Abrir vaga'.
Falha intermitente pré-existente e não relacionada à PAV-92: o timeout padrão de 5s não sobra sob os 600+ testes concorrentes, mesmo passando sempre isolado. Nenhuma asserção alterada. (mesma correção aplicada na PAV-30, ainda não mergeada em develop).
Jovinull
requested review from
Benevanio,
hltav,
lima300 and
nayarakarinesilva
as code owners
September 6, 2026 18:54
Benevanio
approved these changes
Sep 7, 2026
5 tasks
Benevanio
added a commit
that referenced
this pull request
Sep 28, 2026
…rd (#253) ## Release Promoção da branch `develop` para `master`, consolidando 26 commits e 49 arquivos alterados. ## Objetivo Disponibilizar em produção as entregas recentes de segurança, versionamento da API, notas privadas por candidatura, melhorias no dashboard e ajustes de confiabilidade/documentação. ## Escopo Inclui as entregas das PRs `#234`, `#239`, `#242`, `#245`, `#246`, `#250` e `#252`. ### API e documentação - Adicionado o prefixo versionado `/api/v1` para os endpoints da API. - Mantidas temporariamente as rotas sem prefixo para compatibilidade com clientes existentes. - Expandida a documentação OpenAPI/Swagger com schemas, respostas, exemplos e endpoints principais. - Atualizado o README com a estratégia de versionamento da API. ### Segurança - Aplicado rate limit ao `POST /auth/register`, por IP e por e-mail. - Endurecido o fallback de CORS em produção, sem permitir `localhost` quando `CORS_ALLOWED_ORIGINS` não estiver configurada. - Adicionado HSTS para tráfego HTTPS/produção. - Aplicada CSP restritiva na API, frontend, painel administrativo, Nginx e Vercel. - Removido script inline de bootstrap do tema para compatibilidade com CSP. - Reforçada a renderização segura de descrições de vagas, bloqueando atributos ativos, `iframe` e protocolos não permitidos. ### Candidaturas e dashboard - Adicionado suporte a múltiplas notas privadas por candidatura. - Criada a tabela `application_notes`, com migration, índices e remoção em cascata. - Disponibilizados endpoints autenticados para listar, criar, editar e remover notas de vagas salvas. - Garantido isolamento por usuário e ownership da vaga em todas as operações de notas. - Reorganizado o detalhe da candidatura com tiles para local, modalidade, nível, fonte, salário e match. - Removida a duplicação entre os dados principais e o bloco de detalhes adicionais. - Mantida compatibilidade com o campo legado de nota única para vagas não rastreadas. ### Autenticação e confiabilidade - Corrigidos tipos e fallbacks no envio de e-mail de boas-vindas. - Validado `provider` como valor escalar antes da desconexão de contas OAuth. - Ajustado o timeout de teste de inicialização do servidor sob execução completa da suíte. ### Documentação e fluxo de contribuição - Adicionado template padrão de Pull Request. - Atualizados `README.md`, `BACKEND.md` e `SECURITY.md`. - Documentadas variáveis de ambiente de CORS e rate limiting. - Registradas especificação, validação e handoff da PAV-92. ## Impacto de banco / migration - [x] Altera schema e migrations. Inclui a migration `0014_hard_korath`, que cria `application_notes` e seus índices/foreign keys. A migration deve ser aplicada antes da disponibilização do backend em produção. ## Impacto em contratos/API - [x] Altera endpoint e comportamento de API. A API passa a expor os endpoints em `/api/v1`. As rotas legadas sem prefixo permanecem disponíveis temporariamente para evitar quebra imediata de clientes. Também foram adicionados endpoints de notas privadas em: - `GET /saved-jobs/:id/notes` - `POST /saved-jobs/:id/notes` - `PATCH /saved-jobs/:id/notes/:noteId` - `DELETE /saved-jobs/:id/notes/:noteId` ## Impacto de configuração / infraestrutura - [x] Altera configuração de segurança. A produção deve revisar: - `CORS_ALLOWED_ORIGINS` - `AUTH_RATE_LIMIT_IP_MAX` - `AUTH_RATE_LIMIT_ACCOUNT_MAX` - `AUTH_RATE_LIMIT_WINDOW_SECONDS` - Headers CSP configurados em Nginx e Vercel ## Validação As PRs de origem possuem cobertura automatizada para: - Versionamento `/api/v1` e contrato Swagger. - Rate limiting, CORS e HSTS. - CSP e sanitização de conteúdo externo. - CRUD e isolamento de notas privadas. - Detalhe de candidatura e regressões de interface. - Tipagem de autenticação e desconexão de provedores. Também foram executados testes, lint e builds de backend/frontend nos fluxos de origem. ## Riscos - A aplicação de `0014_hard_korath` é obrigatória antes do deploy do backend. - Clientes devem migrar gradualmente para `/api/v1`; as rotas legadas continuam disponíveis nesta etapa. - CSP e CORS restritivos podem bloquear integrações externas não declaradas. - A PR está divergente de `master`; sincronizar a base com os dois commits pendentes e revalidar os checks antes do merge. ## Rollback O rollback pode ser realizado revertendo o merge da release. Caso a migration já tenha sido aplicada, a reversão do código deve preservar a tabela `application_notes` até que exista uma migration reversa planejada, evitando perda de notas já criadas. ## Checklist final - [x] Consolida entregas de `develop` para `master`. - [x] Inclui alterações de API, banco, segurança, frontend e documentação. - [x] Mantém compatibilidade temporária com rotas legadas. - [x] Possui migrations a serem aplicadas antes do deploy. - [x] Sincronizar `develop` com os commits pendentes de `master`. - [ ] Confirmar todos os checks da PR antes do merge.
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 free
to 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.
Linear
Issue: PAV-92
Branch flow
develop.master.Objetivo
Finalizar a experiência do detalhe da candidatura (
JobDetailModal) pós PAV-19/90: hoje as informações principais ficam misturadas com um bloco de payload bruto que duplica dados já mostrados, dificultando identificar rápido o que importa.Escopo
O que faz parte desta entrega:
JobDetailModal: local, modalidade, nível, fonte, salário e match ganham tiles rotulados.O que está fora do escopo:
Resumo das alterações
JobDetailModal.tsx: promove local/modalidade/nível/fonte/salário/match a tiles rotulados (InfoTile); status isolado como pill; filtroredundantPayloadKeysremove do bloco de detalhes adicionais campos já representados em outro lugar; texto de feedback abaixo do campo de notas.jobs.test.tsxque checava o heading antigo ("Payload da vaga") — o fixture usado ali (url === jobLink) agora não tem mais nada de extra pra mostrar, então o bloco corretamente não renderiza.server.test.ts) já ajustado no PR PAV-30: Relatórios/KPIs do candidato #251 — ainda não está emdevelop, então reaplicado aqui.Como testar
Validation
.specs/features/job-detail-reorganizacao/validation.mdna branch).Evidências executadas:
Impacto de banco / migration
Impacto em contratos/API
Impacto de configuração / infraestrutura
Impacto de segurança
Impacto de dados pessoais / privacidade
Compatibilidade / dependências
Evidências
.specs/features/job-detail-reorganizacao/validation.md(na branch): 8/8 critérios de aceite cobertos com evidênciafile:line, sensor de mutação sem sobreviventes.Riscos
Rollback
JobDetailModalao layout anterior; nenhuma migration ou dado persistido precisa ser desfeito.Checklist final
.env, certificados ou tokens.