FEAT/MM-188 성향 관련된 flow를 개선 및 간소화합니다.#86
Conversation
- personalityFlowSearchSchema: flow/chatId 라우트 검색 파라미터 스키마 - FlowProgressBar / FlowStepDots: 플로우 진행 상태 표시 컴포넌트 - useMemberUpdateMutation: 멤버 정보 업데이트 공통 훅 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- my-attachment-select: 내 애착유형 선택 페이지 - my-result-preview: 내 성향 완성 결과 미리보기 페이지 - partner-attachment-select: 상대 성향 선택 페이지 (모르겠어요 모달·flow별 버튼 분기 포함) - partner-result-preview: 상대 성향 결과 미리보기 페이지 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- attachment-test: flow/chatId 검색 파라미터 전달 - partner-mbti: personalityFlowSearchSchema로 전환, partner-attachment-select로 이동 - mbti-form: navCenter/contentTopSlot 슬롯 추가 - header-bar: DetailHeaderBar center 슬롯 지원 - attachment/index.ts: AttachmentTypeCards export 추가 - ATTACHMENT_OPTIONS 상수 추가 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- isFromChat boolean → from: 'home' | 'chat' | 'my-page' prop으로 리팩토링 - from='my-page': "마이페이지로 가기", from='chat': "상담하러 가기", 그 외: "홈으로 가기" - "홈으로 이동하기" → "홈으로 가기" 카피 통일 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- MemberData에 partnerLoveTypeCategory 필드 추가
- UpdateMemberRequestDto에 otherLoveTypeCategory 필드 추가
- UserInfo에 partnerLoveTypeCategory 추가 및 _fetchUserInfo 매핑
- 내 성향 배지: {MBTI} {애착유형} 형태로 변경 (예: "INFP 불안형")
- loveTypeCategory 미입력 시 배지 미표출 ("미입력" 제거)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- AttachmentTestBanner: 카피 "아직 채우지 않은 성향 카드가 {N}건 있어요!"로 변경, onClick/count props 추가
- AttachmentTypeCards: isPartnerUnknown=true 시 AI 분석 예정 툴팁 표출, 카드 클릭 시 툴팁 해제
- 홈 화면: 미완성 성향 카드 수 계산 후 배너 조건부 렌더링, partnerLoveTypeCategory 기반 분기 로직 수정
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- PersonalityFlowLoadingPage: note 로티 + "성향 프로필 생성중..." 표시 후 1.5초 뒤 플로우 이동 - chat-entry-card: 새 대화 시작 후 /mbti 직접 이동 → /personality-flow-loading 경유로 변경 - 홈 배너 클릭도 /personality-flow-loading 경유로 변경 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- key-message-banner 컴포넌트 추가 (icon, subtitle, title, onClick) - bell-notification-icon 컴포넌트 추가 (amber 벨 + 빨간 알림 dot) - attachment-test-banner 제거 후 key-message-banner로 대체 - 홈 상담 카드 하단 여백(mb-4) 추가 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 선택 state 추가 후 즉시 저장 → 버튼 클릭 시 저장으로 변경 - key-message-banner 상단 배치 - 건너뛰기 버튼 제거 → 프로필 완성! 버튼으로 교체 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- selectable-button 컴포넌트 추가 (selected, onClick, children, className) - mbti-form, relationship-status-form, partner-attachment-select에 적용 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- fixed-bottom 컴포넌트 추가 (mt-auto + safe-bottom 패딩 표준화) - my-result-preview, partner-result-preview에 적용 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- flow 단계별 navigate 헬퍼 함수 추가 (personality-flow.ts) - mbti, partner-mbti 페이지에 헬퍼 적용으로 분기 로직 중앙화 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- my-attachment-select, partner-attachment-select, relationship-status에 useMemberUpdateMutation 훅 적용 - flow 네비게이션 헬퍼 및 fixed-bottom 컴포넌트 통합 적용 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- createPortal로 document.body에 렌더링하여 motion.div transform 계층 탈출 - bridge.setModalOpen 호출 추가로 native 상태바 영역까지 오버레이 커버 - useIsFrozenRoute 적용으로 FrozenScreen에서 가이드가 잠깐 노출되는 버그 수정 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 옵션 클릭 시 즉시 저장 → 선택 state 설정으로 변경 - 건너뛰기 버튼 제거 → 프로필 완성! 버튼으로 교체 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- POST /members/onboarding: personalityType, otherPersonalityType 제거 - PATCH /members: otherPersonalityType 제거, loveTypeCategory 추가 - GET /members: partnerLoveTypeCategory 응답 필드 추가 (UNKNOWN enum 포함) - GET /members/partner: memberState, avoidanceRate, anxietyRate, nickname, isStartLoveDateUpdated 제거 - POST /members/partners: 상대 프로필 최초 등록 API 추가 - PATCH /members/partners: 상대 프로필 수정 API 추가 - GET /love-types/result: MBTI + 애착유형 상세 결과 조회 API 추가 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- POST/PATCH /members/partners 연동: useUpsertPartnerProfileMutation (POST→PATCH fallback), useUpdatePartnerProfileMutation 훅 신규 추가 - partner-mbti, partner-attachment-select 페이지를 신규 훅으로 교체 (otherPersonalityType→personalityType, otherLoveTypeCategory→loveTypeCategory) - GET /love-types/result 쿼리 옵션 추가 (loveTypePersonalityTypeResultQuery) - app/page.tsx: PartnerMemberData.loveTypeCategory UNKNOWN 타입 가드 추가 - deprecated 온보딩 페이지 3개 삭제 (onboarding/mbti, onboarding/partner-mbti, onboarding/complete) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- personalityFlowSearchSchema에 from: 'profile' 파라미터 추가 - 마이페이지/프로필에서 성향 편집 진입 시 from: 'profile' 전달 - attachment-select 완료 후 from === 'profile'이면 /my-page/profile로 복귀 - api.ts 인터셉터에서 에러코드 40017(이미 파트너 프로필 등록)은 Sentry/Amplitude 리포팅 제외 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- personality-flow.ts에 usePersonalityFlow hook 통합 (use-personality-flow.ts 제거) - navigateAfterXxx 함수 제거, flow/from 분기 로직을 hook 내부로 집약 - 각 페이지는 next() / exit() 호출만으로 플로우 진행 - chatId 제거 (chat-entry 플로우에서 실제로 사용되지 않는 dead code) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- my/partner-result-preview에서 결과 상세 진입 시 replace + from 파라미터 전달 - navigateExit에 my-result-preview, partner-result-preview 케이스 추가 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- query-keys.ts: loveType.result → loveType.detail 로 충돌 해소 (fix/MM-189 채택) - love-type.service.ts: 미사용 loveTypePersonalityTypeResultQuery 메서드 제거 - features/attachment/index.ts: getAttachmentType alias export 추가 (getLoveTypeCatalogItem) - my-result-preview, partner-result-preview: .description → .previewDescription 수정 - attachment-test/result/my/page.tsx: validateSearch 추가로 from 파라미터 타입 오류 수정 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- chat-entry 테스트 완료 시 my-result-preview 직행 → result/my 경유 후 복귀 - my-result-preview/partner-result-preview 진입 시 뒤로가기 대신 우측 X 닫기 버튼으로 교체 - 닫기/CTA 후 히스토리 루프 방지를 위해 exit() + replace 조합으로 통일 - navigateExit에 flow 전달 체인 추가로 my-result-preview 복귀 시 flow 보존 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- NavigateFn 타입을 any → ReturnType<typeof useNavigate>로 강화 - FlowParams.from을 리터럴 유니온 타입으로 정확화 - catch (error: any) → unknown + 타입 assertion 적용 - useUpdatePartnerProfileMutation onSuccess optional로 변경 - useMemberUpdateMutation errorMessage optional + fallback 기본값 - partner-attachment-select: 두 mutation 인스턴스 → 단일 partnerMutation - SelectableButton 중복 className 제거 - 인라인 gradient style → Tailwind 클래스로 교체 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! 이 Pull Request는 사용자 성향 정보 입력 및 표시 방식을 대대적으로 개선하여, 온보딩 과정의 부담을 줄이고 사용자가 필요할 때 언제든 성향 정보를 관리할 수 있도록 유연성을 높였습니다. 새로운 다단계 플로우와 상세 결과 페이지를 통해 사용자는 자신과 파트너의 성향을 더 깊이 이해하고, 이를 바탕으로 관계 개선에 도움을 받을 수 있습니다. 또한, 백엔드 API 및 프론트엔드 UI 컴포넌트 전반에 걸쳐 구조적인 개선이 이루어졌습니다. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Code Review
이 PR은 온보딩 플로우에서 성향 입력을 제거하고, 성향 관련 플로우를 재구축 및 간소화하는 광범위한 리팩토링을 포함합니다. 새로운 API 엔드포인트와 UI 컴포넌트가 도입되었으며, 기존의 불필요한 파일과 API는 적절하게 제거되거나 Deprecated 처리되었습니다. 전반적으로 코드 구조가 개선되었고, 새로운 성향 플로우는 사용자 경험을 향상시킬 것으로 보입니다. 특히 usePersonalityFlow 훅을 통해 복잡한 네비게이션 로직을 중앙 집중화하고 재사용성을 높인 점이 인상적입니다. 또한, KeyMessageBanner, SelectableButton, FlowProgressBar, FlowStepDots와 같은 재사용 가능한 UI 컴포넌트들이 잘 분리되어 있어 유지보수성이 향상될 것으로 기대됩니다.
replace: true 제거로 history stack 유지 → attachment-test에서 뒤로가기 시 home이 아닌 my-attachment-select로 복귀 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
mbti → my-attachment-select 네비게이션의 replace: true 제거 파트너 플로우와 동일하게 push 방식으로 통일하여 history 유지 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
my-attachment-select 완료 시 router.history.back() 대신 명시적 navigate로 /my-page/profile 이동 (history에 /mbti가 추가되어 back()이 MBTI로 이동하던 문제 해결) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 마이페이지에서 상대 성향 변경 완료 시 토스트 메시지 추가 - 채팅 상단 안내 문구: '연동 후에도 대화 내용은 상대에게 공유되지 않으니 안심하세요!' → '대화 내용은 암호화 되어 안전하게 저장하고 있어요!' Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
마이페이지와 동일하게 'INFP 불안형' 형식으로 표시 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
banner와 동일하게 my-personality / partner-personality / full-flow 분기 처리 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
getMissingPersonalityFlow() 추출 후 banner, chat-entry-card에 적용 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- banner/채팅하기 단일 플로우(my-personality, partner-personality)에서 직접 선택 완료 후 결과 페이지를 거쳐 홈으로 이동하도록 수정 - from=profile 플로우에서 mbti→attachment-select 이동 시 replace 적용하여 완료 후 마이페이지에서 뒤로가기 시 중간 플로우 페이지 노출 버그 수정 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- from=profile 플로우에서 attachment-select 완료 시 navigate replace 대신 history.go(-2)를 사용하여 히스토리 포인터를 profile로 이동 - mbti→attachment-select 이동의 잘못된 replace 제거 히스토리 스택: [..., prev, profile, mbti, attachment-select] - 완료 후 back: prev (마이페이지→마이페이지 중복 제거) - attachment-select back: mbti (중간 단계 back 정상화) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- getMissingPersonalityFlow: UNKNOWN을 missing으로 처리하던 로직 제거 - 홈 배너: partnerLoveTypeCategory가 UNKNOWN이면 미완성 카운트에서 제외 - 채팅 버튼: UNKNOWN이면 파트너 성향 완성으로 간주하여 바로 채팅 진입 - partner-attachment-select: 모르겠어요(UNKNOWN) 선택 시 결과 페이지 없이 바로 HOME 이동 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
이슈 번호
작업내용
리뷰어에게 전할 말
스크린샷 (선택사항)