Parte do épico Captação de profissionais — landing page e aprovação interna (frente: backend).
Objetivo: Endpoints de moderação — listar pendentes, aprovar, reprovar e reverter.
Arquivos: Modify src/controller/userController/index.mjs (ou adminController), src/routes/index.mjs · Test src/tests/moderation.test.mjs
Dependências: Task 3 (estado de publicação) + Task 4 (auth admin)
O que fazer:
GET /admin/professionals/pending — lista em_analise (paginado, admin). Pode expor CNPJCPFProfissional (análise); público, não.
POST /admin/professionals/:id/approve → aprovado + active: true.
POST .../reject → reprovado + active: false.
POST .../reinstate → volta para em_analise (reprovar é reversível pelo admin; não apaga a conta).
Test scenarios: pending só em_analise (403 sem admin); approve/reject/reinstate com efeitos corretos; id inexistente → 404; re-cadastro de e-mail reprovado → conflito; profissional comum não acessa.
Pronto quando: o admin lista, aprova, reprova e reverte com os efeitos corretos de visibilidade e reversibilidade.
Parte do épico Captação de profissionais — landing page e aprovação interna (frente: backend).
Objetivo: Endpoints de moderação — listar pendentes, aprovar, reprovar e reverter.
Arquivos: Modify
src/controller/userController/index.mjs(ouadminController),src/routes/index.mjs· Testsrc/tests/moderation.test.mjsDependências: Task 3 (estado de publicação) + Task 4 (auth admin)
O que fazer:
GET /admin/professionals/pending— listaem_analise(paginado, admin). Pode exporCNPJCPFProfissional(análise); público, não.POST /admin/professionals/:id/approve→aprovado+active: true.POST .../reject→reprovado+active: false.POST .../reinstate→ volta paraem_analise(reprovar é reversível pelo admin; não apaga a conta).Test scenarios:
pendingsóem_analise(403 sem admin);approve/reject/reinstatecom efeitos corretos; id inexistente → 404; re-cadastro de e-mail reprovado → conflito; profissional comum não acessa.Pronto quando: o admin lista, aprova, reprova e reverte com os efeitos corretos de visibilidade e reversibilidade.