Parte do épico Captação de profissionais — landing page e aprovação interna (frente: backend).
Objetivo: Estender o User com os campos do cadastro, o papel admin e o estado de publicação.
Arquivos: Modify src/models/User.mjs · Test src/tests/userModel.test.mjs
Dependências: —
O que fazer:
- Adicionar ao
userSchema: telefone, comoConheceu, termsAcceptedAt, password (só admin), active (Boolean, default true), publicationStatus (enum em_analise|aprovado|reprovado, default null).
- Estender o enum de
userType para ["professional","patient","admin"].
- Tornar
hashedOTP opcional (hoje required: true) — o cadastro sem OTP cria conta sem ele.
- Nota: já existe
active no addressSchema (por endereço); este é novo, no nível raiz do userSchema.
Test scenarios: campos persistem; userType:["admin"] válido; publicationStatus default null; criar profissional sem hashedOTP aceito; doc antigo compatível.
Pronto quando: o schema aceita os campos novos, o papel admin e a criação sem hashedOTP sem quebrar registros existentes.
Parte do épico Captação de profissionais — landing page e aprovação interna (frente: backend).
Objetivo: Estender o
Usercom os campos do cadastro, o papel admin e o estado de publicação.Arquivos: Modify
src/models/User.mjs· Testsrc/tests/userModel.test.mjsDependências: —
O que fazer:
userSchema:telefone,comoConheceu,termsAcceptedAt,password(só admin),active(Boolean, defaulttrue),publicationStatus(enumem_analise|aprovado|reprovado, defaultnull).userTypepara["professional","patient","admin"].hashedOTPopcional (hojerequired: true) — o cadastro sem OTP cria conta sem ele.activenoaddressSchema(por endereço); este é novo, no nível raiz douserSchema.Test scenarios: campos persistem;
userType:["admin"]válido;publicationStatusdefaultnull; criar profissional semhashedOTPaceito; doc antigo compatível.Pronto quando: o schema aceita os campos novos, o papel admin e a criação sem
hashedOTPsem quebrar registros existentes.