Onboarding de Perfil
Esta seção documenta a construção da identidade do usuário no app através de um Wizard de 10 passos.
A Inteligência Artificial depende das respostas coletadas aqui (salvas no objeto answers_json) para calcular as porcentagens de compatibilidade e sugerir conexões de alta fidelidade.
Diretrizes de Frontend (Padrão Mariana)
Ao implementar o fluxo de Onboarding no WelcomeDisplayModeScreen.tsx, siga as regras de UX para manter o padrão Premium:
-
Avanço Automático: Em botões de seleção única (ex: Gênero), implemente um
setTimeoutde 300ms para disparar a funçãogoNext()automaticamente. Evite o "toque duplo" desnecessário do usuário. -
Estética Clean: Esqueça blocos (cards) pesados. Separe as seções como "Álbum de Fotos" e "Dados Básicos" usando a
StyleSheet.hairlineWidth. -
Barra de Progresso: Utilize a barra ultra fina superior (
height: 4) sem bordas.
1. Recuperação de Respostas (Draft)
/api/profile/get-profile/{userId}
Se o usuário fechar o app no passo 5, ele não deve começar do zero. Este endpoint recupera o objeto answers_json atual para pré-preencher os estados do formulário.
{
"ok": true,
"id": 42,
"answers_json": {
"s1_name": "Maurício",
"s2_gender": "masculino",
"s3_intent": "romance"
}
}
2. Update Inteligente (Steps 1 ao 9)
/api/profile/update-json
No frontend, ao avançar um passo, envie apenas as respostas da tela atual. O backend não subscreve o banco inteiro, ele faz um merge adicionando ou atualizando apenas as chaves enviadas dentro do JSON existente.
{
"userId": 42,
"key": "s5_mbti",
"value": "INTJ"
}
{
"ok": true,
"message": "Campo atualizado com sucesso no JSON!"
}
3. O "Gran Finale" (Step 10)
O passo 10 do app consolida tudo. É responsável por enviar as fotos (Multipart), salvar o GPS, definir os dados básicos faltantes e acionar o algoritmo de IA para pré-calcular os matches.
/api/upload/upload-photos
Envia o álbum de fotos capturado no expo-image-picker. Requer multipart/form-data.
images: [{ uri: "file://...", name: "foto_0.jpg", type: "image/jpeg" }, ...]
Response
{ "imageUrls": ["https://cdn.../foto1.jpg", "https://cdn.../foto2.jpg"] }
/api/profile/match-profile
Finaliza e crava os dados vitais em colunas nativas no banco (para busca rápida da IA) e envia o JSON completo atualizado.
Request Body{
"userId": 42,
"birth_date": "2000-10-15",
"lat": -22.9068,
"lng": -43.1729,
"answers": {
"s10_photos": ["url1", "url2"],
"s10_profile_pic": "url1",
"s10_cep": "00000000",
"s10_wa": "11999999999",
"s10_ig": "mauricix",
...
}
}
/api/matches/recompute/{userId}
Assim que o Step 10 termina, esta rota é chamada no background. Ela compara o novo usuário com até 100 perfis próximos usando a CompatibilityEngine e já gera a tabela de match_scores para a tela inicial abrir com os cards carregados.