Skip to content

feat(categoria-proxy): Card 03 — 4 endpoints de categoria (proxy + guards) - #502

Merged
FernandoAlmeidaPinto merged 2 commits into
developfrom
feature/crud-categoria-card-03-proxies
Jul 26, 2026
Merged

feat(categoria-proxy): Card 03 — 4 endpoints de categoria (proxy + guards)#502
FernandoAlmeidaPinto merged 2 commits into
developfrom
feature/crud-categoria-card-03-proxies

Conversation

@FernandoAlmeidaPinto

Copy link
Copy Markdown
Member

Closes #501

Etapa 3 (CRUD Categoria) — Card 03. Expõe no gateway os 4 endpoints de categoria fazendo proxy pro ms-simulado.

Summary

  • CategoriaProxyService (novo, padrão FrenteProxyService): getAll(page,limit), getById(id), create(dto), delete(id)v1/categoria* no ms-simulado.
  • CategoriaProxyController (estendido — já existia com só @Get()): agora 4 endpoints:
    • GET /mssimulado/categoria (paginado) e GET /:id@UseGuards(JwtAuthGuard).
    • POST e DELETE /:id@UseGuards(JwtAuthGuard, PermissionsGuard) + alterarPermissao.
  • DTO espelho CreateCategoriaDtoInput (nome?, prefixo?, duracao, quantidadeTotalQuestao?, exame, descricao?).
  • CategoriaProxyService registrado no SimuladoModule.

Decisões / correções vs card

  • Não dupliquei o controller — o CategoriaProxyController já existia (desde a etapa 1, com @Get() getCategorias()). Migrei o @Get() para paginado + JwtAuthGuard. Seguro: o client já envia Bearer token + ?page&limit e espera o envelope paginado do ms-simulado.
  • Guard de escrita JwtAuthGuard, PermissionsGuard (não só PermissionsGuard como o Frente): o PermissionsGuard retorna 403 quando falta token, mas o critério exige 401. Com JwtAuthGuard primeiro: sem token → 401; token sem permissão → 403.
  • Erros 409 (delete bloqueado / nome duplicado) e 400 (pattern) do ms-simulado propagam via HttpServiceAxios (re-throw como HttpException com o status upstream).
  • CRUD imutável: nenhum PATCH. Nenhuma rota /tipos (confirmado inexistente).

Test Plan

  • 4 unit tests do CategoriaProxyService (URLs encaminhadas) — passam; build limpo
  • Smoke test homol: POST sem token → 401; POST sem alterarPermissao → 403; POST admin → cria; DELETE em uso → 409 {simuladosUsando}; GET lista sem soft-deleted

Follow-up (não-bloqueante)

  • SimuladoService.getCategorias() fica órfão após a migração do controller — remover em cleanup.
  • custom/selecionavel propositalmente fora do DTO (backend força; whitelist descarta se enviados).

🤖 Generated with Claude Code

FernandoAlmeidaPinto and others added 2 commits July 26, 2026 03:27
…tById/create/delete)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…s alterarPermissao

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@FernandoAlmeidaPinto FernandoAlmeidaPinto self-assigned this Jul 26, 2026
@FernandoAlmeidaPinto
FernandoAlmeidaPinto merged commit 35c7fb7 into develop Jul 26, 2026
4 checks passed
@FernandoAlmeidaPinto
FernandoAlmeidaPinto deleted the feature/crud-categoria-card-03-proxies branch July 26, 2026 07:16
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.

[CRUD Categoria] Card 03 · api-vcnafacul · CategoriaController + proxies + guards

1 participant