# 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