Skip to content

feat: 결과 페이지 상단 영역 v2 업데이트#102

Merged
youngminss merged 5 commits intofeature/result-page-v2-3-headerfrom
feature/result-page-v2-4-cards
Feb 21, 2026
Merged

feat: 결과 페이지 상단 영역 v2 업데이트#102
youngminss merged 5 commits intofeature/result-page-v2-3-headerfrom
feature/result-page-v2-4-cards

Conversation

@youngminss
Copy link
Member

🎯 PR 제목

feat: 결과 페이지 상단 영역 v2 업데이트

📑 작업 상세 내역

  • 기능 추가
    • 결과 페이지 헤더를 모임 정보 subtitle과 새 타이틀로 변경합니다
    • 모임 날짜("5월 28일"), 지역("홍대입구역"), 시간대("저녁") 정보를 동적으로 표시합니다
    • 페이지 타이틀을 "요기잇의 추천 맛집"에서 "여러분의 취향을 조합해보니..."로 변경합니다
    • date-fnsparse/format을 활용한 타임존 안전한 날짜 포맷팅을 적용합니다

🙏 리뷰 요청 사항

  • date-fns parse를 활용한 날짜 포맷팅이 올바른지 확인해주세요.
  • gathering 데이터가 없는 경우의 처리를 검토해주세요.

📃 참고 자료

  • Figma: node 1834:25853
  • 변경 파일: src/pageComponents/gathering/opinion/ResultView.tsx

🖼️ 작업 결과물

  • 결과 페이지 상단에 모임 정보와 새로운 타이틀이 표시됩니다.

youngminss and others added 2 commits February 22, 2026 01:24
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@youngminss youngminss added the ✨ Feature 기능 개발 label Feb 21, 2026
@youngminss youngminss self-assigned this Feb 21, 2026
@youngminss youngminss requested a review from RookieAND February 21, 2026 16:54
@github-actions github-actions bot added ✨ Feature 기능 개발 and removed ✨ Feature 기능 개발 labels Feb 21, 2026
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @youngminss, 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은 결과 페이지의 상단 영역을 개선하여 사용자에게 더 풍부하고 개인화된 정보를 제공합니다. 모임의 핵심 정보를 동적으로 표시하고, 페이지 타이틀을 더욱 매력적으로 변경함으로써 사용자 경험을 향상시키는 데 중점을 두었습니다. date-fns를 도입하여 날짜 처리의 안정성을 확보했습니다.

Highlights

  • 결과 페이지 헤더 업데이트: 결과 페이지 상단 영역의 헤더를 모임 정보(날짜, 지역, 시간대)를 포함하는 서브타이틀과 새로운 메인 타이틀로 변경했습니다.
  • 동적 모임 정보 표시: 모임의 예정된 날짜, 지역, 시간대 정보를 동적으로 가져와 '5월 28일 홍대입구역 저녁 약속'과 같은 형식으로 표시하도록 구현했습니다.
  • 페이지 타이틀 변경: 기존 '요기잇의 추천 맛집' 타이틀을 '여러분의 취향을 조합해보니...'로 변경하여 사용자에게 더 몰입감 있는 메시지를 전달합니다.
  • 날짜 포맷팅 개선: date-fns 라이브러리의 parseformat 함수를 활용하여 타임존에 안전한 날짜 포맷팅 로직을 적용했습니다.

🧠 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
  • src/pageComponents/gathering/opinion/ResultView.tsx
    • 상수 REGION_LABEL, TIME_SLOT_LABELdate-fnsparse, format 함수를 임포트했습니다.
    • 날짜 문자열을 'M월 d일' 형식으로 포맷하는 formatScheduledDate 유틸리티 함수를 추가했습니다.
    • 기존 h1 헤더를 모임 정보 서브타이틀과 새로운 h1 타이틀을 포함하는 구조로 변경했습니다.
Activity
  • 아직 기록된 활동이 없습니다.
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.

@github-actions github-actions bot added the ☑️ Need Review 작업이 완료되어 리뷰를 기다리고 있는 PR 입니다 label Feb 21, 2026
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

결과 페이지 상단 영역 업데이트에 대한 리뷰입니다. date-fns를 사용한 날짜 포맷팅과 gathering 데이터 처리 관련하여 두 가지 개선점을 제안했습니다. formatScheduledDate 함수가 유효하지 않은 날짜 문자열에 대해 더 안정적으로 동작하도록 수정하고, gathering 데이터가 없을 경우에도 앱이 중단되지 않도록 조건부 렌더링을 추가하는 것이 좋겠습니다.

Comment on lines +57 to +60
const formatScheduledDate = (dateStr: string): string => {
const date = parse(dateStr, "yyyy-MM-dd", new Date());
return format(date, "M월 d일");
};
Copy link
Contributor

Choose a reason for hiding this comment

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

high

date-fnsparse 함수는 유효하지 않은 날짜 문자열에 대해 Invalid Date 객체를 반환할 수 있고, 이 객체를 format 함수에 전달하면 런타임 에러가 발생합니다. try...catch 블록을 추가하여 예기치 않은 데이터 형식으로 인한 앱 충돌을 방지하는 것이 좋습니다.

const formatScheduledDate = (dateStr: string): string => {
	try {
		const date = parse(dateStr, "yyyy-MM-dd", new Date());
		return format(date, "M월 d일");
	} catch {
		console.error(`Invalid date string received: ${dateStr}`);
		return dateStr;
	}
};

Copy link
Member Author

Choose a reason for hiding this comment

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

반영 (0b2a990)

Comment on lines +67 to +76
<div className="ygi:flex ygi:flex-col ygi:gap-2 ygi:py-6">
<span className="ygi:caption-12-rg ygi:text-text-secondary">
{formatScheduledDate(recommendationResult.gathering.scheduledDate)}{" "}
{REGION_LABEL[recommendationResult.gathering.region]}{" "}
{TIME_SLOT_LABEL[recommendationResult.gathering.timeSlot]} 약속
</span>
<h1 className="ygi:heading-22-bd ygi:text-text-primary">
여러분의 취향을 조합해보니...
</h1>
</div>
Copy link
Contributor

Choose a reason for hiding this comment

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

high

recommendationResult.gathering 데이터가 없는 경우를 처리해달라는 리뷰 요청 사항을 확인했습니다. 현재 코드에서는 gathering 객체가 없으면 scheduledDate 속성에 접근할 때 런타임 에러가 발생하여 앱이 중단될 수 있습니다. gathering 데이터가 있을 때만 모임 정보를 표시하도록 span 태그를 조건부 렌더링으로 감싸는 것이 안전합니다.

				<div className="ygi:flex ygi:flex-col ygi:gap-2 ygi:py-6">
					{recommendationResult.gathering && (
						<span className="ygi:caption-12-rg ygi:text-text-secondary">
							{formatScheduledDate(recommendationResult.gathering.scheduledDate)}{' '}
							{REGION_LABEL[recommendationResult.gathering.region]}{' '}
							{TIME_SLOT_LABEL[recommendationResult.gathering.timeSlot]} 약속
						</span>
					)}
					<h1 className="ygi:heading-22-bd ygi:text-text-primary">
						여러분의 취향을 조합해보니...
					</h1>
				</div>

Copy link
Member Author

Choose a reason for hiding this comment

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

recommendationResult.gathering 이 nullable 한 케이스는 일단 없어서 조건부 렌더링 처리하지 않는다.
(단, 런타임 에러 가능성 불안함때문에 에러 로깅 도입할지 고민 필요)

@youngminss youngminss merged commit ce3be96 into feature/result-page-v2-3-header Feb 21, 2026
10 checks passed
youngminss added a commit that referenced this pull request Feb 21, 2026
* feat: timeSlot 한국어 레이블 및 거리 → 도보 시간 상수 추가

* fix: constants 타입 안전성 강화 및 TIME_SLOT_LABEL 중복 제거

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

* feat: 결과 페이지 상단 영역 v2 업데이트 (모임 정보 + 새 타이틀)

* chore: 스타일 수정, 코드 포맷팅

* feat: 결과 페이지 상단 영역 v2 업데이트 (#102)

* feat: 결과 페이지 맛집 카드 및 섹션 타이틀 v2 업데이트

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

* refactor: TopRecommendCard 제거 및 스타일 정리

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

* chore: Restaurant List Section 스타일 수정

* fix: formatScheduledDate 예외 처리 추가

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>
youngminss added a commit that referenced this pull request Feb 21, 2026
* feat: 추천 결과 API response 타입 업데이트

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

* feat: timeSlot 레이블 및 도보 시간 상수 추가 (#101)

* feat: timeSlot 한국어 레이블 및 거리 → 도보 시간 상수 추가

* fix: constants 타입 안전성 강화 및 TIME_SLOT_LABEL 중복 제거

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

* feat: 결과 페이지 상단 영역 v2 업데이트 (모임 정보 + 새 타이틀)

* chore: 스타일 수정, 코드 포맷팅

* feat: 결과 페이지 상단 영역 v2 업데이트 (#102)

* feat: 결과 페이지 맛집 카드 및 섹션 타이틀 v2 업데이트

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

* refactor: TopRecommendCard 제거 및 스타일 정리

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

* chore: Restaurant List Section 스타일 수정

* fix: formatScheduledDate 예외 처리 추가

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>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
github-actions bot pushed a commit that referenced this pull request Feb 21, 2026
## [1.5.0-beta.3](v1.5.0-beta.2...v1.5.0-beta.3) (2026-02-21)

### Features

* 추천 결과 API response 타입 업데이트 ([#100](#100)) ([1d046ab](1d046ab)), closes [#101](#101) [#102](#102)
github-actions bot pushed a commit that referenced this pull request Feb 22, 2026
## [1.6.0-beta.1](v1.5.0...v1.6.0-beta.1) (2026-02-22)

### Features

* 추천 결과 API response 타입 업데이트 ([#100](#100)) ([1d046ab](1d046ab)), closes [#101](#101) [#102](#102)

### Bug Fixes

* GitHub Actions 워크플로우 개선 및 스타일 가이드 업데이트 ([#91](#91)) ([e6c009e](e6c009e))
* nicknameSchema 내 Error Message 에 작성되었던 오류 메세지 오타 수정 ([e2ee69e](e2ee69e))
* 불호 선택 스텝 내 설명 수정 ([d7975ab](d7975ab))
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

✨ Feature 기능 개발 ☑️ Need Review 작업이 완료되어 리뷰를 기다리고 있는 PR 입니다

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant