Skip to content

[Feature/review] 업체 상세 리뷰 드로어 도입 및 Google 리뷰 출처 표기 적용#206

Merged
Yunil-dev merged 2 commits intodevelopfrom
feature/review
May 8, 2026
Merged

[Feature/review] 업체 상세 리뷰 드로어 도입 및 Google 리뷰 출처 표기 적용#206
Yunil-dev merged 2 commits intodevelopfrom
feature/review

Conversation

@Yunil-dev
Copy link
Copy Markdown
Contributor

📝 관련 문서 레퍼런스

- [Issue] : #205 
- [Slack] : 
- [Notion] : 

💻 주요 변경 사항은 무엇인가요?


- guest review source, country, tag 상수화
- guest review 모델 source 필드 반영
- Google 리뷰 하단 안내 문구 노출 적용
- 업체 상세 리뷰 미리보기 5건 제한 적용
- More 및 카드 클릭 시 우측 리뷰 드로어 노출 적용
- 리뷰 목록 본문 공용 컴포넌트 분리
- 상세 페이지 review-list 번역 namespace 추가
- 전체 리뷰 목록 필터 및 무한스크롤 로직 공용화


📚 추가된 라이브러리

- [추가] : NO

📱 결과 화면 (선택)


🙇 코드 리뷰 중점사항, 예상되는 문제점 (선택)

-

@Yunil-dev Yunil-dev self-assigned this May 8, 2026
@vercel
Copy link
Copy Markdown

vercel Bot commented May 8, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
meditrip-web Ready Ready Preview, Comment May 8, 2026 9:21am

Request Review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 8, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 13dad24c-93d5-4748-bb0c-b8cf75ec8524

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@Yunil-dev Yunil-dev merged commit d154cf5 into develop May 8, 2026
4 checks passed
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

This pull request refactors the company review display by extracting the review list logic into a shared CompanyReviewListContent component, which is now utilized by both the main review page and a newly introduced CompanyReviewDrawer. The changes also include support for displaying review sources (e.g., Google Reviews) and adding localized strings for English, Japanese, and Korean. Feedback focuses on removing redundant client-side filtering that duplicates server-side logic, localizing the hardcoded "Google Reviews" label, and improving the "My Country Only" filter behavior when a user's country is unknown. Additionally, specific localization improvements were suggested for the Japanese and Korean translations of the "More" button.

Comment on lines +71 to +83
const filteredReviews = useMemo(() => {
let list = reviewList;

if (withPhotos) {
list = list.filter((review) => (review.image_urls?.length ?? 0) > 0);
}

if (myCountryOnly && country) {
list = list.filter((review) => review.customer_country === country);
}

return list;
}, [reviewList, withPhotos, myCountryOnly, country]);
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

The local filtering logic here is redundant because the queryParams (lines 32-41) already include these filter criteria (with_photos, my_country_only, country), which are passed to the infinite query. Since this is an infinite scroll implementation, client-side filtering can lead to inconsistent results or empty pages if the server-side pagination doesn't align perfectly with the client-side filter. It is better to rely solely on the server-side filtering provided by the API.

  const filteredReviews = reviewList;

Comment thread messages/ko/review.json
"reviewImageAlt": "리뷰 이미지 {index}",
"googleSourceNotice": "* 이 리뷰는 {source}에서 수집되었어요.",
"moreOptions": "더보기",
"viewMore": "More",
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

The translation for viewMore is set to "More" in Korean. Usually, "더보기" is more appropriate for a Korean localized UI. Please check if this was intended or if it should be translated.

Suggested change
"viewMore": "More",
"viewMore": "더보기",

Comment thread messages/ja/review.json
"reviewImageAlt": "レビュー画像 {index}",
"googleSourceNotice": "* このレビューは{source}から収集されました。",
"moreOptions": "その他のオプション",
"viewMore": "More",
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

The translation for viewMore is set to "More" in Japanese. Usually, "もっと見る" or "詳細" is more appropriate. Please check if this was intended.

Suggested change
"viewMore": "More",
"viewMore": "もっと見る",


const GUEST_REVIEW_SOURCE_LABELS: Record<GuestReviewSource, string | null> = {
in_app: null,
google: 'Google Reviews',
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Hardcoding the label "Google Reviews" here prevents it from being translated. Since this label is used within a translated string in the Card component, it should also be managed via the i18n system to ensure consistency across different languages (e.g., "Google 리뷰" in Korean).

Comment on lines +123 to +131
type="button"
css={[filterToggle, myCountryOnly && filterToggleActive]}
onClick={() => setMyCountryOnly((prev) => !prev)}
>
<Check width={14} height={14} />
<Text typo="button_S" color={myCountryOnly ? 'primary50' : 'text_secondary'}>
{t('myCountryOnly')}
</Text>
</button>
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

The "My Country Only" filter button is active even when the user's country is unknown (e.g., when not logged in). Clicking it in this state won't change the results because country is undefined in queryParams. Consider disabling or hiding this filter if country is not available.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant