From c33af2399e9de004d0ed0a46f77725c9f02dd636 Mon Sep 17 00:00:00 2001 From: soyeong Date: Tue, 8 Sep 2026 21:01:16 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=ED=86=A0=EB=84=88=EB=A8=BC?= =?UTF-8?q?=ED=8A=B8=20=EB=AA=A9=EB=A1=9D=20API=20=ED=83=80=EC=9E=85=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/e2e/mocks/tournament.ts | 4 ++-- apps/web/src/types/tournament.ts | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/web/e2e/mocks/tournament.ts b/apps/web/e2e/mocks/tournament.ts index 9285ef7b..ad1cffd3 100644 --- a/apps/web/e2e/mocks/tournament.ts +++ b/apps/web/e2e/mocks/tournament.ts @@ -19,8 +19,8 @@ export const MOCK_TOURNAMENT_LIST: GetTournamentListResponseT = [ name: 'E2E 토너먼트', status: 'PENDING', createdAt: '2026-01-01T00:00:00Z', - /** 가짜 URL — fixture 가 가로채 로컬 이미지로 응답한다 (e2e/mocks/images.ts) */ - participantProfileImages: [MOCK_IMAGE_URLS.avatar], + participantCount: 1, + playerCount: 0, thumbnailUrls: [], }, ]; diff --git a/apps/web/src/types/tournament.ts b/apps/web/src/types/tournament.ts index 8f9043a4..47993f19 100644 --- a/apps/web/src/types/tournament.ts +++ b/apps/web/src/types/tournament.ts @@ -39,7 +39,8 @@ export type GetTournamentListResponseT = { name: string; status: TournamentStatusT; createdAt: string; - participantProfileImages: string[]; + participantCount: number; + playerCount: number; thumbnailUrls: string[]; }[]; From f82189615e78d96422755977de5f5bfa01f88fd1 Mon Sep 17 00:00:00 2001 From: soyeong Date: Tue, 8 Sep 2026 21:01:25 +0900 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=ED=86=A0=EB=84=88=EB=A8=BC?= =?UTF-8?q?=ED=8A=B8=20=EC=B9=B4=EB=93=9C=20=EC=B0=B8=EC=97=AC=EC=9E=90=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20UI=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_components/TournamentHistoryList.tsx | 4 ++-- .../_components/tournament-list/client.tsx | 4 ++-- .../src/components/tournament-card/index.tsx | 22 +++++++++++-------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/apps/web/src/app/archive/tournament/_components/TournamentHistoryList.tsx b/apps/web/src/app/archive/tournament/_components/TournamentHistoryList.tsx index 80454429..e1115ae0 100644 --- a/apps/web/src/app/archive/tournament/_components/TournamentHistoryList.tsx +++ b/apps/web/src/app/archive/tournament/_components/TournamentHistoryList.tsx @@ -36,8 +36,8 @@ function TournamentHistoryList({ statuses, playType, statusTab }: Props) { tournamentId={tournament.tournamentId} status={tournament.status} name={tournament.name} - profileImageUrls={tournament.participantProfileImages} - participantCount={tournament.participantProfileImages.length} + participantCount={tournament.participantCount} + playerCount={tournament.playerCount} scrollRestoration={{ namespace: SCROLL_NAMESPACE.ARCHIVE_TOURNAMENT, scope: statusTab }} /> ))} diff --git a/apps/web/src/app/home/_components/tournament-list/client.tsx b/apps/web/src/app/home/_components/tournament-list/client.tsx index 6bd50a2d..1d0f5dcc 100644 --- a/apps/web/src/app/home/_components/tournament-list/client.tsx +++ b/apps/web/src/app/home/_components/tournament-list/client.tsx @@ -32,8 +32,8 @@ function TournamentListClient({ isGuest = false }: TournamentListClientProps) { tournamentId={tournament.tournamentId} status={tournament.status} name={tournament.name} - profileImageUrls={tournament.participantProfileImages} - participantCount={tournament.participantProfileImages.length} + participantCount={tournament.participantCount} + playerCount={tournament.playerCount} showMorePopover={false} /> ))} diff --git a/apps/web/src/components/tournament-card/index.tsx b/apps/web/src/components/tournament-card/index.tsx index 983440de..714a8274 100644 --- a/apps/web/src/components/tournament-card/index.tsx +++ b/apps/web/src/components/tournament-card/index.tsx @@ -1,8 +1,8 @@ import Link from 'next/link'; import type { MouseEvent } from 'react'; +import { PersonIconFill } from '@/assets/icons'; import StatusChip from '@/components/status-chip'; -import UserProfileGroup from '@/components/user-profile-group'; import { ROUTES } from '@/consts/route'; import type { TournamentStatusT } from '@/types/tournament'; import { cn } from '@/utils/cn'; @@ -16,12 +16,12 @@ type TournamentCardProps = { tournamentId: number; status: TournamentStatusT; name: string; - profileImageUrls: string[]; /** 토너먼트 아이템 썸네일. 최대 2개. */ imageUrls: string[]; - maxProfiles?: number; - /** 본인 포함 참여자 수. 2명 이상이면 더보기에 '친구 목록 보기' 메뉴 노출. */ - participantCount?: number; + /** 본인 포함 함께 담은 참여자 수. 2명 이상이면 더보기에 '친구 목록 보기' 메뉴 노출. */ + participantCount: number; + /** 실제로 플레이한 인원 수 */ + playerCount: number; className?: string; showMorePopover?: boolean; scrollRestoration?: ScrollRestorationTargetT; @@ -31,10 +31,9 @@ function TournamentCard({ tournamentId, status, name, - profileImageUrls, imageUrls = [], - maxProfiles = 3, participantCount, + playerCount, className, showMorePopover = true, scrollRestoration, @@ -76,7 +75,7 @@ function TournamentCard({ -
+
@@ -94,7 +93,12 @@ function TournamentCard({ )}
- +
+ + 함께 담은 {participantCount} +
+ 플레이한 {playerCount} +
); From 79b216c0ef8a4f5b2edf9e4f75017efb8cc0f1a3 Mon Sep 17 00:00:00 2001 From: soyeong Date: Tue, 8 Sep 2026 21:46:22 +0900 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20playerCount=20=E2=86=92=20playedCoun?= =?UTF-8?q?t=20=ED=95=84=EB=93=9C=EB=AA=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/e2e/mocks/tournament.ts | 2 +- .../tournament/_components/TournamentHistoryList.tsx | 2 +- .../web/src/app/home/_components/tournament-list/client.tsx | 2 +- apps/web/src/components/tournament-card/index.tsx | 6 +++--- apps/web/src/types/tournament.ts | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/web/e2e/mocks/tournament.ts b/apps/web/e2e/mocks/tournament.ts index ad1cffd3..efb952d1 100644 --- a/apps/web/e2e/mocks/tournament.ts +++ b/apps/web/e2e/mocks/tournament.ts @@ -20,7 +20,7 @@ export const MOCK_TOURNAMENT_LIST: GetTournamentListResponseT = [ status: 'PENDING', createdAt: '2026-01-01T00:00:00Z', participantCount: 1, - playerCount: 0, + playedCount: 0, thumbnailUrls: [], }, ]; diff --git a/apps/web/src/app/archive/tournament/_components/TournamentHistoryList.tsx b/apps/web/src/app/archive/tournament/_components/TournamentHistoryList.tsx index e1115ae0..d9b7073d 100644 --- a/apps/web/src/app/archive/tournament/_components/TournamentHistoryList.tsx +++ b/apps/web/src/app/archive/tournament/_components/TournamentHistoryList.tsx @@ -37,7 +37,7 @@ function TournamentHistoryList({ statuses, playType, statusTab }: Props) { status={tournament.status} name={tournament.name} participantCount={tournament.participantCount} - playerCount={tournament.playerCount} + playedCount={tournament.playedCount} scrollRestoration={{ namespace: SCROLL_NAMESPACE.ARCHIVE_TOURNAMENT, scope: statusTab }} /> ))} diff --git a/apps/web/src/app/home/_components/tournament-list/client.tsx b/apps/web/src/app/home/_components/tournament-list/client.tsx index 1d0f5dcc..29b211a0 100644 --- a/apps/web/src/app/home/_components/tournament-list/client.tsx +++ b/apps/web/src/app/home/_components/tournament-list/client.tsx @@ -33,7 +33,7 @@ function TournamentListClient({ isGuest = false }: TournamentListClientProps) { status={tournament.status} name={tournament.name} participantCount={tournament.participantCount} - playerCount={tournament.playerCount} + playedCount={tournament.playedCount} showMorePopover={false} /> ))} diff --git a/apps/web/src/components/tournament-card/index.tsx b/apps/web/src/components/tournament-card/index.tsx index 714a8274..a4cae54c 100644 --- a/apps/web/src/components/tournament-card/index.tsx +++ b/apps/web/src/components/tournament-card/index.tsx @@ -21,7 +21,7 @@ type TournamentCardProps = { /** 본인 포함 함께 담은 참여자 수. 2명 이상이면 더보기에 '친구 목록 보기' 메뉴 노출. */ participantCount: number; /** 실제로 플레이한 인원 수 */ - playerCount: number; + playedCount: number; className?: string; showMorePopover?: boolean; scrollRestoration?: ScrollRestorationTargetT; @@ -33,7 +33,7 @@ function TournamentCard({ name, imageUrls = [], participantCount, - playerCount, + playedCount, className, showMorePopover = true, scrollRestoration, @@ -97,7 +97,7 @@ function TournamentCard({ 함께 담은 {participantCount}
- 플레이한 {playerCount} + 플레이한 {playedCount}
diff --git a/apps/web/src/types/tournament.ts b/apps/web/src/types/tournament.ts index 47993f19..019f7082 100644 --- a/apps/web/src/types/tournament.ts +++ b/apps/web/src/types/tournament.ts @@ -40,7 +40,7 @@ export type GetTournamentListResponseT = { status: TournamentStatusT; createdAt: string; participantCount: number; - playerCount: number; + playedCount: number; thumbnailUrls: string[]; }[]; From b6ba90c24e3d08c38bbfe73f1a9616eb2b373306 Mon Sep 17 00:00:00 2001 From: soyeong Date: Tue, 8 Sep 2026 21:47:12 +0900 Subject: [PATCH 4/4] =?UTF-8?q?style:=20=ED=86=A0=EB=84=88=EB=A8=BC?= =?UTF-8?q?=ED=8A=B8=20=EC=B9=B4=EB=93=9C=20=EC=9D=B8=EC=9B=90=EC=88=98=20?= =?UTF-8?q?=ED=85=8D=EC=8A=A4=ED=8A=B8=20=EC=83=89=EC=83=81=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/components/tournament-card/index.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/web/src/components/tournament-card/index.tsx b/apps/web/src/components/tournament-card/index.tsx index a4cae54c..0f7121aa 100644 --- a/apps/web/src/components/tournament-card/index.tsx +++ b/apps/web/src/components/tournament-card/index.tsx @@ -95,9 +95,13 @@ function TournamentCard({
- 함께 담은 {participantCount} + + 함께 담은 {participantCount} +
- 플레이한 {playedCount} + + 플레이한 {playedCount} +