Contexto
Os cadastros de paciente e profissional usam listas de especialidades hardcoded: o paciente busca de `/mocks/specialties.json` (17 itens), o profissional usa um array estático no componente (16 itens), e os filtros de busca têm um terceiro array com 6 itens. Não há consistência entre elas. O backend vai expor `GET /specialties` como source of truth (conectaBemBack#63).
Decisão de design
Criar um hook `useSpecialties()` que busca do endpoint `GET /specialties` e é compartilhado entre todos os pontos que usam lista de especialidades. Cachear com staleTime alto (especialidades mudam raramente). Regenerar tipos Kubb após o endpoint ser criado.
O que fazer
- Criar hook `useSpecialties()` que busca de `GET /specialties`
- Substituir `useGetSpecialty()` (que busca do mock) pelo novo hook no cadastro de paciente
- Substituir `specialtiesMock` no `SpecialtyStep.tsx` do profissional pelo novo hook
- Substituir `specializationOptions` em `MedicalSpecialization/options.ts` pelo novo hook (afeta Home e Search)
- Remover mock: `src/features/auth/mocks/specialties.json`
- Remover `specializationOptions` hardcoded
- Regenerar tipos Kubb (`npm run generate`)
Fora de escopo
- Criar o endpoint no backend (conectaBemBack#63 — pré-requisito)
- CRUD de especialidades
- Categorização de especialidades
Comportamento esperado
- Cadastro de paciente exibe especialidades vindas da API
- Cadastro de profissional exibe especialidades vindas da API
- Filtros de busca (Home e Search) usam a mesma lista da API
- Lista é cacheada no React Query
Critérios de aceite
Stack / Restrições técnicas
React Query com staleTime alto (5min+). Endpoint público, não precisa de token.
Arquivos relevantes
- `src/features/auth/hooks/useGetSpecialty.ts`
- `src/features/auth/components/ProfissionalRegister/SpecialtyStep.tsx`
- `src/features/auth/components/PatientRegister/SpecialityStep/SpecialitiesSelection.tsx`
- `src/components/MedicalSpecialization/options.ts`
Dependências
- Pré-requisito: conectaBemBack#63 (endpoint GET /specialties)
📎Link da Task (Figma)
Contexto
Os cadastros de paciente e profissional usam listas de especialidades hardcoded: o paciente busca de `/mocks/specialties.json` (17 itens), o profissional usa um array estático no componente (16 itens), e os filtros de busca têm um terceiro array com 6 itens. Não há consistência entre elas. O backend vai expor `GET /specialties` como source of truth (conectaBemBack#63).
Decisão de design
Criar um hook `useSpecialties()` que busca do endpoint `GET /specialties` e é compartilhado entre todos os pontos que usam lista de especialidades. Cachear com staleTime alto (especialidades mudam raramente). Regenerar tipos Kubb após o endpoint ser criado.
O que fazer
Fora de escopo
Comportamento esperado
Critérios de aceite
Stack / Restrições técnicas
React Query com staleTime alto (5min+). Endpoint público, não precisa de token.
Arquivos relevantes
Dependências
📎Link da Task (Figma)