sass-imobiliaria/.specify/features/012-register-rich-profile/spec.md

2.8 KiB

Feature Specification: Cadastro Rico de Cliente (Perfil Completo no Registro)

Feature Branch: 012-register-rich-profile Created: 2026-04-14 Status: In Progress

Contexto

A página /cadastro atualmente coleta apenas nome, email, senha e confirmação de senha. A feature 011 adicionou campos ricos ao model ClientUser (phone, whatsapp, cpf, birth_date, address_*) e ao painel admin, mas o fluxo de auto-registro do cliente (/cadastro) não foi atualizado. Esta feature expande o formulário público de cadastro para também permitir que o próprio cliente informe seus dados de contato (telefone, WhatsApp) e documento (CPF) já no ato do registro. Os campos de endereço e data de nascimento serão opcionais e disponíveis. O formulário mantém etapas lógicas para não sobrecarregar o usuário.

User Stories

US1 — Dados de contato no cadastro (P1)

Given usuário na página /cadastro, When preenche o formulário, Then pode opcionalmente informar telefone e WhatsApp além de nome/email/senha.

US2 — CPF no cadastro (P1)

Given usuário na página /cadastro, When preenche o formulário, Then pode opcionalmente informar CPF com máscara automática.

US3 — Dados de endereço no cadastro (P2)

Given usuário na página /cadastro, When expande seção de endereço (ou preenche naturalmente), Then pode informar logradouro, número, complemento, bairro, cidade, estado e CEP.

US4 — Data de nascimento no cadastro (P2)

Given usuário na página /cadastro, When preenche seus dados pessoais, Then pode informar data de nascimento.

US5 — Campos opcionais sem bloqueio (P1)

Given usuário preenchendo o cadastro, When não preenche campos opcionais, Then o cadastro é realizado normalmente sem erro.

Acceptance Criteria

  • RegisterIn schema em auth.py aceita os novos campos opcionais: phone, whatsapp, cpf, birth_date, address_street, address_number, address_complement, address_neighborhood, address_city, address_state, address_zip
  • Endpoint POST /auth/register passa novos campos ao ClientUser ao criar
  • RegisterCredentials em types/auth.ts expandido com campos opcionais
  • registerUser em services/auth.ts passa os novos campos (exceto confirmPassword)
  • RegisterPage.tsx expandida com seções: Acesso (nome, email, senha, confirmar senha), Contato (telefone, WhatsApp, CPF, data de nascimento), Endereço (logradouro, número, complemento, bairro, cidade, estado, CEP)
  • Máscaras automáticas para CPF (000.000.000-00), telefone ((00) 00000-0000) e CEP (00000-000)
  • Visual consistente com o design atual da RegisterPage (dark, border-white/6, bg-[#0f1011])
  • Seções de Contato e Endereço separadas visualmente mas acessíveis sem scroll excessivo