Skip to content

Develop - #258

Merged
Benevanio merged 5 commits into
masterfrom
develop
Sep 30, 2026
Merged

Benevanio merged 5 commits into
masterfrom
develop

Conversation

@hltav

@hltav hltav commented Sep 30, 2026 •

Copy link
Copy Markdown
Collaborator

Linear

Issue: PAV-___

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.

Objetivo

Descreva objetivamente o problema resolvido por esta PR.

Escopo

O que faz parte desta entrega:

O que está fora do escopo:

Resumo das alterações

Arquivos e módulos afetados

Como testar

# comandos de validaçã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

Impacto de banco / migration

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

Detalhes:

Impacto em contratos/API

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

Detalhes:

Impacto de configuração / infraestrutura

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

Detalhes:

Impacto de segurança

  • Sem impacto relevante
  • Impacto de segurança avaliado

Detalhes:

Impacto de dados pessoais / privacidade

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

Detalhes:

Compatibilidade / dependências

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

Detalhes:

Evidências

Adicione logs, screenshots, links de execução ou outra evidência relevante.

Riscos

Rollback

Descreva como a alteração pode ser revertida com segurança.

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

Consulte o guia de contribuição do projeto para as regras completas.

RuhanFreitas and others added 5 commits September 3, 2026 19:50
Signed-off-by: Hudson Lima Tavares <109999011+hltav@users.noreply.github.com>
# Card
- PAV-121

# O que foi feito
- Organiza o pós-coleta do scraper-go em lotes limitados: coleta →
normalização → deduplicação → classificação → persistência → indexação,
com fila limitada (2 × maior lote), backpressure e cancelamento em todas
as etapas. Não cria goroutine por vaga e não acumula a coleta inteira
antes de persistir.
- Adiciona lotes configuráveis e fail-fast:
SCRAPER_CLASSIFICATION_BATCH_SIZE=100 (máx. 1000),
SCRAPER_PERSIST_BATCH_SIZE=100 (máx. 1000) e
SCRAPER_INDEX_BATCH_SIZE=250 (máx. 2500). Valor ausente usa o default;
valor explícito ≤0, vazio ou acima do máximo impede a inicialização. 1
permanece válido para diagnóstico. Compose usa ${VAR-default}.
- O catálogo coletado continua no Valkey (scraper:job:{id}) como fonte
da verdade da execução; o PostgreSQL segue para usuários/saved_jobs. A
indexação invertida só recebe IDs confirmados por SaveBatch.
Persistência em MULTI/EXEC por lote, com upsert pelo ID estável:
atualiza descrição, URL, classificação, fontes e keywords; campo vazio
não apaga dado existente. Falha no lote faz rollback, não indexa aquele
lote e aplica retry limitado só para erros transitórios.
- Indexação incremental com SADD em pipelines de
SCRAPER_INDEX_BATCH_SIZE, sem RENAME do set inteiro (isso apagaria lotes
anteriores da mesma execução). Se a indexação falhar após o persist,
ReindexPersistedJobs relê os documentos no Valkey e reconstrói os
índices, sem repetir a coleta externa.
- Deduplicação intra e inter-lote usa as chaves já existentes no domínio
(ID externo, title|company|location e URL canônica). Títulos iguais de
vagas diferentes são preservados. A classificação em lote mantém o
resultado individual, sem novas famílias, keywords ou pontuações. 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_CLASSIFICATION_BATCH_SIZE=100, -
[x]SCRAPER_PERSIST_BATCH_SIZE=100 e SCRAPER_INDEX_BATCH_SIZE=250
- [x] Confirmar que valores inválidos (0, vazio, acima do máximo)
impedem a inicialização e que 1 é aceito
- [x] Subir o scraper e validar nos logs scraper batch sizes / scraper
runtime configurado e os logs por run_id/lote (recebidos, duplicados,
aprovados, inseridos, atualizados, indexados, falhas, duração)
- [x] Executar uma coleta controlada e confirmar: só vagas persistidas
são indexadas; falha de persistência não indexa o lote; falha de
indexação fica registrada e pode ser reconciliada via
ReindexPersistedJobs; GET /jobs/search e healthcheck permanecem
compatíveis
- [x] Confirmar ausência de alterações em frontend/**, front_admin/**,
novas famílias/keywords e package-lock.json
@Benevanio
Benevanio merged commit 480acab into master Sep 30, 2026
1 of 3 checks passed
hltav added a commit that referenced this pull request Oct 1, 2026
## Linear

Issue: PAV-128

## Branch flow

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

## Objetivo

Corrigir e ampliar o coverage do sistema após as alterações no catálogo
de vagas, filtros e cache, adicionando testes para fluxos críticos de
backend, painel admin e frontend, e estabilizando a execução da suíte do
front_admin.

## Escopo

O que faz parte desta entrega:

- Ampliação/adição de testes unitários e de integração no backend
(SavedJobs/Application Notes, busca de vagas, match de perfil, scripts
de backfill de PII e seed).
- Adição de testes no `front_admin` para layouts, dashboard,
observabilidade, permissões, scrapers e usuários.
- Adição de testes no `frontend` para schemas do novo dashboard, utils,
`HelpTab` e ajuste de mocks de login.
- Ajuste de configuração do Vitest no `front_admin` (`maxWorkers: 2`).

O que está fora do escopo:

- Alterações de comportamento funcional em produção.
- Alterações de schema, migrations ou contratos de API.
- Refatorações estruturais não relacionadas a coverage.

## Resumo das alterações

- **Backend / SavedJobs**: testes de integração para notas de
candidatura (`list`, `create`, `update`, `delete`) e testes unitários do
`ApplicationNotesService` com validação de ownership e escopo por
usuário/vaga/nota.
- **Backend / Jobs**: novo teste de integração de `GET /jobs/search`
cobrindo filtros, cache, fallback legacy, paginação e match score;
ampliação do teste do `searchJobs.service`; novo teste do
`JobProfileMatchService`.
- **Backend / Scripts**: testes para `backfillUserPii` (dry-run e
`--write`) e para `seed`.
- **Front Admin**: cobertura de `NotificationButton`, `SidebarFooter`,
`TimeFilter`, `DashboardPage`, `PlatformChart`, hooks do dashboard,
`ObservabilityPage`/`ObservabilityPanelCard`, `PermissionsPage`,
`ScrapersPage`/`useScrapers`, `UsersPage` e `UserList`.
- **Frontend**: cobertura de schemas runtime do new_dashboard, utils
(`jobModelFilters`, `locationFilters`, `searchKeywords`), `HelpTab` e
ajuste de testes de loading do login.
- **Config**: `front_admin/vite.config.ts` com `maxWorkers: 2`.

## Arquivos e módulos afetados

- `backend/tests/integration/routes/savedJobs.routes.test.ts`
- `backend/tests/integration/routes/searchJobs.routes.test.ts`
- `backend/tests/unit/modules/jobs/jobProfileMatch.service.test.ts`
- `backend/tests/unit/modules/jobs/searchJobs.service.test.ts`
-
`backend/tests/unit/modules/savedJobs/applicationNotes.service.test.ts`
- `backend/tests/unit/scripts/backfillUserPii.test.ts`
- `backend/tests/unit/scripts/seed.test.ts`
- `front_admin/tests/app/layouts/**`
- `front_admin/tests/modules/**`
- `front_admin/vite.config.ts`
- `frontend/tests/unit/components/login/RigthSide.test.tsx`
- `frontend/tests/unit/new_dashboard/**`

## Como testar

```bash
# backend
cd backend
npm test
npm run test:coverage

# front_admin
cd front_admin
npm test
npm run test:coverage

# frontend
cd frontend
npm test
npm run test:coverage
```

## Validation

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

## Impacto de banco / migration

- [x] Não altera schema nem migrations
- [ ] Altera schema ou migrations

Detalhes: N/A

## Impacto em contratos/API

- [x] Não altera contratos
- [ ] Altera endpoint, payload, schema ou comportamento de API

Detalhes: N/A — os testes apenas validam contratos existentes.

## Impacto de configuração / infraestrutura

- [ ] Não altera configuração
- [x] Altera env, Docker, filas, cache, serviços ou infraestrutura

Detalhes: ajuste em `front_admin/vite.config.ts` adicionando
`maxWorkers: 2` para estabilizar a execução paralela dos testes. Sem
impacto em runtime de produção.

## Impacto de segurança

- [x] Sem impacto relevante
- [ ] Impacto de segurança avaliado

Detalhes: os testes de `backfillUserPii` apenas exercitam a
criptografia/hash de PII já existente; nenhuma mudança em lógica de
segurança.

## Impacto de dados pessoais / privacidade

- [x] Sem tratamento novo ou alteração de dados pessoais
- [ ] Impacto avaliado

Detalhes: os testes utilizam dados fictícios (fixtures) para validar o
pipeline de PII já existente.

## Compatibilidade / dependências

- [x] Não depende de outra task/PR
- [ ] Existe dependência ou ordem de deploy/merge

Detalhes: N/A

## Evidências

- Saída de `npm run test:coverage` (backend, front_admin, frontend)
anexada na thread do card/PR.
- Commits relacionados: `Develop - Alterações no catálogo de vagas,
filtros e cache`, `Develop (#258)`, `feat(PAV-128): correção do coverage
do sistema`.

## Riscos

- **Baixo**: alterações restritas a testes e configuração de execução do
Vitest.
- Possível aumento do tempo total da suíte por conta do `maxWorkers: 2`
no `front_admin` (trade-off para estabilidade).

## Rollback

Reverter o merge deste PR restaura o estado anterior dos testes e da
configuração do Vitest. Como não há alterações de produção, o rollback é
seguro e não impacta dados, contratos ou infraestrutura.

## Checklist final

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

> Consulte o guia de contribuição do projeto para as regras completas.#
PAV-128 — Correção do coverage do sistema

## Linear

Issue: PAV-128

## Branch flow

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

## Objetivo

Corrigir e ampliar o coverage do sistema após as alterações no catálogo
de vagas, filtros e cache, adicionando testes para fluxos críticos de
backend, painel admin e frontend, e estabilizando a execução da suíte do
front_admin.

## Escopo

O que faz parte desta entrega:

- Ampliação/adição de testes unitários e de integração no backend
(SavedJobs/Application Notes, busca de vagas, match de perfil, scripts
de backfill de PII e seed).
- Adição de testes no `front_admin` para layouts, dashboard,
observabilidade, permissões, scrapers e usuários.
- Adição de testes no `frontend` para schemas do novo dashboard, utils,
`HelpTab` e ajuste de mocks de login.
- Ajuste de configuração do Vitest no `front_admin` (`maxWorkers: 2`).

O que está fora do escopo:

- Alterações de comportamento funcional em produção.
- Alterações de schema, migrations ou contratos de API.
- Refatorações estruturais não relacionadas a coverage.

## Resumo das alterações

- **Backend / SavedJobs**: testes de integração para notas de
candidatura (`list`, `create`, `update`, `delete`) e testes unitários do
`ApplicationNotesService` com validação de ownership e escopo por
usuário/vaga/nota.
- **Backend / Jobs**: novo teste de integração de `GET /jobs/search`
cobrindo filtros, cache, fallback legacy, paginação e match score;
ampliação do teste do `searchJobs.service`; novo teste do
`JobProfileMatchService`.
- **Backend / Scripts**: testes para `backfillUserPii` (dry-run e
`--write`) e para `seed`.
- **Front Admin**: cobertura de `NotificationButton`, `SidebarFooter`,
`TimeFilter`, `DashboardPage`, `PlatformChart`, hooks do dashboard,
`ObservabilityPage`/`ObservabilityPanelCard`, `PermissionsPage`,
`ScrapersPage`/`useScrapers`, `UsersPage` e `UserList`.
- **Frontend**: cobertura de schemas runtime do new_dashboard, utils
(`jobModelFilters`, `locationFilters`, `searchKeywords`), `HelpTab` e
ajuste de testes de loading do login.
- **Config**: `front_admin/vite.config.ts` com `maxWorkers: 2`.

## Arquivos e módulos afetados

- `backend/tests/integration/routes/savedJobs.routes.test.ts`
- `backend/tests/integration/routes/searchJobs.routes.test.ts`
- `backend/tests/unit/modules/jobs/jobProfileMatch.service.test.ts`
- `backend/tests/unit/modules/jobs/searchJobs.service.test.ts`
-
`backend/tests/unit/modules/savedJobs/applicationNotes.service.test.ts`
- `backend/tests/unit/scripts/backfillUserPii.test.ts`
- `backend/tests/unit/scripts/seed.test.ts`
- `front_admin/tests/app/layouts/**`
- `front_admin/tests/modules/**`
- `front_admin/vite.config.ts`
- `frontend/tests/unit/components/login/RigthSide.test.tsx`
- `frontend/tests/unit/new_dashboard/**`

## Como testar

```bash
# backend
cd backend
npm test
npm run test:coverage

# front_admin
cd front_admin
npm test
npm run test:coverage

# frontend
cd frontend
npm test
npm run test:coverage
```

## Validation

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

## Impacto de banco / migration

- [x] Não altera schema nem migrations
- [ ] Altera schema ou migrations

Detalhes: N/A

## Impacto em contratos/API

- [x] Não altera contratos
- [ ] Altera endpoint, payload, schema ou comportamento de API

Detalhes: N/A — os testes apenas validam contratos existentes.

## Impacto de configuração / infraestrutura

- [ ] Não altera configuração
- [x] Altera env, Docker, filas, cache, serviços ou infraestrutura

Detalhes: ajuste em `front_admin/vite.config.ts` adicionando
`maxWorkers: 2` para estabilizar a execução paralela dos testes. Sem
impacto em runtime de produção.

## Impacto de segurança

- [x] Sem impacto relevante
- [ ] Impacto de segurança avaliado

Detalhes: os testes de `backfillUserPii` apenas exercitam a
criptografia/hash de PII já existente; nenhuma mudança em lógica de
segurança.

## Impacto de dados pessoais / privacidade

- [x] Sem tratamento novo ou alteração de dados pessoais
- [ ] Impacto avaliado

Detalhes: os testes utilizam dados fictícios (fixtures) para validar o
pipeline de PII já existente.

## Compatibilidade / dependências

- [x] Não depende de outra task/PR
- [ ] Existe dependência ou ordem de deploy/merge

Detalhes: N/A

## Evidências

- Saída de `npm run test:coverage` (backend, front_admin, frontend)
anexada na thread do card/PR.
- Commits relacionados: `Develop - Alterações no catálogo de vagas,
filtros e cache`, `Develop (#258)`, `feat(PAV-128): correção do coverage
do sistema`.

## Riscos

- **Baixo**: alterações restritas a testes e configuração de execução do
Vitest.
- Possível aumento do tempo total da suíte por conta do `maxWorkers: 2`
no `front_admin` (trade-off para estabilidade).

## Rollback

Reverter o merge deste PR restaura o estado anterior dos testes e da
configuração do Vitest. Como não há alterações de produção, o rollback é
seguro e não impacta dados, contratos ou infraestrutura.

## Checklist final

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