Skip to content

refactor: SSE 이벤트를 recommend-result-created로 변경#121

Merged
RookieAND merged 6 commits intodevelopfrom
feature/change-sse-recommend-result
Feb 27, 2026
Merged

refactor: SSE 이벤트를 recommend-result-created로 변경#121
RookieAND merged 6 commits intodevelopfrom
feature/change-sse-recommend-result

Conversation

@RookieAND
Copy link
Collaborator

🎯 PR 제목

refactor: SSE 이벤트를 recommend-result-created로 변경

📑 작업 상세 내역

  • 기능 추가

    • recommendResultCreated SSE 이벤트 스키마를 추가합니다
      • accessKey, region, peopleCount, currentCount 필드 포함
  • 리팩토링

    • gatheringFull 스키마를 제거하고 export를 업데이트합니다
    • SSE 이벤트 타입명을 gathering-full에서 recommend-result-created로 변경합니다
    • SSE 이벤트 스키마 맵핑을 RECOMMEND_RESULT_CREATED로 교체합니다
    • 추천 결과 처리 훅에서 SSE 이벤트 리스너를 RECOMMEND_RESULT_CREATED로 변경합니다

🙏 리뷰 요청 사항

  • SSE 이벤트 타입 변경이 모든 관련 파일에 올바르게 적용되었는지 확인해주세요.
  • 새로운 스키마 필드(accessKey, region, peopleCount, currentCount)가 적절한지 검토해주세요.

📃 참고 자료

  • 변경된 파일:
    • src/schemas/sse/recommendResultCreated.schema.ts (추가)
    • src/schemas/sse/gatheringFull.schema.ts (삭제)
    • src/schemas/sse/index.ts
    • src/hooks/sse/types.ts
    • src/hooks/sse/schemas.ts
    • src/hooks/gathering/useProceedRecommendResult.ts

🖼️ 작업 결과물

  • SSE 이벤트 시스템이 새로운 recommend-result-created 이벤트로 정상적으로 동작합니다
  • 추천 결과 생성 완료 시 더 빠른 페이지 전환을 제공합니다

RookieAND and others added 5 commits February 27, 2026 13:29
추천 결과 생성 완료 이벤트를 위한 새로운 스키마 정의
- accessKey, region, peopleCount, currentCount 필드 포함

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- gatheringFull.schema.ts 파일 삭제
- index.ts에서 recommendResultCreated 스키마로 export 변경

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
gathering-full 이벤트를 recommend-result-created로 변경

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
GATHERING_FULL 이벤트 스키마를 RECOMMEND_RESULT_CREATED로 교체

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- SSE 이벤트 리스너를 RECOMMEND_RESULT_CREATED로 변경
- 페이지 이동 딜레이 시간 단축 (2500ms → 2000ms)
- startTime 변수 인라인화로 코드 간소화

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@RookieAND RookieAND added the 🔨 Refactor 코드 리팩토링 및 구조 개선 label Feb 27, 2026
@RookieAND RookieAND self-assigned this Feb 27, 2026
@RookieAND RookieAND requested a review from youngminss February 27, 2026 04:40
@gemini-code-assist
Copy link
Contributor

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!

이 PR은 추천 결과에 대한 Server-Sent Events(SSE) 시스템을 recommend-result-created 이벤트 타입으로 리팩토링하고, 관련 스키마를 확장하여 더 많은 정보를 제공합니다. 또한, 여러 페이지에서 API 에러 발생 시 notFound()redirect()를 활용하여 사용자 경험을 개선하는 견고한 에러 처리 로직을 도입했습니다. 음식 카테고리 및 순위 관련 상수와 컴포넌트의 명칭을 통일하고, 새로운 SVG 에셋을 추가하여 UI를 업데이트했습니다.

Highlights

  • SSE 이벤트 타입 변경: 추천 결과 SSE 이벤트 타입이 gathering-full에서 recommend-result-created로 변경되었습니다.
  • 새로운 SSE 이벤트 스키마 추가: recommendResultCreated.schema.ts 파일에 accessKey, region, peopleCount, currentCount 필드를 포함하는 새로운 SSE 이벤트 스키마가 추가되었습니다.
  • 기존 SSE 스키마 제거 및 업데이트: gatheringFull 스키마가 제거되었고, 관련 export가 업데이트되었습니다.
  • SSE 이벤트 리스너 업데이트: 추천 결과 처리 훅(useProceedRecommendResult)에서 SSE 이벤트 리스너가 RECOMMEND_RESULT_CREATED로 변경되었습니다.
  • 에러 핸들링 개선: 다양한 페이지(landing, opinion, complete, pending, result)에서 API 에러 발생 시 notFound()redirect()를 활용한 에러 처리 로직이 개선되었습니다. 전역 에러 페이지와 404 페이지도 추가되었습니다.
  • 의견 수합 폼 필드명 변경: 의견 수합 폼의 필드명이 dislikedFoods에서 dislikedCategories로, preferredMenus에서 preferredCategories로 변경되었습니다.
  • 카테고리 관련 상수 및 컴포넌트 리팩토링: FoodCategory 관련 상수 및 컴포넌트 이름이 Category로 변경되어 일관성이 향상되었습니다.
  • 추천 결과 생성 뮤테이션 추가: 과반수 이상 의견 제출 시 추천 결과를 생성하는 postProcessRecommendResult API와 usePostProceedRecommendResult 훅이 추가되었습니다.

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

Changelog
  • .gitignore
    • Git worktrees를 무시하도록 .worktrees/ 항목을 추가했습니다.
  • CHANGELOG.md
    • 버전을 2.0.0-beta.8로 업데이트하고, 'SSE Event Registry 시스템 구현 및 마이그레이션' 기능 항목을 추가했습니다.
  • app/error.tsx
    • 새로운 전역 에러 페이지를 추가했습니다.
  • app/gathering/[accessKey]/landing/error.tsx
    • 기존 랜딩 에러 페이지를 제거했습니다.
  • app/gathering/[accessKey]/landing/page.tsx
    • 특정 API 에러에 대해 notFound()redirect()를 사용하도록 페이지를 업데이트하고, 컴포넌트 이름을 LandingView에서 LandingPage로 변경했습니다.
  • app/gathering/[accessKey]/opinion/complete/CompleteViewContainer.tsx
    • CompleteViewContainer 컴포넌트를 제거했습니다.
  • app/gathering/[accessKey]/opinion/complete/error.tsx
    • 완료 의견 수합 흐름을 위한 새로운 에러 페이지를 추가하고, API 에러 코드에 따라 특정 리다이렉션을 처리하도록 했습니다.
  • app/gathering/[accessKey]/opinion/complete/layout.tsx
    • 자식 컴포넌트를 ServerSentEventProvider로 감쌌습니다.
  • app/gathering/[accessKey]/opinion/complete/page.tsx
    • 추천 결과 상태를 처리하고 적절하게 리다이렉션하도록 페이지를 업데이트하고, 컴포넌트 이름을 CompleteViewContainer에서 CompletePage로 변경했습니다.
  • app/gathering/[accessKey]/opinion/error.tsx
    • API 에러에 대한 특정 리다이렉션을 포함하도록 에러 페이지를 업데이트했습니다.
  • app/gathering/[accessKey]/opinion/page.tsx
    • 추천 결과 상태 및 리다이렉션을 처리하도록 페이지를 업데이트하고, 컴포넌트 이름을 OpinionFormView에서 OpinionFormPage로 변경했습니다.
  • app/gathering/[accessKey]/opinion/pending/PendingViewContainer.tsx
    • PendingViewContainer 컴포넌트를 제거했습니다.
  • app/gathering/[accessKey]/opinion/pending/error.tsx
    • 대기 의견 수합 흐름을 위한 새로운 에러 페이지를 추가하고, API 에러 코드에 따라 특정 리다이렉션을 처리하도록 했습니다.
  • app/gathering/[accessKey]/opinion/pending/layout.tsx
    • 자식 컴포넌트를 ServerSentEventProvider로 감쌌습니다.
  • app/gathering/[accessKey]/opinion/pending/page.tsx
    • 추천 결과 상태 및 리다이렉션을 처리하도록 페이지를 업데이트하고, 컴포넌트 이름을 PendingViewContainer에서 PendingPage로 변경했습니다.
  • app/gathering/[accessKey]/opinion/result/ResultViewContainer.tsx
    • ResultViewContainer 컴포넌트를 제거했습니다.
  • app/gathering/[accessKey]/opinion/result/error.tsx
    • 결과 의견 수합 흐름을 위한 새로운 에러 페이지를 추가하고, API 에러 코드에 따라 특정 리다이렉션을 처리하도록 했습니다.
  • app/gathering/[accessKey]/opinion/result/page.tsx
    • 추천 결과 상태 및 리다이렉션을 처리하도록 페이지를 업데이트하고, 컴포넌트 이름을 ResultViewContainer에서 ResultPage로 변경했습니다.
  • app/global-error.tsx
    • 새로운 전역 에러 페이지를 추가했습니다.
  • app/not-found.tsx
    • 새로운 404 페이지를 추가했습니다.
  • global.d.ts
    • ProcessEnv 인터페이스를 NEXT_PUBLIC_API_URL, NEXT_PUBLIC_AWS_S3, NEXT_PUBLIC_GTM_ID, NEXT_PUBLIC_GA_ID로 업데이트했습니다.
  • package.json
    • 버전을 2.0.0-beta.8로 업데이트했습니다.
  • public/images/foodCategory/any.svg
    • 음식 카테고리 SVG 에셋을 업데이트했습니다.
  • public/images/foodCategory/asian.svg
    • 음식 카테고리 SVG 에셋을 업데이트했습니다.
  • public/images/foodCategory/chinese.svg
    • 음식 카테고리 SVG 에셋을 업데이트했습니다.
  • public/images/foodCategory/japanese.svg
    • 음식 카테고리 SVG 에셋을 업데이트했습니다.
  • public/images/foodCategory/korean.svg
    • 음식 카테고리 SVG 에셋을 업데이트했습니다.
  • public/images/foodCategory/western.svg
    • 음식 카테고리 SVG 에셋을 업데이트했습니다.
  • public/images/people/character1.svg
    • 새로운 사람 캐릭터 SVG 에셋을 추가했습니다.
  • public/images/people/character10.svg
    • 새로운 사람 캐릭터 SVG 에셋을 추가했습니다.
  • public/images/people/character2.svg
    • 새로운 사람 캐릭터 SVG 에셋을 추가했습니다.
  • public/images/people/character3.svg
    • 새로운 사람 캐릭터 SVG 에셋을 추가했습니다.
  • public/images/people/character4.svg
    • 새로운 사람 캐릭터 SVG 에셋을 추가했습니다.
  • public/images/people/character5.svg
    • 새로운 사람 캐릭터 SVG 에셋을 추가했습니다.
  • public/images/people/character6.svg
    • 새로운 사람 캐릭터 SVG 에셋을 추가했습니다.
  • public/images/people/character7.svg
    • 새로운 사람 캐릭터 SVG 에셋을 추가했습니다.
  • public/images/people/character8.svg
    • 새로운 사람 캐릭터 SVG 에셋을 추가했습니다.
  • public/images/people/character9.svg
    • 새로운 사람 캐릭터 SVG 에셋을 추가했습니다.
  • public/images/result/distance-far.svg
    • 새로운 거리 표시 SVG 에셋을 추가했습니다.
  • public/images/result/distance-near.svg
    • 새로운 거리 표시 SVG 에셋을 추가했습니다.
  • src/apis/recommendResult/api.ts
    • postProcessRecommendResult API 호출을 추가했습니다.
  • src/apis/recommendResult/index.ts
    • 새로운 뮤테이션 키와 옵션을 내보냈습니다.
  • src/apis/recommendResult/mutationKey.ts
    • proceed 뮤테이션을 위한 recommendResultMutationKeys를 추가했습니다.
  • src/apis/recommendResult/mutationOptions.ts
    • proceed 뮤테이션을 위한 recommendResultMutationOptions를 추가했습니다.
  • src/apis/recommendResult/type.ts
    • PostProcessRecommendResultRequestPostProcessRecommendResultResponse 타입을 추가했습니다.
  • src/components/illustrations/NotFoundIllustration.tsx
    • NotFoundIllustration 컴포넌트를 추가했습니다.
  • src/components/illustrations/ResultGeneratingIllustration.tsx
    • ResultGeneratingIllustration 컴포넌트를 추가했습니다.
  • src/components/illustrations/index.ts
    • 새로운 일러스트레이션 컴포넌트를 내보냈습니다.
  • src/components/tag/Tag.tsx
    • Tag 컴포넌트에 theme prop을 추가했습니다.
  • src/constants/gathering/opinion/category.ts
    • 새로운 CATEGORY 상수 및 관련 타입/리스트를 추가했습니다.
  • src/constants/gathering/opinion/distance.ts
    • DISTANCE_RANGE_WALKING_MINUTES 상수를 추가했습니다.
  • src/constants/gathering/opinion/food.ts
    • 파일을 제거했습니다.
  • src/constants/gathering/opinion/index.ts
    • 새로운 카테고리 및 순위 상수를 사용하도록 내보내기를 업데이트하고, TIME_SLOT_LABELRecommendationResultStatus를 추가했습니다.
  • src/constants/gathering/opinion/mockResults.ts
    • MOCK_RECOMMENDATION_RESULT 구조를 새로운 필드를 포함하도록 업데이트했습니다.
  • src/constants/gathering/opinion/rank.ts
    • RANK 상수 및 관련 타입/리스트를 업데이트했습니다.
  • src/constants/gathering/opinion/recommendationResultStatus.ts
    • RecommendationResultStatus 상수 및 타입을 추가했습니다.
  • src/constants/gathering/opinion/timeSlot.ts
    • TIME_SLOT_LABEL 상수를 추가했습니다.
  • src/hooks/apis/gathering/useGetGatheringCapacity.ts
    • refetchInterval을 제거했습니다.
  • src/hooks/apis/recommendResult/index.ts
    • usePostProceedRecommendResult를 내보냈습니다.
  • src/hooks/apis/recommendResult/usePostProceedRecommendResult.ts
    • usePostProceedRecommendResult 훅을 추가했습니다.
  • src/hooks/gathering/index.ts
    • useProceedRecommendResult를 내보냈습니다.
  • src/hooks/gathering/useOpinionForm.tsx
    • 파일 이름을 .ts에서 .tsx로 변경하고, 폼 필드 이름(dislikedFoodsdislikedCategories로, preferredMenuspreferredCategories로)을 업데이트했으며, 토스트 액션 버튼을 업데이트했습니다.
  • src/hooks/gathering/useProceedRecommendResult.ts
    • 추천 결과 처리 관리를 위한 useProceedRecommendResult 훅을 추가했습니다.
  • src/hooks/sse/ServerSentEventProvider.tsx
    • ServerSentEventProvideruseServerSentEventRegistry를 추가했습니다.
  • src/hooks/sse/index.ts
    • 새로운 SSE 관련 훅 및 컴포넌트를 모두 내보냈습니다.
  • src/hooks/sse/registry.ts
    • SSE 이벤트 핸들러 관리를 위한 EventRegistry 클래스를 추가했습니다.
  • src/hooks/sse/schemas.ts
    • SSE 이벤트 페이로드를 위한 EVENT_SCHEMA 및 관련 타입을 추가했습니다.
  • src/hooks/sse/types.ts
    • SSE를 위한 EVENT 상수 및 EventType을 추가했습니다.
  • src/hooks/sse/useServerSentEventListener.ts
    • useServerSentEventListener 훅을 추가했습니다.
  • src/icons/landingLogoIcon/LandingLogoIcon.tsx
    • LandingLogoIcon 컴포넌트를 추가했습니다.
  • src/icons/landingLogoIcon/index.ts
    • LandingLogoIcon을 내보냈습니다.
  • src/pageComponents/gathering/create/DateStep.tsx
    • TIME_SLOT_LABEL 임포트를 업데이트했습니다.
  • src/pageComponents/gathering/create/PeopleGroup.tsx
    • 애니메이션 사람 캐릭터 표시를 위한 PeopleGroup 컴포넌트를 추가했습니다.
  • src/pageComponents/gathering/create/PeopleStep.tsx
    • PeopleGroup 컴포넌트를 통합했습니다.
  • src/pageComponents/gathering/create/PersonCharacter.tsx
    • PersonCharacter 컴포넌트를 추가했습니다.
  • src/pageComponents/gathering/opinion/CompleteView.tsx
    • 파일을 제거했습니다.
  • src/pageComponents/gathering/opinion/DislikeStep.tsx
    • 파일을 제거했습니다.
  • src/pageComponents/gathering/opinion/DistanceSelector.tsx
    • 파일을 제거했습니다.
  • src/pageComponents/gathering/opinion/FoodCard.tsx
    • 파일 이름을 CategoryCard.tsx로 변경하고 complete/로 이동했습니다.
  • src/pageComponents/gathering/opinion/FoodCategoryCarousel.tsx
    • 파일 이름을 CategoryCarousel.tsx로 변경하고 complete/로 이동했습니다.
  • src/pageComponents/gathering/opinion/IntroStep.tsx
    • 파일을 제거했습니다.
  • src/pageComponents/gathering/opinion/LandingView.tsx
    • 파일을 제거했습니다.
  • src/pageComponents/gathering/opinion/NicknameStep.tsx
    • 파일 이름을 NicknameStep.tsx로 변경하고 form/으로 이동했습니다.
  • src/pageComponents/gathering/opinion/OpinionFormView.tsx
    • 파일 이름을 OpinionFormPage.tsx로 변경하고 form/으로 이동했습니다.
  • src/pageComponents/gathering/opinion/PendingView.tsx
    • 파일을 제거했습니다.
  • src/pageComponents/gathering/opinion/PreferenceStep.tsx
    • 파일을 제거했습니다.
  • src/pageComponents/gathering/opinion/RankChip.tsx
    • 파일 이름을 RankChip.tsx로 변경하고 form/으로 이동했습니다.
  • src/pageComponents/gathering/opinion/RankSection.tsx
    • 파일 이름을 RankSection.tsx로 변경하고 form/으로 이동했습니다.
  • src/pageComponents/gathering/opinion/ResultView.tsx
    • 파일을 제거했습니다.
  • src/pageComponents/gathering/opinion/SubmissionBottomSheet.tsx
    • useGetGatheringCapacity를 사용하도록 업데이트했습니다.
  • src/pageComponents/gathering/opinion/complete/CategoryCard.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/complete/CategoryCarousel.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/complete/CompletePage.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/complete/ShowResultButton.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/complete/index.ts
    • 새로운 컴포넌트를 내보냈습니다.
  • src/pageComponents/gathering/opinion/form/DislikeStep.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/form/DislikedCategoryButton.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/form/DistanceStep.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/form/NicknameStep.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/form/OpinionFormPage.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/form/PreferenceStep.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/form/RankChip.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/form/RankSection.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/form/ToastLinkButton.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/form/index.ts
    • 새로운 컴포넌트를 내보냈습니다.
  • src/pageComponents/gathering/opinion/landing/GatheringDateBadge.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/landing/LandingIntroLottie.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/landing/LandingPage.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/landing/OpinionStartButton.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/landing/index.ts
    • 새로운 컴포넌트를 내보냈습니다.
  • src/pageComponents/gathering/opinion/pending/PendingPage.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/pending/ShareButton.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/pending/ShowResultButton.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/pending/index.ts
    • 새로운 컴포넌트를 내보냈습니다.
  • src/pageComponents/gathering/opinion/result/OtherCandidateCard.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/result/ResultGeneratingPage.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/result/ResultGeneratingSpeechBubble.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/result/ResultPage.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/result/TasteSummaryCard.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/result/VoteSummarySection.tsx
    • 파일을 추가했습니다.
  • src/pageComponents/gathering/opinion/result/index.ts
    • 새로운 컴포넌트를 내보냈습니다.
  • src/pageComponents/gathering/restaurantCard/OtherCandidateCard.tsx
    • 파일 이름을 OtherCandidateCard.tsx로 변경하고 result/로 이동했습니다.
  • src/pageComponents/gathering/restaurantCard/RestaurantCard.tsx
    • 파일을 제거했습니다.
  • src/pageComponents/gathering/restaurantCard/TopRecommendCard.tsx
    • 파일을 제거했습니다.
  • src/pageComponents/gathering/restaurantCard/index.ts
    • 파일을 제거했습니다.
  • src/pageComponents/landing/LandingPage.tsx
    • LandingLogoIcon을 통합했습니다.
  • src/providers/QueryProvider.tsx
    • SSR 호환성을 위해 QueryClient 초기화를 업데이트했습니다.
  • src/schemas/gathering/index.ts
    • 새로운 카테고리 및 선호 카테고리 스키마를 사용하도록 내보내기를 업데이트했습니다.
  • src/schemas/gathering/opinionForm.schema.ts
    • 스키마 필드 이름(dislikedFoodsdislikedCategories로, preferredMenuspreferredCategories로)을 업데이트하고, 선호 카테고리에 대한 유효성 검사를 업데이트했습니다.
  • src/schemas/sse/index.ts
    • 새로운 SSE 스키마를 내보냈습니다.
  • src/schemas/sse/participantCount.schema.ts
    • participantCountSchema를 추가했습니다.
  • src/schemas/sse/recommendResultCreated.schema.ts
    • recommendResultCreatedSchema를 추가했습니다.
  • src/types/gathering/createOpinionForm.ts
    • 폼 필드 이름(dislikedFoodsdislikedCategories로, preferredMenuspreferredCategories로)을 업데이트했습니다.
  • src/types/gathering/foodCategory.ts
    • 파일을 제거했습니다.
  • src/types/gathering/index.ts
    • 새로운 카테고리 및 선호 카테고리 타입을 사용하도록 내보내기를 업데이트했습니다.
  • src/types/gathering/preferredMenu.ts
    • 타입 이름을 PreferredMenu에서 PreferredCategory로 업데이트했습니다.
  • src/types/gathering/recommendationResult.ts
    • RecommendationResult 인터페이스에 status, gathering, distances 필드를 추가했습니다.
  • src/types/gathering/restaurant.ts
    • largeCategory 타입을 Category로 업데이트하고, 레스토랑 세부 정보에 대한 새로운 필드를 추가했습니다.
Ignored Files
  • Ignored by pattern: .gemini/** (1)
    • .gemini/styleguide.md
  • Ignored by pattern: .github/workflows/** (2)
    • .github/workflows/development-deploy.yml
    • .github/workflows/pr-auto-labeler.yml
Activity
  • The pull request was created by RookieAND.
  • No human activity (comments, reviews) has been recorded yet.
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.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

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
Contributor

@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은 SSE 이벤트 시스템을 리팩토링하고, 페이지별 오류 처리 및 컴포넌트 구조를 대대적으로 개선하는 중요한 변경사항을 담고 있습니다. 폴링 방식에서 SSE 기반 실시간 업데이트로 전환하여 사용자 경험을 향상시킨 점과, error.tsxnot-found.tsx 파일을 추가하여 애플리케이션의 안정성을 높인 점이 인상적입니다. 또한, 페이지 및 기능 단위로 컴포넌트를 재구성하여 코드의 유지보수성을 크게 향상시켰습니다. 몇 가지 개선점을 제안드리며, 전반적으로 매우 훌륭한 리팩토링 작업이라고 생각합니다.

@RookieAND RookieAND changed the base branch from main to develop February 27, 2026 06:41
@github-actions github-actions bot added 🔨 Refactor 코드 리팩토링 및 구조 개선 and removed 🔨 Refactor 코드 리팩토링 및 구조 개선 labels Feb 27, 2026
@RookieAND RookieAND merged commit 222e613 into develop Feb 27, 2026
6 checks passed
github-actions bot pushed a commit that referenced this pull request Feb 27, 2026
## [2.0.0-beta.9](v2.0.0-beta.8...v2.0.0-beta.9) (2026-02-27)

### Code Refactoring

* SSE 이벤트를 recommend-result-created로 변경 ([#121](#121)) ([222e613](222e613))
github-actions bot pushed a commit that referenced this pull request Feb 27, 2026
## [2.0.0](v1.5.1...v2.0.0) (2026-02-27)

### ⚠ BREAKING CHANGES

* OpinionForm field names changed

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* refactor: update schema field names and exports

- foodCategorySchema → categorySchema
- dislikedFoodSchema → dislikedCategoriesSchema
- preferredMenusSchema → preferredCategoriesSchema
- Update opinionFormSchema with new field names
- Replace hardcoded "ANY" with CATEGORY.ANY
* Schema field names changed

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* refactor: rename component files to use Category naming

- FoodCard → CategoryCard
- FoodCategoryCarousel → CategoryCarousel
- DislikedFoodButton → DislikedCategoryButton

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* refactor: update component export names

- FoodCard → CategoryCard
- FoodCategoryCarousel → CategoryCarousel
- DislikedFoodButton → DislikedCategoryButton
- Update component function names to match new file names
- Internal logic unchanged (will be updated in next PR)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* refactor: update import references to use new constant names

- Update all components to use new constant names:
  * RANKS → RANK_LIST
  * RANK_LABELS → RANK_LABEL
  * FOOD_CATEGORIES → CATEGORY_LIST
  * FOOD_CATEGORY_LABEL → CATEGORY_LABEL
  * FOOD_CATEGORY_VALUES → CATEGORY_VALUES
  * dislikedFoodSchema → dislikedCategoriesSchema
  * preferredMenusSchema → preferredCategoriesSchema

- Update type imports:
  * FoodCategory → Category

- Update form field references:
  * dislikedFoods → dislikedCategories
  * preferredMenus → preferredCategories

- Fix component imports after file renames:
  * FoodCategoryCarousel → CategoryCarousel
  * DislikedFoodButton → DislikedCategoryButton

This ensures the build succeeds after type system changes.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* style: run prettier format

- Format code according to project prettier rules
- No logic changes, only formatting

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

### Features

* 404, 500 에러 페이지 추가 ([#107](#107)) ([e9e5772](e9e5772))
* opinion 랜딩 페이지 UI 업데이트 (로고·lottie·footer) ([#120](#120)) ([2817c50](2817c50))
* SSE Event Registry 시스템 구현 및 마이그레이션 ([#119](#119)) ([178c79c](178c79c))
* SSE 기반 실시간 모임 현황 업데이트 구현 ([#87](#87)) ([0d220e0](0d220e0))
* 결과 페이지 - 투표 결과 섹션 구현 ([#106](#106)) ([c633225](c633225))
* 과반수 이상 의견 제출 시 추천 결과 생성 관련 API, Hook 추가 ([#103](#103)) ([5b31eec](5b31eec)), closes [#105](#105)
* 인원 수 선택 시 시각적 피드백 추가 ([e9f6de6](e9f6de6))
* 추천 결과 API response 타입 업데이트 ([#100](#100)) ([1d046ab](1d046ab)), closes [#101](#101) [#102](#102)
* 추천 결과 생성 대기 페이지 및 애니메이션 구현 ([#118](#118)) ([a720a76](a720a76))
* 취향 요약 카드 추가 ([#104](#104)) ([816fa96](816fa96))

### Bug Fixes

* 1, 3순위를 선택했으나 2순위를 선택하지 않았을 경우 Validation 을 막지 않았던 문제 수정 ([#113](#113)) ([22e58e8](22e58e8))
* GitHub Actions 워크플로우 개선 및 스타일 가이드 업데이트 ([#91](#91)) ([e6c009e](e6c009e))
* 결과 대기 페이지 내 공유 버튼 스타일을 Tertiary 로 수정 ([#115](#115)) ([a63ddd1](a63ddd1))
* 결과 페이지 - 상단 취향 요약 섹션, 하단 투표 결과 선호 카테고리 노출 순서 로직 수정 ([#117](#117)) ([f5c4a1c](f5c4a1c))
* 모임 인원 초과 및 결과 생성 완료 시 Toast 커스텀 기능 추가 ([#116](#116)) ([6088935](6088935))
* 음식 카테고리 일러스트레이터를 Figma 내 최신 시안으로 수정 ([#114](#114)) ([18f9cc3](18f9cc3))

### Code Refactoring

* opinion 페이지 컴포넌트 구조 개선 및 로직 통합 ([#109](#109)) ([a76f75f](a76f75f))
* PeopleIllustration 캐릭터 배치 및 구조 개선 ([#112](#112)) ([ae95b72](ae95b72))
* ProgressBar 컴포넌트 UI 개선 및 코드 최적화 ([#122](#122)) ([c73de1d](c73de1d))
* SSE 이벤트를 recommend-result-created로 변경 ([#121](#121)) ([222e613](222e613))
* 타입 시스템 리팩토링 - enum을 as const 패턴으로 전환 ([#110](#110)) ([d427378](d427378)), closes [#111](#111)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🔨 Refactor 코드 리팩토링 및 구조 개선

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant