Contexto
A página de busca (/search) usa useFilterProfessional() que busca de /mocks/professional.json — os mesmos dados estáticos da Home. Os filtros (especialidade, serviço) não vão pra API nenhuma. O endpoint GET /search/professionals?specialty=&service=&accessibility=&page= já existe no backend e o hook Kubb useGetSearchProfessionals está gerado. Parte da migração descrita em #63.
Decisão de design
Substituir useFilterProfessional() pra chamar a API real passando os filtros como query params. O FilterDialogDesktop e FilterPanelMobile já coletam os filtros — só falta passá-los pro hook. O adapter de shape do ProfessionalCard será o mesmo criado na issue da Home (#209).
A lista de especialidades nos filtros ainda vem de specializationOptions hardcoded — isso será resolvido na issue de especialidades separada.
O que fazer
- Substituir
useFilterProfessional() por hook que chama GET /search/professionals com params de filtro
- Usar o Kubb
getSearchProfessionals({ specialty, service, accessibility, page })
- Reutilizar adapter
toProfessionalCardProps() criado na issue da Home
- Conectar
searchBar ao GET /search/searchBar/:terms pra busca por texto
- Implementar paginação real nos resultados
Fora de escopo
Comportamento esperado
- Ao buscar, resultados vêm da API real
- Filtros de especialidade e serviço são enviados como query params
- Paginação funciona (próxima página carrega novos resultados)
- Busca por texto funciona via search bar
Critérios de aceite
Arquivos relevantes
src/features/search/hooks/useFilterProfessional.ts
src/app/(public)/search/page.tsx
src/kubb/hooks/useGetSearchProfessionals.ts
src/kubb/hooks/useGetSearchSearchbarTerms.ts
Parte de #63. Depende de #209 (adapter de shape).
Contexto
A página de busca (
/search) usauseFilterProfessional()que busca de/mocks/professional.json— os mesmos dados estáticos da Home. Os filtros (especialidade, serviço) não vão pra API nenhuma. O endpointGET /search/professionals?specialty=&service=&accessibility=&page=já existe no backend e o hook KubbuseGetSearchProfessionalsestá gerado. Parte da migração descrita em #63.Decisão de design
Substituir
useFilterProfessional()pra chamar a API real passando os filtros como query params. OFilterDialogDesktopeFilterPanelMobilejá coletam os filtros — só falta passá-los pro hook. O adapter de shape doProfessionalCardserá o mesmo criado na issue da Home (#209).A lista de especialidades nos filtros ainda vem de
specializationOptionshardcoded — isso será resolvido na issue de especialidades separada.O que fazer
useFilterProfessional()por hook que chamaGET /search/professionalscom params de filtrogetSearchProfessionals({ specialty, service, accessibility, page })toProfessionalCardProps()criado na issue da HomesearchBaraoGET /search/searchBar/:termspra busca por textoFora de escopo
window.innerWidth(issue Substituir window.innerWidth por useMediaQuery do MUI #194)Comportamento esperado
Critérios de aceite
Arquivos relevantes
src/features/search/hooks/useFilterProfessional.tssrc/app/(public)/search/page.tsxsrc/kubb/hooks/useGetSearchProfessionals.tssrc/kubb/hooks/useGetSearchSearchbarTerms.tsParte de #63. Depende de #209 (adapter de shape).