Feat/skill selector create#90
Conversation
|
@karinaperes is attempting to deploy a commit to the ynotmax's projects Team on Vercel. A member of the Team first needs to authorize it. |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
feat: busca e cadastro de skills por categoria no onboarding
Descrição
Substitui o modelo fixo de seleção de skills por um autocomplete inline em cada quadro de categoria, permitindo que o usuário pesquise skills existentes e cadastre novas diretamente no fluxo de onboarding.
Problema resolvido
O usuário ficava limitado às skills pré-cadastradas. Tecnologias que não estavam na lista não podiam ser adicionadas ao perfil, tornando o cadastro incompleto. Com a lista crescendo, localizar uma skill também se tornava difícil.
O que mudou
tagCategories.tskeyem cada categoria (core_tech,ia_future, etc.) para identificação única no estado e no FirestorelocaleComparecom localept-BRTagCategoryCard.tsx+ Adicionar "X"que cria a skill no Firestore com a categoria do quadroNOVA, sem reloadmousedownno document — mais confiável queonBlur + setTimeoutSkillService.tscreateOrGetSkillpassa a aceitarcategory: string | nullcomo segundo parâmetro (retrocompatível)createdAttipado comTimestamp.now()em vez denew Date() as anyuseOnboardingForm.tsextraTagsByCategory: Record<string, string[]>para guardar skills criadas por categoriahandleCreateSkillInCategorycria a skill no Firestore e atualiza o estado local imediatamenteextraTagsByCategorypersistido e restaurado do Firestore nofetchMemberDataprofileDatatipado explicitamente — removidoanyskillListremovido (não era mais necessário nessa arquitetura)FirebaseSkillRepository.tsupdateSkillrenomeados para_ide_datapara satisfazer o lint (no-unused-vars)firestore.rulesskills: leitura para autenticados, criação com validação de campos obrigatórios e ID determinístico (skillId == normalizedName), update/delete bloqueados para usuários comunsextraTagsByCategoryadicionado à validação deprofiles(isValidProfile,hasOnlyem create e update)Arquivos alterados
src/features/onboarding/constants/tagCategories.tssrc/features/onboarding/components/TagCategoryCard.tsxsrc/features/onboarding/hooks/useOnboardingForm.tssrc/application/services/SkillService.tssrc/infrastructure/firebase/skillRepository.tsfirestore.rulesCritérios de aceite atendidos
extraTagsByCategorypersistido no perfil e restaurado na próxima sessãoPendente
firestore.rulesem produção (aguardando acesso ao projeto Firebase)