Skip to content

refactor: 죽은 합류 다이얼로그·프로필 SVG fallback 정리 및 게스트 배너 일러스트 단일화 - #540

Merged
iOdiO89 merged 8 commits into
devfrom
refactor/539-remove-dead-join-confirm
Aug 20, 2026
Merged

refactor: 죽은 합류 다이얼로그·프로필 SVG fallback 정리 및 게스트 배너 일러스트 단일화#540
iOdiO89 merged 8 commits into
devfrom
refactor/539-remove-dead-join-confirm

Conversation

@iOdiO89

@iOdiO89 iOdiO89 commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

작업 요약

  • 실행될 수 없는 합류 확인 다이얼로그 잔재(MemberJoinConfirmDialog·joinSession)를 삭제합니다
  • 프로필 기본 SVG fallback을 제거하고 표시용 UserT를 필수 필드(id: string·name·imageUrl) 타입으로 정리합니다
  • 결과 화면 게스트 배너의 절대배치 SVG 3개를 단일 일러스트 에셋으로 통합합니다
  • 죽은 상수·불필요 export를 정리하고 piki:inviteSent localStorage 키에 수명 관리를 추가합니다
  • 컴포넌트 타입 파일 컨벤션을 .types.ts로 분리하고 미사용 .cursorrules를 삭제합니다

작업 세부 내용

1. 실행 불가한 합류 확인 다이얼로그 잔재 삭제

  • MemberJoinConfirmDialog는 sessionStorage piki:joinConfirm 키를 읽어야 열리는데, writer(setJoinConfirm)가 feat: 소셜 토너먼트 전체 (4개 PR 통합 — #142/#156/#159/#163) #167 내부 리워크(9f032ee)에서 삭제된 뒤 두 달간 렌더링될 수 없는 상태였습니다. 현재 합류 확인/환영 UI는 ?action=WELCOME_JOIN 쿼리 기반 WelcomeJoinDialog가 담당합니다
  • MemberJoinConfirmDialog.tsx, joinSession.ts(reader·orphan writeJson 포함), TournamentCreateClientconfirmPayload state·렌더 블록을 삭제했습니다

2. 프로필 기본 SVG fallback 제거 (서버가 이미지 URL 항상 보장)

  • 서버가 게스트 포함 모든 유저에게 profileImage를 항상 내려주는 것을 확인하고, 도달 불가능한 방어 분기를 걷어냈습니다
    • UserProfile: imageUrl 없을 때 blue/yellow SVG를 그리던 분기 삭제 — 항상 이미지 렌더링
    • FriendListDialog: pickProfileType 해시 함수와 profileImage truthy 분기 삭제, 로컬 타입을 profileImage: string 필수로 좁힘
    • ParticipantChip?? '익명', ParticipantPanelimageUrl truthy flatMap 가드도 같은 이유로 제거
  • 표시용 UserTuserProfile.const.tsuserProfile.types.ts로 옮기고 { id: string; name: string; imageUrl: string } 전부 필수로 정리했습니다 (PROFILE_SVG·ProfileTypeT·profileType 삭제)

3. 결과 게스트 배너 일러스트 단일 에셋 통합

  • 절대배치로 조합하던 SVG 3개(노랑 얼굴 + 그룹 일러스트 + 초록 얼굴)를 디자인이 제공한 단일 에셋 result-guest-banner-illustration.svg(87×53)로 교체했습니다 (피그마 node 1183-19928 대조)
  • 미사용이 된 에셋 4개 삭제: user-profile-blue/yellow/green.svg, result-guest-banner-group.svg — 이로써 assets/images 미사용 에셋 0건

4. 죽은 상수·불필요 export 정리 + inviteSent 키 수명 관리

  • 참조 0건인 ENDPOINTS.USER_PROFILE_IMAGE 삭제, PlateShareDialog의 인라인 /play/{id} 중복을 죽어있던 ROUTES.PLAY_FROM_LINK 상수 사용으로 교체
  • 파일 내부에서만 쓰이는 ScrollAnchorT·InstagramStoryShareResultTexport 제거
  • piki:inviteSent:{id} 키는 지우는 코드가 없어 영구 누적됐습니다. clearInviteSent()를 추가해 담기 마감 정책이 끝나는 두 시점(토너먼트 시작·삭제 성공)에 정리하고, 전역 훅(useDeleteTournament)에서 쓰게 되어 유틸을 create/_utils/src/utils/로 승격했습니다

5. 문서·기타

  • CLAUDE.md 컨벤션 갱신: 컴포넌트 폴더의 상수는 .const.ts, 타입은 .types.ts로 분리
  • Cursor를 사용하지 않아 CLAUDE.md와 중복 관리되던 .cursorrules 삭제
  • 담기 카운트다운 칩 세로 패딩 py-1py-1.5 보정 (#538에서 누락된 시안 수치)

참고

  • QA에서 발견된 "참여자 결과 화면에 전체 결과 보기 미노출"은 클라 이슈가 아니라 서버의 progressive gate(완료 인원 ≥ 2, core#456) 동작으로 확인했습니다. tournamentResponse.ts:110의 옛 스펙 주석("참여자 2명 이상이면 true") 정정은 별도 처리가 필요합니다

연관 이슈

closes #539

Summary by CodeRabbit

  • 변경 사항
    • 토너먼트 참가 확인 단계가 간소화되어 별도 확인 창이 표시되지 않습니다.
    • 토너먼트 시작 또는 삭제 시 초대 전송 상태가 자동으로 정리됩니다.
    • 사용자 프로필 이미지 표시 방식이 일관되게 개선되었습니다.
    • 결과 화면의 게스트 배너 일러스트가 새 디자인으로 변경되었습니다.
    • 플레이 링크 공유 시 환경에 맞는 주소가 생성됩니다.
    • 참가자 패널의 이미지가 없는 경우에도 표시 처리가 안정화되었습니다.
    • 입금 카운트다운 영역의 세로 여백이 소폭 조정되었습니다.

@vercel

vercel Bot commented Aug 20, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
piki Ready Ready Preview Aug 20, 2026 6:06am

@github-actions

Copy link
Copy Markdown

Discord 스레드 연동용 메타데이터입니다. discord-pr-bot 워크플로가 자동 생성하며, 수정·삭제하면 PR 과 Discord 알림 연동이 끊깁니다.

@coderabbitai

coderabbitai Bot commented Aug 20, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 9aee8ac0-1ca2-4780-a62c-b64fde14e7fa

📥 Commits

Reviewing files that changed from the base of the PR and between 4481468 and 71f3e3d.

⛔ Files ignored due to path filters (5)
  • apps/web/src/assets/images/result-guest-banner-group.svg is excluded by !**/*.svg
  • apps/web/src/assets/images/result-guest-banner-illustration.svg is excluded by !**/*.svg
  • apps/web/src/assets/images/user-profile-blue.svg is excluded by !**/*.svg
  • apps/web/src/assets/images/user-profile-green.svg is excluded by !**/*.svg
  • apps/web/src/assets/images/user-profile-yellow.svg is excluded by !**/*.svg
📒 Files selected for processing (21)
  • .cursorrules
  • CLAUDE.md
  • apps/web/src/app/tournament/[id]/create/_components/TournamentCreateClient.tsx
  • apps/web/src/app/tournament/[id]/create/_components/deposit-countdown/DepositCountdown.tsx
  • apps/web/src/app/tournament/[id]/create/_components/invite-friends/InviteFriendsDialog.tsx
  • apps/web/src/app/tournament/[id]/create/_components/member-join-confirm-dialog/MemberJoinConfirmDialog.tsx
  • apps/web/src/app/tournament/[id]/create/_components/participant-panel/ParticipantChip.tsx
  • apps/web/src/app/tournament/[id]/create/_components/participant-panel/ParticipantPanel.tsx
  • apps/web/src/app/tournament/[id]/create/_hooks/usePostTournamentStart.ts
  • apps/web/src/app/tournament/[id]/result/_components/ResultGuestBanner.tsx
  • apps/web/src/app/tournament/[id]/result/_components/plate-share-dialog/PlateShareDialog.tsx
  • apps/web/src/app/tournament/join/_utils/joinSession.ts
  • apps/web/src/components/tournament-card/FriendListDialog.tsx
  • apps/web/src/components/user-profile-group/UserProfile.tsx
  • apps/web/src/components/user-profile-group/userProfile.const.ts
  • apps/web/src/components/user-profile-group/userProfile.types.ts
  • apps/web/src/consts/api.ts
  • apps/web/src/hooks/useDeleteTournament.ts
  • apps/web/src/hooks/useInstagramStoryShare.ts
  • apps/web/src/utils/inviteSentSession.ts
  • apps/web/src/utils/scrollRestoration.ts
💤 Files with no reviewable changes (5)
  • apps/web/src/consts/api.ts
  • .cursorrules
  • apps/web/src/app/tournament/[id]/create/_components/member-join-confirm-dialog/MemberJoinConfirmDialog.tsx
  • apps/web/src/components/user-profile-group/userProfile.const.ts
  • apps/web/src/app/tournament/join/_utils/joinSession.ts

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

구형 합류 확인 플로우와 프로필 fallback을 제거했다. 사용자 타입과 초대 세션 정리 유틸리티를 분리했다. 토너먼트 시작·삭제 성공 시 초대 상태를 삭제한다. 결과 배너와 플레이 링크 경로도 갱신했다.

Changes

토너먼트 합류 및 초대 흐름

Layer / File(s) Summary
구형 합류 확인 흐름 제거
apps/web/src/app/tournament/[id]/create/_components/TournamentCreateClient.tsx, apps/web/src/app/tournament/[id]/create/_components/member-join-confirm-dialog/MemberJoinConfirmDialog.tsx, apps/web/src/app/tournament/join/_utils/joinSession.ts
confirmPayload, consumeJoinConfirmFor, MemberJoinConfirmDialog 렌더링과 관련 세션 구현을 제거했다.
초대 세션 상태 정리
apps/web/src/utils/inviteSentSession.ts, apps/web/src/app/tournament/[id]/create/_components/invite-friends/InviteFriendsDialog.tsx, apps/web/src/app/tournament/[id]/create/_hooks/usePostTournamentStart.ts, apps/web/src/hooks/useDeleteTournament.ts
토너먼트별 초대 전송 상태를 localStorage에서 삭제하는 clearInviteSent를 추가했다. 토너먼트 시작과 삭제 성공 시 해당 상태를 정리한다.

프로필 표시 및 타입 정리

Layer / File(s) Summary
프로필 타입과 이미지 표시 정리
apps/web/src/components/user-profile-group/userProfile.types.ts, apps/web/src/components/user-profile-group/userProfile.const.ts, apps/web/src/components/user-profile-group/UserProfile.tsx, apps/web/src/components/tournament-card/FriendListDialog.tsx, apps/web/src/app/tournament/[id]/create/_components/participant-panel/*
UserT를 별도 타입 파일로 이동했다. SVG fallback과 조건부 프로필 이미지 처리를 제거하고 imageUrl을 직접 사용한다.

기타 UI 및 규칙 갱신

Layer / File(s) Summary
결과 화면과 링크 경로 갱신
apps/web/src/app/tournament/[id]/result/_components/ResultGuestBanner.tsx, apps/web/src/app/tournament/[id]/result/_components/plate-share-dialog/PlateShareDialog.tsx
게스트 배너를 단일 SVG 일러스트로 교체했다. 플레이 링크는 ROUTES.PLAY_FROM_LINK를 사용한다.
프로젝트 규칙과 내부 타입 정리
CLAUDE.md, .cursorrules, apps/web/src/hooks/useInstagramStoryShare.ts, apps/web/src/utils/scrollRestoration.ts, apps/web/src/consts/api.ts, apps/web/src/app/tournament/[id]/create/_components/deposit-countdown/DepositCountdown.tsx
.cursorrules를 삭제했다. 컴포넌트 파일 규칙을 갱신하고 내부 전용 타입의 export와 사용하지 않는 API 상수를 제거했다. 카운트다운 패딩을 조정했다.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk: ⚪ Minimal · up to 71f3e

This refactor removes unreachable UI and unused assets, tightens display types, consolidates an illustration, and adds invite-state cleanup; no actionable merge-blocking risk remains.

Possibly related issues

  • TeamPiKi/client 537 — 구형 합류 확인 다이얼로그, joinSession.ts, 프로필 fallback 정리를 다룬다.

Possibly related PRs

  • TeamPiKi/client#436 — 초대 합류 흐름 통합과 기존 합류 확인 로직 제거에 직접 연결된다.
  • TeamPiKi/client#412 — 초대 세션 및 합류 흐름 변경을 함께 다룬다.
  • TeamPiKi/client#385 — 게스트 합류 후 토너먼트 생성 화면으로 이어지는 흐름과 관련된다.

Suggested labels: chore

Suggested reviewers: ychany

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning #539와 직접 관련 없는 문서 삭제, 초대 상태 정리, 카운트다운 패딩, 라우트·엔드포인트·export 변경이 포함되었습니다. #539와 무관한 변경을 별도 PR로 분리하거나, 해당 변경을 설명하는 관련 이슈를 연결하십시오.
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 (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목이 합류 확인 다이얼로그, 프로필 SVG fallback, 게스트 배너 일러스트 변경을 명확히 요약합니다.
Linked Issues check ✅ Passed #539의 다이얼로그, joinSession, confirmPayload, 프로필 fallback 및 관련 타입·상수 정리 요구사항을 충족합니다.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/539-remove-dead-join-confirm

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.

@iOdiO89
iOdiO89 merged commit 6b98383 into dev Aug 20, 2026
11 checks passed
@iOdiO89
iOdiO89 deleted the refactor/539-remove-dead-join-confirm branch August 20, 2026 06:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

refactor Extra attention is needed WEB

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor: 합류 확인 다이얼로그 잔재(죽은 코드) 정리

1 participant