Skip to content

fix: address spot qa feedback#18

Merged
seoJing merged 2 commits into
mainfrom
qa
Jun 6, 2026
Merged

fix: address spot qa feedback#18
seoJing merged 2 commits into
mainfrom
qa

Conversation

@seoJing

@seoJing seoJing commented Jun 6, 2026

Copy link
Copy Markdown
Member

Summary

  • Add a design-system Sonner toaster and wire it into the app layout.
  • Address SPOT QA feedback around AI feed wording/prefill, empty chat copy, toggle styling, bookmark actions, application state, map filtering, and card deck tap/swipe behavior.
  • Add toast feedback for unavailable flows and feed/spot/settlement actions.

Verification

  • pnpm lint passed with existing warnings only.
  • pnpm test passed: 36 files, 159 tests.
  • pnpm build passed.

Notes

  • The card deck change removes accidental detail entry from card tap/left-right flicks; downward swipe still advances to the next card.
  • Previously implemented-but-not-ready routes such as social OAuth and selected My page menus now show a toast instead of moving into broken/empty flows.

Summary by CodeRabbit

릴리스 노트

  • New Features

    • 토스트 알림 시스템 도입으로 로그인, 피드 참여, 북마크, 게시글 생성 등 주요 작업에 대한 즉각적인 피드백 제공
  • Improvements

    • 피드 필터링 옵션 확장으로 검색 및 목록 표시 개선
    • 지도 제스처 상호작용 단순화
    • 미구현 기능에 대한 사용자 안내 메시지 추가
  • UI/UX

    • 채팅방, 피드, 스팟 관련 안내 문구 업데이트
    • 토글 스위치 스타일 조정

@vercel

vercel Bot commented Jun 6, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
frontend Ready Ready Preview, Comment Jun 6, 2026 5:59am

@coderabbitai

coderabbitai Bot commented Jun 6, 2026

Copy link
Copy Markdown

Wondering what really moved? Review this PR in Change Stack to inspect semantic changes, definitions, and references.

Review Change Stack

Warning

Review limit reached

@seoJing, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 46 minutes and 34 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: d3d0695d-ac28-4910-a61c-e203478853fe

📥 Commits

Reviewing files that changed from the base of the PR and between f935915 and 2b3a1ee.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (4)
  • packages/design-system/package.json
  • packages/design-system/src/components/Toaster.tsx
  • src/features/auth/ui/login/SocialLoginButtons.tsx
  • src/features/post/model/use-post-form-prefill.ts
📝 Walkthrough

걸어보기

이 PR은 sonner 토스트 라이브러리를 애플리케이션에 통합하고, 로그인, 피드 참여, 게시물 생성, 지도 상호작용, 스팟 관리 등 전반에 걸쳐 사용자 피드백 토스트를 추가합니다. 또한 지도 제스처 액션을 단순화하고 피드 필터링 옵션을 확장하며, 북마크 기능을 실제 구현으로 교체합니다.

변경 사항

Toast 시스템 통합 및 사용자 피드백 개선

레이어 / 파일(s) 요약
Toast 라이브러리 기반 구축 및 설계 시스템 통합
package.json, packages/design-system/src/components/Toaster.tsx, packages/design-system/src/index.ts, src/app/layout.tsx
sonner 패키지(^2.0.7)를 의존성에 추가하고, AppToaster 래퍼 컴포넌트를 설계 시스템에서 정의하여 위치, 스타일, classNames를 기본값으로 설정한 뒤, 루트 레이아웃에 마운트하여 전역에서 토스트를 사용 가능하게 한다.
인증 및 마이페이지 토스트 피드백
src/features/auth/ui/login/SocialLoginButtons.tsx, src/features/my/client/MyPageClient.tsx, src/features/my/ui/my-page/MyFormControls.tsx
소셜 로그인 버튼에 차단 메시지 토스트를 추가하고, 마이페이지의 미구현 메뉴 항목을 button으로 변환하여 클릭 시 "미구현 기능" 토스트를 표시하며, 토글 UI 스타일을 조정한다.
피드 참여 및 상태 관리 개선
src/features/feed/model/feed-filter.ts, src/features/feed/model/types.ts, src/features/feed/ui/detail/FeedParticipationActions.tsx
FeedMarkerFilter에 excludeApplied/onlyOpenFeeds 옵션을 추가하고, hasActiveApplication으로 상태 판단을 확대하며, 참여 신청/취소 완료 시 toast.success로 피드백을 제공하고, AI 피드의 라우팅 파라미터를 URLSearchParams로 개선한다.
지도 제스처 액션 단순화
src/features/map/model/feed-stack-gesture.ts, src/features/map/model/feed-stack-gesture.test.ts, src/features/map/ui/MapCardDeckOverlay.tsx
FeedStackGestureAction을 'center' | 'next'로 축소하여 detail-left/detail-right를 제거하고, resolveFeedStackGesture에서 velocityX 기반 판정을 제거하여 down-swipe만 판정하며, 관련 테스트와 UI 핸들러를 업데이트한다.
지도 북마크 기능 구현 및 피드 필터링 적용
src/features/map/client/MapClient.tsx, src/features/map/ui/MapFeedInfoCard.tsx, src/features/map/ui/SpotInfoCard.tsx, src/features/map/model/types.ts
MapClient에서 useToggleFeedBookmark 훅으로 실제 북마크 토글을 구현하고, 필터링에 excludeApplied/onlyOpenFeeds를 적용하며, 각 카드의 북마크 콜백을 통합하여 성공/실패 토스트를 표시한다.
게시물 생성 및 채팅방 토스트
src/features/post/client/OfferFormClient.tsx, src/features/post/client/RequestFormClient.tsx, src/features/post/model/use-post-base-form.ts, src/features/post/model/use-post-form-prefill.ts, src/features/chat/api/chat-api.ts
게시물 생성 성공 시 toast.success를 표시하고, 위치 좌표(locationLat/locationLng)를 프리필 대상으로 확장하며, 채팅방 description 기본값을 "아직 메시지가 없어요."로 변경한다.
스팟 액션 및 정산 관리 개선
src/features/spot/ui/detail/ActionBar.tsx, src/features/spot/client/detail/SpotDetailClient.tsx, src/features/spot/client/detail/SettlementSubmitSheet.tsx, src/features/spot/client/detail/SpotSettlementActions.tsx
ActionBar에 canManageSpot과 isBusy 프로퍼티를 추가하고, SpotDetailClient에서 match/cancel/complete 뮤테이션에 onSuccess/onError 콜백으로 토스트 피드백을 제공하며, 제출/승인 로직을 try/catch로 감싸 성공/실패 토스트를 표시한다.

예상 코드 리뷰 난이도

🎯 3 (중간) | ⏱️ ~25 분

관련 PR

  • spot-platform/frontend#11: src/features/map/model/feed-stack-gesture.ts에서 detail-left / detail-right 액션을 제거한 변경이 #11에서 도입한 제스처 타입과 직접 관련된다.
  • spot-platform/frontend#6: src/features/chat/api/chat-api.tstoChatRoom description 변경이 같은 지점에서 중복될 수 있다.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목 'fix: address spot qa feedback'는 변경 사항의 주요 목적(QA 피드백 대응)을 명확하게 전달합니다.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch qa

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@package.json`:
- Line 43: The design-system package imports "sonner" but doesn't declare it,
causing potential resolution failures; add "sonner": "^2.0.7" to the
design-system package.json dependencies (not devDependencies/peerDependencies)
so runtime consumers of the design-system have the dependency available, update
the dependencies object in packages' package.json accordingly and run a
workspace install to verify.

In `@packages/design-system/src/components/Toaster.tsx`:
- Around line 14-25: The current Toaster uses <SonnerToaster toastOptions={...}
{...props} /> so any consumer-supplied props.toastOptions will fully replace the
default toastOptions/classNames; update Toaster.tsx to merge defaults with
incoming props.toastOptions (and specifically merge nested classNames) instead
of shallow-overwriting—locate the toastOptions object in Toaster.tsx and produce
a mergedOptions by deep-merging its defaults with props.toastOptions (e.g.,
merge toastOptions.classNames with props.toastOptions.classNames, then merge
other toastOptions fields), and pass mergedOptions to <SonnerToaster /> while
still spreading {...props} without allowing its toastOptions to override
defaults wholesale.

In `@src/features/auth/ui/login/SocialLoginButtons.tsx`:
- Around line 30-40: The social OAuth links (e.g., the Naver/Google anchors
using naverHref, googleHref) are currently rendered as <a href=...> which allows
users to bypass the blocked flow via "open in new tab"; change these to
interactive buttons instead: replace the anchor elements in the
SocialLoginButtons component with <button type="button"> elements, remove href
attributes, keep the existing onClick handler (showBlockedOAuth) and all
classes/children (icons and text) so styling and behavior remain identical, and
ensure accessibility by preserving role/aria attributes if present.

In `@src/features/post/model/use-post-form-prefill.ts`:
- Around line 44-47: The code currently calls Number(searchParams.get('lat')) /
Number(searchParams.get('lng')) which converts null to 0 and leads to false
positives and the early return (if (!title && !category && !location &&
!content) return undefined) ignoring coordinate-only prefills; change parsing to
first read the raw params (e.g., const latRaw = searchParams.get('lat'), lngRaw
= searchParams.get('lng')), set lat/lng to undefined when the raw value is null
or not a finite number (use Number(...) then check Number.isFinite or
!Number.isNaN), and update the early-return condition to also consider lat and
lng (only return undefined when no title, category, location, content AND lat
and lng are both undefined/invalid) so coordinate-only prefill works correctly.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: f8c34b8d-275c-4a30-a7dd-4ebac472fb2c

📥 Commits

Reviewing files that changed from the base of the PR and between bc1ebd3 and f935915.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (26)
  • package.json
  • packages/design-system/src/components/Toaster.tsx
  • packages/design-system/src/index.ts
  • src/app/layout.tsx
  • src/features/auth/ui/login/SocialLoginButtons.tsx
  • src/features/chat/api/chat-api.ts
  • src/features/feed/model/feed-filter.ts
  • src/features/feed/model/types.ts
  • src/features/feed/ui/detail/FeedParticipationActions.tsx
  • src/features/map/client/MapClient.tsx
  • src/features/map/model/feed-stack-gesture.test.ts
  • src/features/map/model/feed-stack-gesture.ts
  • src/features/map/model/types.ts
  • src/features/map/ui/MapCardDeckOverlay.tsx
  • src/features/map/ui/MapFeedInfoCard.tsx
  • src/features/map/ui/SpotInfoCard.tsx
  • src/features/my/client/MyPageClient.tsx
  • src/features/my/ui/my-page/MyFormControls.tsx
  • src/features/post/client/OfferFormClient.tsx
  • src/features/post/client/RequestFormClient.tsx
  • src/features/post/model/use-post-base-form.ts
  • src/features/post/model/use-post-form-prefill.ts
  • src/features/spot/client/detail/SettlementSubmitSheet.tsx
  • src/features/spot/client/detail/SpotDetailClient.tsx
  • src/features/spot/client/detail/SpotSettlementActions.tsx
  • src/features/spot/ui/detail/ActionBar.tsx
💤 Files with no reviewable changes (1)
  • src/features/map/ui/MapCardDeckOverlay.tsx

Comment thread package.json
Comment thread packages/design-system/src/components/Toaster.tsx Outdated
Comment thread src/features/auth/ui/login/SocialLoginButtons.tsx Outdated
Comment thread src/features/post/model/use-post-form-prefill.ts Outdated
@seoJing seoJing merged commit 27d53fe into main Jun 6, 2026
5 checks passed
@seoJing seoJing deleted the qa branch June 6, 2026 06:07
This was referenced Jun 6, 2026
Merged
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.

1 participant