Skip to content

FEAT/MM-188 성향 관련된 flow를 개선 및 간소화합니다.#86

Merged
hin6150 merged 44 commits into
feat/MM-187from
feat/MM-188
Mar 26, 2026
Merged

FEAT/MM-188 성향 관련된 flow를 개선 및 간소화합니다.#86
hin6150 merged 44 commits into
feat/MM-187from
feat/MM-188

Conversation

@hin6150
Copy link
Copy Markdown
Member

@hin6150 hin6150 commented Mar 21, 2026

이슈 번호

#MM-188

작업내용

  • 변경한 주요 내용 목록
    • 온보딩 플로우에서 성향 입력을 제거합니다.
    • 각각 진입점에 맏추어 성향 플로우를 재구축합니다.

리뷰어에게 전할 말

스크린샷 (선택사항)

hin6150 and others added 30 commits March 15, 2026 14:35
- 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>
- 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>
@hin6150 hin6150 requested a review from LeeWxx March 21, 2026 07:24
@hin6150 hin6150 self-assigned this Mar 21, 2026
@gemini-code-assist
Copy link
Copy Markdown

Summary of Changes

Hello, 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

  • 성향 플로우 개선 및 간소화: 온보딩 플로우에서 성향 입력을 제거하고, 각 진입점에 맞춰 성향 플로우를 재구축하여 사용자 경험을 개선했습니다.
  • 새로운 성향 입력 및 결과 페이지 추가: 나의 애착유형 선택, 나의 결과 미리보기, 상대 애착유형 선택, 상대 결과 미리보기, 성향 플로우 로딩 페이지 등 새로운 페이지들이 추가되어 성향 정보 입력 및 확인 과정이 더욱 상세해졌습니다.
  • API 및 데이터 모델 업데이트: 파트너 프로필 생성/수정 API가 추가되었고, MBTI와 애착 유형 조합에 대한 상세 결과를 조회하는 API가 도입되었습니다. 기존 커플 연동 및 오늘의 질문 관련 API는 Deprecated 처리되었습니다.
  • 재사용 가능한 UI 컴포넌트 도입: 고정 하단 버튼, 플로우 진행 바, 단계별 점 표시, 키 메시지 배너, 선택 가능한 버튼 등 여러 UI 컴포넌트가 추가되어 일관된 디자인과 기능을 제공합니다.
  • 애착유형 결과 페이지 전면 개편: 애착유형 결과 페이지가 완전히 새로운 디자인과 상세 정보 섹션(키워드, 특징, 행동 패턴, 가이드, 궁합)으로 개편되어 더욱 풍부한 정보를 제공합니다.

🧠 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 Assist

The 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 /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

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

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

이 PR은 온보딩 플로우에서 성향 입력을 제거하고, 성향 관련 플로우를 재구축 및 간소화하는 광범위한 리팩토링을 포함합니다. 새로운 API 엔드포인트와 UI 컴포넌트가 도입되었으며, 기존의 불필요한 파일과 API는 적절하게 제거되거나 Deprecated 처리되었습니다. 전반적으로 코드 구조가 개선되었고, 새로운 성향 플로우는 사용자 경험을 향상시킬 것으로 보입니다. 특히 usePersonalityFlow 훅을 통해 복잡한 네비게이션 로직을 중앙 집중화하고 재사용성을 높인 점이 인상적입니다. 또한, KeyMessageBanner, SelectableButton, FlowProgressBar, FlowStepDots와 같은 재사용 가능한 UI 컴포넌트들이 잘 분리되어 있어 유지보수성이 향상될 것으로 기대됩니다.

hin6150 and others added 13 commits March 21, 2026 16:36
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>
마이페이지와 동일하게 '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>
@hin6150 hin6150 merged commit 20d55dd into feat/MM-187 Mar 26, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants