Repository navigation
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.
A proposta do PR está correta e o template automático faz sentido como melhoria de DX, mas vamos aproveitar esta PAV para consolidar um padrão mais completo para o Candidate.
O contribuition.md já define o conteúdo mínimo esperado das Pull Requests, então o template deve funcionar como um guardrail operacional de qualidade, e não apenas como uma reprodução resumida do guia.
Estou disponibilizando uma versão revisada do pull_request_template.md com seções adicionais para fluxo de branch, validações, impacto em banco/migrations, contratos/API, configuração/infraestrutura, segurança, dados pessoais, dependências, evidências, riscos e rollback.
Por favor, substitua o conteúdo atual pelo template revisado e valide se ele continua sendo carregado corretamente pelo GitHub ao abrir uma nova PR.
Depois dessa adequação, o PR fica pronto para nova revisão.
|
Template revisado aplicado conforme solicitado no review. O Commit: Também validei o arquivo com |
…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.
Card
Objetivo e escopo
O que foi feito
.github/pull_request_template.md.contribuition.mdpara as regras completas.Módulos afetados
.github/pull_request_template.mdValidação
git diff --checkexecutado sem erros de whitespace.npm run validateexecutado no pre-push: 60 arquivos e 570 testes de backend aprovados; lint do frontend concluído sem erros; build do frontend concluído com sucesso.contribuition.md.Riscos e rollback
Evidências
.github/pull_request_template.mdao criar uma nova Pull Request.