Skip to content

Commit 995ab06

Browse files
committed
docs: atualiza scripts e documentação do monorepo (PAV-94)
1 parent d21f74f commit 995ab06

7 files changed

Lines changed: 321 additions & 115 deletions

File tree

BACKEND.md

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ Este documento descreve as principais funcionalidades, rotas, módulos e variáv
1111
- Banco de dados gerenciado com Drizzle (Postgres).
1212
- Autenticação via OAuth (Google/GitHub/LinkedIn) e credenciais (email/senha) com `iron-session`.
1313
- Cache/índices em memória (Redis) e integração com sistema Valkey para pesquisa rápida.
14+
- Rotas administrativas para usuários, permissões, scrapers, auditoria e observabilidade.
15+
- Métricas Prometheus em `/metrics`.
1416
- Documentação OpenAPI/Swagger disponível em `/docs` (quando habilitado).
1517

1618
## Como executar (rápido)
@@ -40,12 +42,13 @@ npm test
4042
npm run test:watch
4143
```
4244

43-
Scripts relevantes em `package.json`:
45+
Scripts relevantes em `backend/package.json`:
4446

4547
- `start`, `dev`, `api` — iniciar servidor
4648
- `scraper`, `scraper:watch` — executar scraper (index.ts / Go)
4749
- `test`, `test:coverage`, `test:watch` — testes com Vitest
4850
- `db:generate`, `db:migrate`, `db:push` — comandos Drizzle
51+
- `security:backfill-user-pii` — backfill de campos de PII criptografados
4952

5053
## Arquitetura e módulos principais
5154

@@ -59,7 +62,9 @@ Módulos principais:
5962
- `src/modules/auth` — OAuth providers, `AuthController`, `AuthService`, `credentials` (registro/login/logout).
6063
- `src/modules/users` — perfis e preferências do usuário (`UsersController`, `UsersService`).
6164
- `src/modules/savedJobs` — CRUD de vagas salvas (`SavedJobsController`, `SavedJobsService`).
62-
- `src/modules/*` — outros módulos relacionados a credenciais, buscas e integrações.
65+
- `src/modules/notifications` — notificações do usuário autenticado.
66+
- `src/modules/jobs` — regras de matching/score de vagas.
67+
- `src/modules/admin` — usuários admin, permissões, scrapers, auditoria, dashboard e observabilidade.
6368

6469
Adaptadores externos:
6570

@@ -85,6 +90,8 @@ Cache & Indexes:
8590
- `requireAuth` — valida autenticação nas rotas que exigem usuário.
8691
- `securityHeaders` — cabeçalhos de segurança.
8792
- `cors` — configuração de CORS (opções em `src/middleware/cors.ts`).
93+
- `requestId` — correlação de requisições.
94+
- `metrics` — coleta de métricas Prometheus.
8895
- `errorHandler` — tratamento centralizado de erros.
8996

9097
## Endpoints principais
@@ -93,6 +100,7 @@ Base: `/`
93100

94101
- Sistema
95102
- `GET /health` — verifica disponibilidade (retorna `{ ok: true }`).
103+
- `GET /metrics` — métricas Prometheus.
96104
- `GET /docs` — UI do Swagger (quando habilitado).
97105

98106
- Auth / OAuth
@@ -119,16 +127,34 @@ Base: `/`
119127
- `GET /keywords` — lista keywords persistidas no banco.
120128
- `POST /keywords` — enfileira uma keyword para processamento pelo serviço Go (retorna 202).
121129

130+
- Notificações
131+
- `GET /notifications` — lista notificações do usuário autenticado.
132+
- `PATCH /notifications/:id/read` — marca uma notificação como lida.
133+
- `PATCH /notifications/read-all` — marca todas como lidas.
134+
- `DELETE /notifications` — limpa notificações conforme filtros aceitos.
135+
122136
- Vagas salvas (Saved Jobs)
123137
- `GET /saved-jobs` — lista vagas salvas do usuário.
124138
- `GET /saved-jobs/:id` — obtém vaga salva por id.
125139
- `POST /saved-jobs` — cria nova vaga salva.
126140
- `PATCH /saved-jobs/:id` — atualiza vaga salva.
127141
- `DELETE /saved-jobs/:id` — remove vaga salva.
128142

143+
- Admin
144+
- `GET /admin/users` — lista usuários.
145+
- `GET /admin/users/:id` — obtém usuário por id.
146+
- `PATCH /admin/users/:id/block` — bloqueia usuário.
147+
- `PATCH /admin/users/:id/unblock` — desbloqueia usuário.
148+
- `POST /admin/users/:id/reset` — reseta credenciais/senha conforme regra do serviço.
149+
- `POST /admin/scrapers/run` — dispara execução dos scrapers.
150+
- `GET /admin/observability/metrics` — visão de métricas administrativas.
151+
- `GET /admin/observability/dashboards` — lista dashboards de observabilidade.
152+
- `GET /admin/audit` — consulta logs de auditoria.
153+
- `GET /admin/permissions/rules` — lista regras de permissão.
154+
129155
Observações de segurança nas rotas:
130156

131-
- Rotas sob `/users`, `/jobs`, `/keywords` e `/saved-jobs` usam `withSession` + `requireAuth` (quando aplicável).
157+
- Rotas sob `/users`, `/jobs`, `/keywords`, `/notifications`, `/saved-jobs` e `/admin` usam `withSession` + `requireAuth` (quando aplicável).
132158
- `auth` usa `withSession` para armazenar OAuth state e criar sessão.
133159

134160
## Variáveis de ambiente importantes
@@ -148,13 +174,17 @@ Definidas/consumidas em `src/config.ts` e outros módulos:
148174
- `VALKEY_URL` — endpoint do Valkey (se usado).
149175
- `GO_SCRAPER_URL` — URL do serviço Go que realiza scraping.
150176
- `SESSION_SECRET` — senha para `iron-session` (obrigatória em produção).
177+
- `ENCRYPTION_MASTER_KEY`, `ENCRYPTION_KEY_ID`, `SEARCH_KEY` — criptografia e campos pesquisáveis de PII.
178+
- `CORS_ALLOWED_ORIGINS` — origens permitidas, incluindo `http://localhost:5173` e `http://localhost:5174` em desenvolvimento local com admin.
179+
- `PROMETHEUS_URL` — integração com Prometheus para rotas de observabilidade.
151180
- `PORT` — porta do servidor (padrão 3001).
152181

153182
## Segurança e criptografia
154183

155184
- Senhas armazenadas usando Argon2 (`argon2`), com opções configuradas no serviço de credenciais.
156185
- Cookies de sessão `httpOnly` e `secure` quando NODE_ENV=production.
157186
- Índices únicos e constraints no DB (ex: email/username/keyword uniques) definidos nas tabelas Drizzle.
187+
- Campos sensíveis de perfil usam criptografia e hashes pesquisáveis onde aplicável.
158188

159189
## Integração com serviço Go
160190

@@ -179,8 +209,11 @@ Definidas/consumidas em `src/config.ts` e outros módulos:
179209

180210
## Docker / Infra
181211

182-
- `Dockerfile` presente no diretório `backend`.
183-
- `docker-compose.yml` no projeto raiz orquestra serviços (possivelmente `scraper-go`, `postgres`, `redis`).
212+
- `backend/Dockerfile` existe para o backend.
213+
- O fluxo Docker principal usa `docker/node.Dockerfile` com targets para backend, frontend e admin.
214+
- `docker-compose.yml` no projeto raiz orquestra `scraper-go`, `backend`, `frontend` e `front_admin`.
215+
- `docker-compose.infra.yml` sobe Postgres e Valkey.
216+
- `docker-compose.migrate.yml` executa migrations e backfill antes do backend.
184217

185218
## Pontos de atenção / Próximos passos sugeridos
186219

@@ -200,7 +233,7 @@ Seguem exemplos práticos para os endpoints mais usados. Ajuste `HOST` para seu
200233

201234
Request:
202235

203-
POST /api/auth/register
236+
POST /auth/register
204237

205238
```json
206239
{
@@ -229,7 +262,7 @@ Response (201):
229262

230263
Request:
231264

232-
POST /api/auth/login
265+
POST /auth/login
233266

234267
```json
235268
{
@@ -251,7 +284,7 @@ Response (200):
251284

252285
Request:
253286

254-
GET /api/jobs/search?keywords=react,node&page=1&limit=10
287+
GET /jobs/search?keywords=react,node&page=1&limit=10
255288

256289
Response (200):
257290

@@ -272,7 +305,7 @@ Response (200):
272305

273306
Request:
274307

275-
POST /api/keywords
308+
POST /keywords
276309

277310
```json
278311
{
@@ -293,7 +326,7 @@ Response (202):
293326

294327
Request:
295328

296-
POST /api/saved-jobs
329+
POST /saved-jobs
297330

298331
```json
299332
{
@@ -325,7 +358,7 @@ Response (201):
325358

326359
Request:
327360

328-
GET /api/users/profile
361+
GET /users/profile
329362

330363
Response (200):
331364

0 commit comments

Comments
 (0)