화면·요소 색인6단계

커밋 28982422 생성 2026-08-24 12:17 화면 119 · 요소 1,070 · API 214
이 단계에서 볼 수 있는 것

세 축 + 상태·권한 + 오버레이. 🟢 는 근거·구현·검증이 모두 있는 것 — 닫아도 되는 칸이다.

이 문서는 같은 색인에서 만든 여러 보기 중 하나입니다 — 여정 지도는 사용자 흐름을, 백엔드·흐름 지도와 오픈 체크리스트는 API와 실행 관문을 보여주고, 이 목록은 전부를 한 자리에 둡니다. 모두 같은 번호·같은 색을 씁니다. 번호를 누르면 복사되고, 그 번호로 에이전트에게 지시하면 됩니다. 끊긴 자리는 고장이 아니라 물어볼 자리입니다.
✔확인함70!미확인479✕실패28?출처 불명0◍숨겨짐0□안 만듦0·판정 불가493 요소 1,070개 기준 · 색만으로 읽지 않게 기호를 같이 붙였습니다

요약 지금 세어진 것

119
화면
이 중 공용 52
1,070
요소
버튼·링크·입력창 등
90
라우트
주소 개수
214
백엔드 API
서로 다른 주소 173개
146
백엔드까지 이어진 요소
전체 요소의 14% — 나머지는 화면 안에서 끝난다
0
옛 번호 물려받음

채워야 할 것 결함 목록이 아니라 작업 목록입니다

아래 숫자는 “고장난 개수”가 아닙니다. 아직 아무도 채우지 않은 칸의 개수입니다. 이 칸들이 비어 있는 동안에는 그 요소에 색을 칠할 근거가 없습니다 — 즉 2단계로 갈 수 없습니다.

4 위치가 흔들리는 요소
전체 요소의 0%

코드에서 이 요소를 가리키는 표식이 약해, 파일이 바뀌면 번호가 엉뚱한 곳을 가리킬 수 있다. 표식을 심어야 번호가 오래 간다.

41 테스트가 지목할 수 없는 요소
전체 요소의 4%

현재 Reader가 자동 테스트와 이 요소를 안정적으로 결속할 표식(test id 등)을 찾지 못했다. 다른 selector나 runtime 근거가 있을 수 있어 미검출을 미검증으로 단정하지 않는다.

1,053 이름이 없는 요소
전체 요소의 98%

화면에 글자 없이 아이콘만 있거나 번역 키가 안 잡힌 것. 대표님이 말로 지칭할 이름이 없다.

798 설명이 없는 요소
전체 요소의 75%

"이게 무엇을 하는가"를 한 줄로 쓴 사람이 아직 없다. 기계가 못 만드는 칸이라 사람이 채워야 한다.

안 이어진 것 2단계의 핵심 — 결함 목록이 아니라 물어볼 목록입니다

아래 셋은 서로 다른 이야기입니다. 한 덩어리로 읽으면 “다 고장났다”로 잘못 읽힙니다. 아무도 안 부르는 API, 화면은 부르는데 누를 버튼이 없는 API, 버튼은 있는데 뒤가 없는 화면 — 각각 해야 할 일이 다릅니다.

32 화면 연결 미검출 API
전체 백엔드 API의 15%

백엔드에는 있지만 현재 정적 Reader가 화면 호출 연결을 찾지 못했다.

할 일 — 서버·CLI·worker·외부 연동 진입점인지, 동적 호출을 추출하지 못했는지, 실제 미사용 후보인지 근거를 확인한다. 이 숫자만으로 삭제하지 않는다.

30 요소 연결 미검출 API
전체 백엔드 API의 14%

화면 수준 호출은 찾았지만 현재 정적 Reader가 특정 요소와의 연결을 찾지 못했다.

할 일 — 화면 초기 조회처럼 요소가 필요 없는 정상 호출인지, 동적 handler를 놓쳤는지, 실제 UI 연결이 빠졌는지 확인한다.

44 API 연결 미검출 화면
전체 화면의 37%

요소는 찾았지만 현재 정적 Reader가 이 화면의 API 호출 연결을 찾지 못했다.

할 일 — API 없이 동작하는 정상 화면인지, 동적 호출을 놓쳤는지, 실제 구현 연결이 빠졌는지 화면별 근거로 확인한다.

41 진입 경로 미검출 화면
전체 주소가 있는 화면의 61%

주소는 있지만 현재 정적 Reader가 이 화면으로 가는 링크를 찾지 못했다.

할 일 — 동적 navigation을 놓쳤는지, 직접 URL·외부 진입점인지, 의도적으로 숨긴 화면인지 확인한다.

0 신분이 갈리는 호출

같은 창구를 부르는데 어떤 곳은 신분을 싣고 어떤 곳은 안 싣는다.

할 일 — 같은 사람의 화면끼리 갈리면 설계로 설명이 안 된다 — 안 싣는 쪽이 401을 받고 있을 수 있다. 실제로 그런 일이 있었다.

10 실패를 삼키는 자리

가져오다 실패해도 빈 값으로 갈음한다 — 화면은 멀쩡해 보인다.

할 일 — 빈 목록이 '없음'인지 '못 가져옴'인지 사용자가 구분할 수 없다. 이 도구의 색이 절대 못 잡는 자리다 — 여기만은 사람이 봐야 한다.

화면 연결 미검출 API 32개 전부 보기 백엔드에는 있지만 현재 정적 Reader가 화면 호출 연결을 찾지 못했다.
번호메서드경로핸들러테스트
BE-0020 DELETE /api/v1/stadiums/{id}/reviews/{reviewId}
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:190
deleteReview 없음
BE-0026 GET /api/v1/admin/clubs
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminClubController.java:34
getClubs 없음
BE-0032 GET /api/v1/admin/engagements
sports-pie-main-api/src/main/java/com/sportspie/common/controller/AdminEngagementController.java:34
getEngagements 없음
BE-0033 GET /api/v1/admin/facilities
sports-pie-main-api/src/main/java/com/sportspie/facility/controller/AdminFacilityController.java:41
getFacilities 없음
BE-0039 GET /api/v1/admin/me
sports-pie-main-api/src/main/java/com/sportspie/user/controller/AdminMeController.java:30
me 없음
BE-0041 GET /api/v1/admin/posts
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminPostController.java:26
getPosts 없음
BE-0042 GET /api/v1/admin/promotion-labels
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/AdminPromotionLabelController.java:41
getPromotionLabels 없음
BE-0043 GET /api/v1/admin/promotions
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/AdminPromotionController.java:43
getPromotions 없음
BE-0045 GET /api/v1/admin/reports
sports-pie-main-api/src/main/java/com/sportspie/report/controller/AdminReportController.java:29
getReports 없음
BE-0050 GET /api/v1/admin/stadium-reservations
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumReservationController.java:45
getReservations 없음
BE-0054 GET /api/v1/admin/stadiums
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:75
getStadiums 없음
BE-0061 GET /api/v1/admin/stadiums/{id}/reviews
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:210
getReviews 없음
BE-0064 GET /api/v1/admin/stadiums/{stadiumId}/posts
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumPostController.java:40
list 없음
BE-0067 GET /api/v1/admin/users
sports-pie-main-api/src/main/java/com/sportspie/user/controller/AdminUserController.java:37
getUsers 없음
BE-0070 GET /api/v1/clubs
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:50
list 없음
BE-0075 GET /api/v1/clubs/{id}/posts
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:218
posts 없음
BE-0088 GET /api/v1/home/popular-stadiums
sports-pie-main-api/src/main/java/com/sportspie/home/controller/HomeController.java:53
popularStadiums 없음
BE-0112 GET /api/v1/stadiums
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:50
list 없음
BE-0115 GET /api/v1/stadiums/{id}/posts
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:128
posts 없음
BE-0117 GET /api/v1/stadiums/{id}/reviews
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:109
reviews 없음
BE-0154 PATCH /api/v1/stadiums/{id}/reviews/{reviewId}
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:178
updateReview 없음
BE-0173 POST /api/v1/auth/email/otp/send
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:127
sendEmailOtp 없음
BE-0174 POST /api/v1/auth/email/otp/verify
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:134
verifyEmailOtp 없음
BE-0175 POST /api/v1/auth/find-id
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:165
findId 없음
BE-0176 POST /api/v1/auth/login
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:188
login 없음
BE-0177 POST /api/v1/auth/logout
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:214
logout 없음
BE-0180 POST /api/v1/auth/password/reset
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:156
resetPassword 없음
BE-0181 POST /api/v1/auth/password/reset/otp
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:147
sendPasswordResetOtp 없음
BE-0182 POST /api/v1/auth/refresh
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:198
refresh 없음
BE-0183 POST /api/v1/auth/signup
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:176
signup 없음
BE-0184 POST /api/v1/auth/social
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:111
socialLogin 없음
BE-0225 POST /api/v1/stadiums/{id}/reviews
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:167
createReview 없음
요소 연결 미검출 API 30개 보기 화면 수준 호출은 찾았지만 현재 정적 Reader가 특정 요소와의 연결을 찾지 못했다.
번호메서드경로핸들러부르는 화면
BE-0023 GET /api/feedback/guest/unread-count
sports-pie-main-api/src/main/java/com/sportspie/feedback/controller/FeedbackController.java:50
getUnreadCount SH-S31
BE-0031 GET /api/v1/admin/dashboard
sports-pie-main-api/src/main/java/com/sportspie/common/controller/AdminDashboardController.java:108
getDashboardData AD-S01SH-S01
BE-0051 GET /api/v1/admin/stadium-reservations/today-count
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumReservationController.java:35
getTodayReservationCount AD-S12
BE-0055 GET /api/v1/admin/stadiums/status-counts
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:105
getStatusCounts AD-S12
BE-0058 GET /api/v1/admin/stadiums/{id}/description/translations
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:142
getDescriptionTranslations AD-S13
BE-0060 GET /api/v1/admin/stadiums/{id}/promotion-labels
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:283
getPromotionLabels AD-S13
BE-0068 GET /api/v1/admin/users/{id}
sports-pie-main-api/src/main/java/com/sportspie/user/controller/AdminUserController.java:70
getUser AD-S08
BE-0084 GET /api/v1/home/banners
sports-pie-main-api/src/main/java/com/sportspie/home/controller/HomeController.java:41
banners SH-S23
BE-0085 GET /api/v1/home/hot-events
sports-pie-main-api/src/main/java/com/sportspie/home/controller/HomeController.java:67
hotEvents US-S02
BE-0087 GET /api/v1/home/mega-events
sports-pie-main-api/src/main/java/com/sportspie/home/controller/HomeController.java:80
megaEvents US-S02
BE-0089 GET /api/v1/home/recommended-clubs
sports-pie-main-api/src/main/java/com/sportspie/home/controller/HomeController.java:92
recommendedClubs US-S02
BE-0096 GET /api/v1/me/notification-settings
sports-pie-main-api/src/main/java/com/sportspie/user/controller/UserController.java:69
getNotificationSettings US-S32
BE-0097 GET /api/v1/me/notifications
sports-pie-main-api/src/main/java/com/sportspie/notification/controller/NotificationController.java:30
list SH-S34SH-S36
BE-0098 GET /api/v1/me/notifications/unread-count
sports-pie-main-api/src/main/java/com/sportspie/notification/controller/NotificationController.java:47
unreadCount US-S02
BE-0099 GET /api/v1/me/profile
sports-pie-main-api/src/main/java/com/sportspie/user/controller/UserController.java:36
getProfile US-S02US-S10US-S34
BE-0103 GET /api/v1/oauth/authorize-info
sports-pie-main-api/src/main/java/com/sportspie/oauth/controller/OauthController.java:54
authorizeInfo US-S25
BE-0111 GET /api/v1/promotions/{id}/engagement
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/PromotionController.java:90
engagement SH-S44
BE-0114 GET /api/v1/stadiums/{id}/availability
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:98
availability US-S36
BE-0116 GET /api/v1/stadiums/{id}/posts/{postId}
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:144
postDetail US-S38
BE-0150 PATCH /api/v1/me/notification-settings
sports-pie-main-api/src/main/java/com/sportspie/user/controller/UserController.java:80
updateNotificationSettings US-S32
BE-0151 PATCH /api/v1/me/notifications/read
sports-pie-main-api/src/main/java/com/sportspie/notification/controller/NotificationController.java:59
markAllRead SH-S34SH-S36
BE-0189 POST /api/v1/clubs/{id}/bookmarks
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:482
toggleClubBookmark US-S04US-S06
BE-0190 POST /api/v1/clubs/{id}/likes
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:470
toggleClubLike US-S04US-S06
BE-0218 POST /api/v1/promotions/{id}/bookmark
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/PromotionController.java:81
bookmark SH-S44
BE-0219 POST /api/v1/promotions/{id}/like
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/PromotionController.java:72
like SH-S44
BE-0220 POST /api/v1/reports
sports-pie-main-api/src/main/java/com/sportspie/report/controller/ReportController.java:34
create SH-S20
BE-0222 POST /api/v1/stadiums/{id}/bookmark
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:218
bookmark US-S04US-S36
BE-0223 POST /api/v1/stadiums/{id}/like
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:208
like US-S04US-S36
BE-0224 POST /api/v1/stadiums/{id}/reservations
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:156
reserve US-S36
BE-0244 POST /api/v1/stadiums/reservations/{reservationId}/payment-invoice
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:317
reissuePaymentInvoice US-S29
API 연결 미검출 화면 44개 보기 요소는 찾았지만 현재 정적 Reader가 이 화면의 API 호출 연결을 찾지 못했다.
번호화면주소레인요소
AD-S02 NotFound /admin/* 관리자 웹 1
AD-S06 LoginPage /admin/login 관리자 웹 6
AD-S07 MembersPage /admin/members 관리자 웹 13
AD-S25 StandardPackagePage /admin/standard-package 관리자 웹 2
SH-S03 UserAppPreview 여러 화면에 공용 공용 UI 3
SH-S06 ClubEventsSection 여러 화면에 공용 공용 UI 1
SH-S07 ClubInfoSection 여러 화면에 공용 공용 UI 3
SH-S12 StadiumLocationPicker 여러 화면에 공용 공용 UI 1
SH-S13 EntryTableOverlay 여러 화면에 공용 공용 UI 6
SH-S14 ZoneCard 여러 화면에 공용 공용 UI 1
SH-S15 StadiumNoticePreview 여러 화면에 공용 공용 UI 3
SH-S16 ClubTab 여러 화면에 공용 공용 UI 2
SH-S17 AvatarCropDialog 여러 화면에 공용 공용 UI 3
SH-S19 FirstRunPreferenceSheet 여러 화면에 공용 공용 UI 4
SH-S21 FilterSheet 여러 화면에 공용 공용 UI 4
SH-S24 BottomSheetShell 여러 화면에 공용 공용 UI 2
SH-S25 Button 여러 화면에 공용 공용 UI 1
SH-S26 DatePickerSheet 여러 화면에 공용 공용 UI 3
SH-S27 HorizontalCarousel 여러 화면에 공용 공용 UI 2
SH-S28 Input 여러 화면에 공용 공용 UI 1
SH-S29 ToastContainer 여러 화면에 공용 공용 UI 1
SH-S30 ClubPromoBanner 여러 화면에 공용 공용 UI 2
SH-S32 AuthHeader 여러 화면에 공용 공용 UI 1
SH-S33 DetailHeader 여러 화면에 공용 공용 UI 1
SH-S35 HomeTopBar 여러 화면에 공용 공용 UI 3
SH-S37 HotEvents 여러 화면에 공용 공용 UI 2
SH-S38 MegaHero 여러 화면에 공용 공용 UI 1
SH-S39 PopularStadiums 여러 화면에 공용 공용 UI 2
SH-S40 RecommendedClubs 여러 화면에 공용 공용 UI 3
SH-S41 SportSheet 여러 화면에 공용 공용 UI 2
SH-S42 BottomNav 여러 화면에 공용 공용 UI 1
SH-S43 LegalDocumentSheet 여러 화면에 공용 공용 UI 2
SH-S45 BookingModal 여러 화면에 공용 공용 UI 6
SH-S46 PaymentModal 여러 화면에 공용 공용 UI 2
SH-S47 StadiumInfo 여러 화면에 공용 공용 UI 1
SH-S54 AdminLayout 여러 화면에 공용 공용 UI 15
SH-S55 StadiumSelector 여러 화면에 공용 공용 UI 3
US-S01 NotFoundPage * 사용자 웹 2
US-S15 ClubListPage /club/list 사용자 웹 7
US-S20 LoginPage /login 사용자 웹 12
US-S21 LoginRecoveryPage /login/find-id /login/find-password 사용자 웹 9
US-S22 MapPage /map 사용자 웹 9
US-S26 PgPaymentFlowReviewPage /pg-review/payment-flow 사용자 웹 2
US-S33 SignUpPage /signup 사용자 웹 11
진입 경로 미검출 화면 41개 보기 주소는 있지만 현재 정적 Reader가 이 화면으로 가는 링크를 찾지 못했다.

확실 1개 — 주소가 화면 코드 어디에도 글자로조차 안 나옵니다. 아마 40개 — 가리키는 링크는 못 찾았지만 주소가 글자로는 나옵니다.

번호화면주소확신 · 코드에 나온 조각
US-S01 NotFoundPage * 확실
AD-S01 DashboardPage /admin 아마 /admin
AD-S02 NotFound /admin/* 아마 /admin
AD-S03 ClubsPage /admin/clubs 아마 /admin/clubs
AD-S04 ClubDetailPage /admin/clubs/:id 아마 /admin/clubs
AD-S05 DesignGuidePage /admin/design-guide 아마 /admin
AD-S06 LoginPage /admin/login 아마 /admin/login
AD-S07 MembersPage /admin/members 아마 /admin
AD-S08 MemberDetailPage /admin/members/:id 아마 /admin
AD-S09 PostsPage /admin/posts 아마 /admin/posts
AD-S10 BannersPage /admin/posts/banners 아마 /admin/posts
AD-S11 PromotionsPage /admin/promotions 아마 /admin/promotions
AD-S12 StadiumsPage /admin/stadiums 아마 /admin/stadiums
AD-S13 StadiumInfoPage /admin/stadiums/:id /admin/stadiums/:id/info 아마 /admin/stadiums /admin/stadiums
AD-S14 StadiumBoardPage /admin/stadiums/:id/board 아마 /admin/stadiums
AD-S15 StadiumBoardDetailPage /admin/stadiums/:id/board/:postId 아마 /admin/stadiums
AD-S16 StadiumBoardWritePage /admin/stadiums/:id/board/:postId/edit /admin/stadiums/:id/board/write 아마 /admin/stadiums /admin/stadiums
AD-S17 StadiumReservationsDetailPage /admin/stadiums/:id/reservations 아마 /admin/stadiums
AD-S18 StadiumReviewsPage /admin/stadiums/:id/reviews 아마 /admin/stadiums
AD-S19 StadiumSettlementPage /admin/stadiums/:id/settlement 아마 /admin/stadiums
AD-S20 StadiumZonesPage /admin/stadiums/:id/zones 아마 /admin/stadiums
AD-S21 StadiumCodesPage /admin/stadiums/codes /admin/stadiums/codes/* /admin/stadiums/codes/board /admin/stadiums/codes/board/:postId /admin/stadiums/codes/board/:postId/edit /admin/stadiums/codes/board/write /admin/stadiums/codes/info /admin/stadiums/codes/reservations /admin/stadiums/codes/reviews /admin/stadiums/codes/settlement /admin/stadiums/codes/zones /admin/system/facilities 아마 /admin/stadiums /admin/stadiums /admin/stadiums /admin/stadiums /admin/stadiums /admin/stadiums /admin/stadiums /admin/stadiums /admin/stadiums /admin/stadiums /admin/stadiums /admin
AD-S22 StadiumRegisterPage /admin/stadiums/register 아마 /admin/stadiums
AD-S23 StadiumReservationsPage /admin/stadiums/reservations 아마 /admin/stadiums
AD-S24 ReservationDetailPage /admin/stadiums/reservations/:id 아마 /admin/stadiums
AD-S25 StandardPackagePage /admin/standard-package 아마 /admin
AD-S26 SystemPage /admin/system /admin/system/admin-log /admin/system/admins /admin/system/codes /admin/system/i18n /admin/system/menus /admin/system/permissions /admin/system/stadium-managers /admin/system/user-log 아마 /admin /admin /admin /admin /admin /admin /admin /admin /admin
AD-S27 IntegrationSettingsPage /admin/system/integrations 아마 /admin
AD-S28 SystemSettingsPage /admin/system/settings 아마 /admin
US-S04 ActivityFavoritesPage /activity/favorites 아마 /activity/favorites
US-S09 ClubBoardWritePage /club/:id/board/write 아마 /club
US-S17 EventsPage /events 아마 /events
US-S22 MapPage /map 아마 /map
US-S23 MegaEventListPage /mega-event 아마 /mega-event
US-S24 MegaEventDetailPage /mega-event/:id 아마 /mega-event
US-S25 OauthAuthorizePage /oauth/authorize 아마 /oauth/authorize
US-S26 PgPaymentFlowReviewPage /pg-review/payment-flow 아마 /pg-review
US-S27 ProfilePage /profile 아마 /profile
US-S30 PromotionsPage /promotions 아마 /promotions
US-S31 PromotionDetailPage /promotions/:id 아마 /promotions
US-S40 PaymentResultPage /payment/result 아마 /payment

이 목록은 없는 것을 세는 검사라 눈이 나쁘면 곧바로 틀립니다. 지금 목적지를 못 푼 링크가 12건 있습니다 — 그중 하나가 위 화면을 가리키고 있을 수 있습니다. 그래서 '확실'과 '아마'를 나눠 적습니다.

신분이 갈리는 호출 0건 보기 같은 창구를 부르는데 어떤 곳은 신분을 싣고 어떤 곳은 안 싣는다.

해당 없음.

실패를 삼키는 자리 10곳 보기 가져오다 실패해도 빈 값으로 갈음한다 — 화면은 멀쩡해 보인다.
화면자리무엇을 부르다무엇으로 갈음
AD-S17 stadium-reservations.tsx:170 fetchStadiumDetail(Number(id)) null
AD-S18 reviews.tsx:67 fetchStadiumDetail(Number(id)) null
SH-S44 PromotionDetailView.tsx:156 fetchPromotionEngagement(promotion.id).then((state) => { if … undefined
SH-S54 AdminLayout.tsx:155 http.post("/api/v1/auth/logout") undefined
US-S07 page.tsx:58 fetchClubDetail(clubId).then((detail) => { if (generation !=… setClub(null)
US-S08 page.tsx:98 .fetchClubDetail(clubId).then((c) => { if (generation === re… setClubName(null)
US-S13 page.tsx:235 fetchClubDetail(clubId).then((club) => { if (generation === … setClubRole(null)
US-S29 page.tsx:511 loadReservations() undefined
US-S29 page.tsx:524 .await loadReservations() undefined
US-S37 page.tsx:98 fetchStadiumDetail(stadiumId).then((detail) => { if (!cancel… undefined

여기는 색이 절대 못 잡는 자리입니다. 테스트도 통과하고 화면도 그려지니 초록이 됩니다 — 그런데 서버가 오류를 내도 사용자는 빈 목록을 봅니다. "없음"인지 "못 가져옴"인지 구분할 방법이 없습니다.

백엔드 API 214개 중 0개(0%)가 sports-pie-main-api/src/main/java/com/sportspie/SportsPieMainApiApplication.java 한 파일 안에 있습니다.

지도에서 이 파일 하나가 거의 모든 선을 물고 있다는 뜻입니다. 이 파일을 건드리는 작업은 전부 서로를 밟습니다 — 한 번에 한 사람만 손댈 수 있고, 고장나면 여기서 같이 고장납니다.

화면 목록 레인별 · 화면을 누르면 요소가 펼쳐집니다

종류: B 버튼 775 · L 링크 38 · F 입력창 184 · C 선택 48 · T 표 25 · D 표시 · M 창 · N 알림

반복 코드 자리는 하나인데 화면에서는 여러 개로 보입니다 (목록 안에서 그려지는 요소) — 카드가 두 장이어도 번호는 하나입니다.  카드 카드 전체가 하나의 링크입니다 — 이름 칸이 비어 있어도 정상입니다.  → BE-#### 는 그 요소가 부르는 백엔드 API 번호이고, 빈 칸은 아직 이어진 곳을 못 찾았다는 뜻입니다.

백엔드 목록 API 번호 214개 · 위 검색창에 BE-0169 처럼 넣으면 걸립니다

백엔드 API 214개 보기 번호 · 메서드 · 경로 · 핸들러 · 부르는 요소 · 테스트
번호메서드경로핸들러부르는 요소테스트
BE-0001 DELETE /api/v1/admin/banners/{id}
sports-pie-main-api/src/main/java/com/sportspie/banner/controller/AdminBannerController.java:62
deleteBanner 2 0
BE-0002 DELETE /api/v1/admin/clubs/{clubId}/posts/{postId}/comments/{commentId}
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminClubController.java:72
deleteComment 1 0
BE-0003 DELETE /api/v1/admin/facilities/{id}
sports-pie-main-api/src/main/java/com/sportspie/facility/controller/AdminFacilityController.java:78
deleteFacility 1 0
BE-0004 DELETE /api/v1/admin/posts/{postId}
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminPostController.java:41
deletePost 1 0
BE-0005 DELETE /api/v1/admin/promotion-labels/{id}
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/AdminPromotionLabelController.java:78
deletePromotionLabel 1 0
BE-0006 DELETE /api/v1/admin/promotions/{id}
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/AdminPromotionController.java:95
deletePromotion 1 0
BE-0007 DELETE /api/v1/admin/stadiums/{id}/images
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:399
removeImage 1 0
BE-0008 DELETE /api/v1/admin/stadiums/{stadiumId}/posts/{postId}
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumPostController.java:105
delete 2 0
BE-0009 DELETE /api/v1/admin/stadiums/{stadiumId}/zones/{zoneId}
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:441
deleteZone 1 0
BE-0010 DELETE /api/v1/clubs/{id}
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:128
delete 1 0
BE-0011 DELETE /api/v1/clubs/{id}/applications/me
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:205
cancelMyApplication 1 0
BE-0012 DELETE /api/v1/clubs/{id}/membership
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:152
leave 1 0
BE-0013 DELETE /api/v1/clubs/{id}/posts/{postId}
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:275
deletePost 1 0
BE-0014 DELETE /api/v1/clubs/{id}/posts/{postId}/comments/{commentId}
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:317
deleteComment 1 0
BE-0015 DELETE /api/v1/clubs/{id}/schedules/{schedId}
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:381
deleteSchedule 1 0
BE-0018 DELETE /api/v1/me
sports-pie-main-api/src/main/java/com/sportspie/user/controller/UserController.java:114
withdraw 1 0
BE-0019 DELETE /api/v1/stadiums/reservations/{reservationId}
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:257
cancelReservation 1 0
BE-0020 DELETE /api/v1/stadiums/{id}/reviews/{reviewId}
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:190
deleteReview 0 0
BE-0021 GET /api/feedback/board/entries
sports-pie-main-api/src/main/java/com/sportspie/feedback/controller/AdminFeedbackController.java:92
boardListEntries 1 0
BE-0022 GET /api/feedback/guest/entries
sports-pie-main-api/src/main/java/com/sportspie/feedback/controller/FeedbackController.java:35
getEntries 6 0
BE-0023 GET /api/feedback/guest/unread-count
sports-pie-main-api/src/main/java/com/sportspie/feedback/controller/FeedbackController.java:50
getUnreadCount 0 0
BE-0024 GET /api/v1/admin/banners
sports-pie-main-api/src/main/java/com/sportspie/banner/controller/AdminBannerController.java:30
getAllBanners 4 0
BE-0026 GET /api/v1/admin/clubs
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminClubController.java:34
getClubs 0 0
BE-0027 GET /api/v1/admin/clubs/{clubId}/posts/{postId}/comments
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminClubController.java:61
getComments 1 0
BE-0028 GET /api/v1/admin/clubs/{id}
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminClubController.java:85
getClub 2 0
BE-0029 GET /api/v1/admin/clubs/{id}/applications
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminClubController.java:150
getApplications 1 0
BE-0030 GET /api/v1/admin/clubs/{id}/translations
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminClubController.java:104
getTranslations 1 0
BE-0031 GET /api/v1/admin/dashboard
sports-pie-main-api/src/main/java/com/sportspie/common/controller/AdminDashboardController.java:108
getDashboardData 0 0
BE-0032 GET /api/v1/admin/engagements
sports-pie-main-api/src/main/java/com/sportspie/common/controller/AdminEngagementController.java:34
getEngagements 0 0
BE-0033 GET /api/v1/admin/facilities
sports-pie-main-api/src/main/java/com/sportspie/facility/controller/AdminFacilityController.java:41
getFacilities 0 0
BE-0034 GET /api/v1/admin/feedback/entries
sports-pie-main-api/src/main/java/com/sportspie/feedback/controller/AdminFeedbackController.java:26
adminListEntries 0 0
BE-0035 GET /api/v1/admin/feedback/entries/{id}/completion-checks
sports-pie-main-api/src/main/java/com/sportspie/feedback/controller/AdminFeedbackController.java:83
adminListCompletionChecks 0 0
BE-0036 GET /api/v1/admin/integrations
sports-pie-main-api/src/main/java/com/sportspie/common/integration/controller/AdminIntegrationSettingController.java:38
getIntegrations 2 0
BE-0039 GET /api/v1/admin/me
sports-pie-main-api/src/main/java/com/sportspie/user/controller/AdminMeController.java:30
me 0 0
BE-0040 GET /api/v1/admin/oauth/clients
sports-pie-main-api/src/main/java/com/sportspie/oauth/controller/AdminOauthClientController.java:37
list 0 0
BE-0041 GET /api/v1/admin/posts
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminPostController.java:26
getPosts 0 0
BE-0042 GET /api/v1/admin/promotion-labels
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/AdminPromotionLabelController.java:41
getPromotionLabels 0 0
BE-0043 GET /api/v1/admin/promotions
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/AdminPromotionController.java:43
getPromotions 0 0
BE-0044 GET /api/v1/admin/promotions/{id}
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/AdminPromotionController.java:58
getPromotion 1 0
BE-0045 GET /api/v1/admin/reports
sports-pie-main-api/src/main/java/com/sportspie/report/controller/AdminReportController.java:29
getReports 0 0
BE-0047 GET /api/v1/admin/settings
sports-pie-main-api/src/main/java/com/sportspie/common/setting/controller/AdminSystemSettingController.java:23
getAllSettings 2 0
BE-0048 GET /api/v1/admin/settlements/stadiums/{stadiumId}
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminSettlementStubController.java:48
getSettlementsByStadium 2 0
BE-0049 GET /api/v1/admin/settlements/{id}/faktur
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminSettlementStubController.java:33
getFakturPajak 1 0
BE-0050 GET /api/v1/admin/stadium-reservations
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumReservationController.java:45
getReservations 0 0
BE-0051 GET /api/v1/admin/stadium-reservations/today-count
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumReservationController.java:35
getTodayReservationCount 0 0
BE-0052 GET /api/v1/admin/stadium-reservations/{id}
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumReservationController.java:65
getReservation 3 0
BE-0053 GET /api/v1/admin/stadium-reservations/{id}/history
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumReservationController.java:169
getHistory 3 0
BE-0054 GET /api/v1/admin/stadiums
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:75
getStadiums 0 0
BE-0055 GET /api/v1/admin/stadiums/status-counts
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:105
getStatusCounts 0 0
BE-0056 GET /api/v1/admin/stadiums/{id}/admins
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:271
getStadiumAdmins 0 0
BE-0057 GET /api/v1/admin/stadiums/{id}/bookmarks
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:259
getBookmarkUsers 1 0
BE-0058 GET /api/v1/admin/stadiums/{id}/description/translations
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:142
getDescriptionTranslations 0 0
BE-0059 GET /api/v1/admin/stadiums/{id}/likes
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:247
getLikeUsers 1 0
BE-0060 GET /api/v1/admin/stadiums/{id}/promotion-labels
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:283
getPromotionLabels 0 0
BE-0061 GET /api/v1/admin/stadiums/{id}/reviews
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:210
getReviews 0 0
BE-0062 GET /api/v1/admin/stadiums/{id}/settlement-account
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:310
getSettlementAccount 2 0
BE-0063 GET /api/v1/admin/stadiums/{id}/settlement/summary
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumSettlementController.java:59
getSettlementSummary 2 0
BE-0064 GET /api/v1/admin/stadiums/{stadiumId}/posts
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumPostController.java:40
list 0 0
BE-0065 GET /api/v1/admin/stadiums/{stadiumId}/posts/summary
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumPostController.java:56
summary 3 0
BE-0066 GET /api/v1/admin/stadiums/{stadiumId}/posts/{postId}
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumPostController.java:68
get 2 0
BE-0067 GET /api/v1/admin/users
sports-pie-main-api/src/main/java/com/sportspie/user/controller/AdminUserController.java:37
getUsers 0 0
BE-0068 GET /api/v1/admin/users/{id}
sports-pie-main-api/src/main/java/com/sportspie/user/controller/AdminUserController.java:70
getUser 0 0
BE-0069 GET /api/v1/admin/users/{id}/stadium-scopes
sports-pie-main-api/src/main/java/com/sportspie/user/controller/AdminUserController.java:132
getStadiumScopes 3 0
BE-0070 GET /api/v1/clubs
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:50
list 0 0
BE-0072 GET /api/v1/clubs/{id}
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:88
detail 5 0
BE-0073 GET /api/v1/clubs/{id}/applications
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:166
applications 4 0
BE-0074 GET /api/v1/clubs/{id}/members
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:141
members 4 0
BE-0075 GET /api/v1/clubs/{id}/posts
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:218
posts 0 0
BE-0076 GET /api/v1/clubs/{id}/posts/{postId}
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:235
postDetail 4 0
BE-0077 GET /api/v1/clubs/{id}/schedules
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:332
schedules 2 0
BE-0078 GET /api/v1/clubs/{id}/schedules/{schedId}
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:341
scheduleDetail 1 0
BE-0079 GET /api/v1/common/banks
sports-pie-main-api/src/main/java/com/sportspie/common/controller/CommonController.java:45
banks 2 0
BE-0080 GET /api/v1/common/categories
sports-pie-main-api/src/main/java/com/sportspie/common/controller/CommonController.java:30
categories 1 0
BE-0082 GET /api/v1/common/regions
sports-pie-main-api/src/main/java/com/sportspie/common/controller/CommonController.java:52
regions 1 0
BE-0084 GET /api/v1/home/banners
sports-pie-main-api/src/main/java/com/sportspie/home/controller/HomeController.java:41
banners 0 0
BE-0085 GET /api/v1/home/hot-events
sports-pie-main-api/src/main/java/com/sportspie/home/controller/HomeController.java:67
hotEvents 0 0
BE-0087 GET /api/v1/home/mega-events
sports-pie-main-api/src/main/java/com/sportspie/home/controller/HomeController.java:80
megaEvents 0 0
BE-0088 GET /api/v1/home/popular-stadiums
sports-pie-main-api/src/main/java/com/sportspie/home/controller/HomeController.java:53
popularStadiums 0 0
BE-0089 GET /api/v1/home/recommended-clubs
sports-pie-main-api/src/main/java/com/sportspie/home/controller/HomeController.java:92
recommendedClubs 0 0
BE-0093 GET /api/v1/me/club-saved
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:507
mySavedClubs 5 0
BE-0094 GET /api/v1/me/clubs
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:496
myClubs 4 0
BE-0096 GET /api/v1/me/notification-settings
sports-pie-main-api/src/main/java/com/sportspie/user/controller/UserController.java:69
getNotificationSettings 0 0
BE-0097 GET /api/v1/me/notifications
sports-pie-main-api/src/main/java/com/sportspie/notification/controller/NotificationController.java:30
list 0 0
BE-0098 GET /api/v1/me/notifications/unread-count
sports-pie-main-api/src/main/java/com/sportspie/notification/controller/NotificationController.java:47
unreadCount 0 0
BE-0099 GET /api/v1/me/profile
sports-pie-main-api/src/main/java/com/sportspie/user/controller/UserController.java:36
getProfile 0 0
BE-0100 GET /api/v1/me/stadium-reservations
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:231
myReservations 4 0
BE-0101 GET /api/v1/me/stadium-saved
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:243
mySavedStadiums 5 0
BE-0102 GET /api/v1/me/stats
sports-pie-main-api/src/main/java/com/sportspie/user/controller/UserController.java:59
myStats 1 0
BE-0103 GET /api/v1/oauth/authorize-info
sports-pie-main-api/src/main/java/com/sportspie/oauth/controller/OauthController.java:54
authorizeInfo 0 0
BE-0106 GET /api/v1/points/balance
sports-pie-main-api/src/main/java/com/sportspie/oauth/controller/PartnerPointsController.java:70
balance 0 0
BE-0107 GET /api/v1/points/transactions
sports-pie-main-api/src/main/java/com/sportspie/oauth/controller/PartnerPointsController.java:131
transactions 0 0
BE-0108 GET /api/v1/promotions
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/PromotionController.java:41
list 2 0
BE-0109 GET /api/v1/promotions/points/balance
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/PointController.java:46
getPointBalance 0 0
BE-0110 GET /api/v1/promotions/{id}
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/PromotionController.java:57
detail 1 0
BE-0111 GET /api/v1/promotions/{id}/engagement
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/PromotionController.java:90
engagement 0 0
BE-0112 GET /api/v1/stadiums
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:50
list 0 0
BE-0113 GET /api/v1/stadiums/{id}
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:87
detail 11 0
BE-0114 GET /api/v1/stadiums/{id}/availability
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:98
availability 0 0
BE-0115 GET /api/v1/stadiums/{id}/posts
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:128
posts 0 0
BE-0116 GET /api/v1/stadiums/{id}/posts/{postId}
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:144
postDetail 0 0
BE-0117 GET /api/v1/stadiums/{id}/reviews
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:109
reviews 0 0
BE-0118 GET /api/v1/users/me
sports-pie-main-api/src/main/java/com/sportspie/oauth/controller/PartnerPointsController.java:42
me 0 0
BE-0120 PATCH /api/v1/admin/clubs/{id}/applications/{appId}
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminClubController.java:160
updateApplication 2 0
BE-0121 PATCH /api/v1/admin/clubs/{id}/deactivate
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminClubController.java:173
deactivate 1 0
BE-0122 PATCH /api/v1/admin/clubs/{id}/exposure
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminClubController.java:210
updateExposure 2 0
BE-0124 PATCH /api/v1/admin/facilities/{id}
sports-pie-main-api/src/main/java/com/sportspie/facility/controller/AdminFacilityController.java:66
updateFacility 2 0
BE-0125 PATCH /api/v1/admin/feedback/entries/{id}
sports-pie-main-api/src/main/java/com/sportspie/feedback/controller/AdminFeedbackController.java:37
adminUpdateEntry 0 0
BE-0128 PATCH /api/v1/admin/promotion-labels/{id}
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/AdminPromotionLabelController.java:66
updatePromotionLabel 2 0
BE-0129 PATCH /api/v1/admin/promotions/{id}
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/AdminPromotionController.java:82
updatePromotion 2 0
BE-0130 PATCH /api/v1/admin/reports/{id}
sports-pie-main-api/src/main/java/com/sportspie/report/controller/AdminReportController.java:51
process 3 0
BE-0131 PATCH /api/v1/admin/stadium-reservations/{id}/approve
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumReservationController.java:89
approveReservation 1 0
BE-0132 PATCH /api/v1/admin/stadium-reservations/{id}/refund
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumReservationController.java:121
refundReservation 2 0
BE-0133 PATCH /api/v1/admin/stadium-reservations/{id}/reject
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumReservationController.java:103
rejectReservation 1 0
BE-0134 PATCH /api/v1/admin/stadium-reservations/{id}/status
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumReservationController.java:76
updateStatus 1 0
BE-0135 PATCH /api/v1/admin/stadiums/{id}
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:130
updateStadium 3 0
BE-0136 PATCH /api/v1/admin/stadiums/{id}/exposure
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:175
updateExposure 2 0
BE-0137 PATCH /api/v1/admin/stadiums/{id}/reviews/{reviewId}/visibility
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:231
updateReviewVisibility 1 0
BE-0138 PATCH /api/v1/admin/stadiums/{stadiumId}/posts/{postId}
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumPostController.java:92
update 4 0
BE-0139 PATCH /api/v1/admin/stadiums/{stadiumId}/posts/{postId}/pin
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumPostController.java:118
pin 1 0
BE-0140 PATCH /api/v1/admin/stadiums/{stadiumId}/posts/{postId}/publish
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumPostController.java:131
publish 1 0
BE-0141 PATCH /api/v1/admin/users/{id}/profile
sports-pie-main-api/src/main/java/com/sportspie/user/controller/AdminUserController.java:107
updateProfile 1 0
BE-0142 PATCH /api/v1/admin/users/{id}/role
sports-pie-main-api/src/main/java/com/sportspie/user/controller/AdminUserController.java:119
updateRole 1 0
BE-0143 PATCH /api/v1/admin/users/{id}/status
sports-pie-main-api/src/main/java/com/sportspie/user/controller/AdminUserController.java:78
updateStatus 2 0
BE-0144 PATCH /api/v1/admin/users/{id}/suspension
sports-pie-main-api/src/main/java/com/sportspie/user/controller/AdminUserController.java:92
updateSuspension 2 0
BE-0145 PATCH /api/v1/clubs/{id}/applications/{appId}
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:191
updateApplication 2 0
BE-0146 PATCH /api/v1/clubs/{id}/members/{memberId}
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:423
updateMemberRole 1 0
BE-0147 PATCH /api/v1/clubs/{id}/posts/{postId}
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:261
updatePost 1 0
BE-0148 PATCH /api/v1/clubs/{id}/posts/{postId}/comments/{commentId}
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:302
updateComment 1 0
BE-0149 PATCH /api/v1/clubs/{id}/schedules/{schedId}
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:367
updateSchedule 1 0
BE-0150 PATCH /api/v1/me/notification-settings
sports-pie-main-api/src/main/java/com/sportspie/user/controller/UserController.java:80
updateNotificationSettings 0 0
BE-0151 PATCH /api/v1/me/notifications/read
sports-pie-main-api/src/main/java/com/sportspie/notification/controller/NotificationController.java:59
markAllRead 0 0
BE-0152 PATCH /api/v1/me/password
sports-pie-main-api/src/main/java/com/sportspie/user/controller/UserController.java:95
changePassword 1 0
BE-0153 PATCH /api/v1/me/profile
sports-pie-main-api/src/main/java/com/sportspie/user/controller/UserController.java:47
updateProfile 4 0
BE-0154 PATCH /api/v1/stadiums/{id}/reviews/{reviewId}
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:178
updateReview 0 0
BE-0155 POST /api/feedback/guest/entries
sports-pie-main-api/src/main/java/com/sportspie/feedback/controller/FeedbackController.java:26
createEntry 4 0
BE-0156 POST /api/v1/admin/banners
sports-pie-main-api/src/main/java/com/sportspie/banner/controller/AdminBannerController.java:41
createBanner 1 0
BE-0157 POST /api/v1/admin/clubs
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminClubController.java:47
createClub 1 0
BE-0158 POST /api/v1/admin/clubs/{id}/translations/generate
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminClubController.java:129
generateTranslation 1 0
BE-0159 POST /api/v1/admin/facilities
sports-pie-main-api/src/main/java/com/sportspie/facility/controller/AdminFacilityController.java:55
createFacility 1 0
BE-0160 POST /api/v1/admin/feedback/entries/{id}/completion
sports-pie-main-api/src/main/java/com/sportspie/feedback/controller/AdminFeedbackController.java:68
adminCompleteWork 0 0
BE-0161 POST /api/v1/admin/feedback/entries/{id}/work
sports-pie-main-api/src/main/java/com/sportspie/feedback/controller/AdminFeedbackController.java:52
adminStartWork 0 0
BE-0162 POST /api/v1/admin/oauth/clients
sports-pie-main-api/src/main/java/com/sportspie/oauth/controller/AdminOauthClientController.java:48
register 0 0
BE-0163 POST /api/v1/admin/promotion-labels
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/AdminPromotionLabelController.java:55
createPromotionLabel 1 0
BE-0164 POST /api/v1/admin/promotions
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/AdminPromotionController.java:68
createPromotion 1 0
BE-0165 POST /api/v1/admin/stadiums
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:117
createStadium 2 0
BE-0166 POST /api/v1/admin/stadiums/images/batch-replace
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:351
replaceImagesBatch 0 0
BE-0167 POST /api/v1/admin/stadiums/{id}/description/translations/generate
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:153
generateDescriptionTranslations 1 0
BE-0168 POST /api/v1/admin/stadiums/{id}/images
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:370
addImage 1 0
BE-0169 POST /api/v1/admin/stadiums/{id}/settlement/request
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumSettlementController.java:46
requestSettlement 1 0
BE-0170 POST /api/v1/admin/stadiums/{stadiumId}/posts
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumPostController.java:79
create 4 0
BE-0171 POST /api/v1/admin/stadiums/{stadiumId}/zones
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:414
createZone 1 0
BE-0172 POST /api/v1/admin/users
sports-pie-main-api/src/main/java/com/sportspie/user/controller/AdminUserController.java:59
createUser 1 0
BE-0173 POST /api/v1/auth/email/otp/send
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:127
sendEmailOtp 0 0
BE-0174 POST /api/v1/auth/email/otp/verify
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:134
verifyEmailOtp 0 0
BE-0175 POST /api/v1/auth/find-id
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:165
findId 0 0
BE-0176 POST /api/v1/auth/login
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:188
login 0 0
BE-0177 POST /api/v1/auth/logout
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:214
logout 0 0
BE-0178 POST /api/v1/auth/otp/send
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:55
sendOtp 0 0
BE-0179 POST /api/v1/auth/otp/verify
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:69
verifyOtp 0 0
BE-0180 POST /api/v1/auth/password/reset
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:156
resetPassword 0 0
BE-0181 POST /api/v1/auth/password/reset/otp
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:147
sendPasswordResetOtp 0 0
BE-0182 POST /api/v1/auth/refresh
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:198
refresh 0 0
BE-0183 POST /api/v1/auth/signup
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:176
signup 0 0
BE-0184 POST /api/v1/auth/social
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:111
socialLogin 0 0
BE-0185 POST /api/v1/auth/whatsapp/otp/send
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:85
sendWhatsAppOtp 0 0
BE-0186 POST /api/v1/auth/whatsapp/otp/verify
sports-pie-main-api/src/main/java/com/sportspie/auth/controller/AuthController.java:92
verifyWhatsAppOtp 0 0
BE-0187 POST /api/v1/clubs
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:103
create 1 0
BE-0188 POST /api/v1/clubs/{id}/applications
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:178
apply 1 0
BE-0189 POST /api/v1/clubs/{id}/bookmarks
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:482
toggleClubBookmark 0 0
BE-0190 POST /api/v1/clubs/{id}/likes
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:470
toggleClubLike 0 0
BE-0191 POST /api/v1/clubs/{id}/posts
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:248
createPost 1 0
BE-0192 POST /api/v1/clubs/{id}/posts/{postId}/comments
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:288
createComment 1 0
BE-0193 POST /api/v1/clubs/{id}/posts/{postId}/comments/{commentId}/likes
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:454
toggleCommentLike 1 0
BE-0194 POST /api/v1/clubs/{id}/posts/{postId}/likes
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:439
togglePostLike 1 0
BE-0195 POST /api/v1/clubs/{id}/schedules
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:354
createSchedule 1 0
BE-0196 POST /api/v1/clubs/{id}/schedules/{schedId}/attendances
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:395
attend 1 0
BE-0197 POST /api/v1/files/upload
sports-pie-main-api/src/main/java/com/sportspie/file/controller/FileController.java:32
upload 10 0
BE-0200 POST /api/v1/oauth/authorize/approve
sports-pie-main-api/src/main/java/com/sportspie/oauth/controller/OauthController.java:72
approve 1 0
BE-0201 POST /api/v1/oauth/revoke
sports-pie-main-api/src/main/java/com/sportspie/oauth/controller/OauthController.java:145
revokeForm 0 0
BE-0202 POST /api/v1/oauth/token
sports-pie-main-api/src/main/java/com/sportspie/oauth/controller/OauthController.java:117
tokenForm 0 0
BE-0209 POST /api/v1/payments/doku/webhook
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/DokuPaymentController.java:51
dokuWebhook 0 0
BE-0215 POST /api/v1/points/deduct
sports-pie-main-api/src/main/java/com/sportspie/oauth/controller/PartnerPointsController.java:80
deduct 0 0
BE-0216 POST /api/v1/points/refund
sports-pie-main-api/src/main/java/com/sportspie/oauth/controller/PartnerPointsController.java:110
refund 0 0
BE-0218 POST /api/v1/promotions/{id}/bookmark
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/PromotionController.java:81
bookmark 0 0
BE-0219 POST /api/v1/promotions/{id}/like
sports-pie-main-api/src/main/java/com/sportspie/promotion/controller/PromotionController.java:72
like 0 0
BE-0220 POST /api/v1/reports
sports-pie-main-api/src/main/java/com/sportspie/report/controller/ReportController.java:34
create 0 0
BE-0221 POST /api/v1/stadiums/reservations/{reservationId}/refund-request
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:277
requestRefund 1 0
BE-0222 POST /api/v1/stadiums/{id}/bookmark
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:218
bookmark 0 0
BE-0223 POST /api/v1/stadiums/{id}/like
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:208
like 0 0
BE-0224 POST /api/v1/stadiums/{id}/reservations
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:156
reserve 0 0
BE-0225 POST /api/v1/stadiums/{id}/reviews
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:167
createReview 0 0
BE-0227 POST /api/v1/waba/waviro/notify
sports-pie-main-api/src/main/java/com/sportspie/common/waba/WaviroCallbackController.java:28
notifyCallback 0 0
BE-0228 POST /api/v1/waba/waviro/notifyurl
sports-pie-main-api/src/main/java/com/sportspie/common/waba/WaviroCallbackController.java:28
notifyCallback 0 0
BE-0229 PUT /api/v1/admin/banners/{id}
sports-pie-main-api/src/main/java/com/sportspie/banner/controller/AdminBannerController.java:51
updateBanner 1 0
BE-0230 PUT /api/v1/admin/clubs/{id}
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminClubController.java:93
updateClub 1 0
BE-0231 PUT /api/v1/admin/clubs/{id}/translations
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminClubController.java:114
upsertTranslation 1 0
BE-0232 PUT /api/v1/admin/integrations
sports-pie-main-api/src/main/java/com/sportspie/common/integration/controller/AdminIntegrationSettingController.java:45
updateIntegration 1 0
BE-0233 PUT /api/v1/admin/settings/{keyName}
sports-pie-main-api/src/main/java/com/sportspie/common/setting/controller/AdminSystemSettingController.java:29
updateSetting 1 0
BE-0234 PUT /api/v1/admin/stadium-reservations/{id}/memo
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumReservationController.java:156
updateMemo 1 0
BE-0235 PUT /api/v1/admin/stadiums/{id}/description/translations
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:163
updateDescriptionTranslations 1 0
BE-0236 PUT /api/v1/admin/stadiums/{id}/images/order
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:384
reorderImages 2 0
BE-0237 PUT /api/v1/admin/stadiums/{id}/promotion-labels
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:295
updatePromotionLabels 1 0
BE-0238 PUT /api/v1/admin/stadiums/{id}/settlement-account
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:321
updateSettlementAccount 2 0
BE-0239 PUT /api/v1/admin/stadiums/{stadiumId}/zones/{zoneId}
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:427
updateZone 1 0
BE-0240 PUT /api/v1/admin/users/{id}/stadium-scopes
sports-pie-main-api/src/main/java/com/sportspie/user/controller/AdminUserController.java:140
updateStadiumScopes 4 0
BE-0241 PUT /api/v1/clubs/{id}
sports-pie-main-api/src/main/java/com/sportspie/club/controller/ClubController.java:115
update 1 0
BE-0242 GET /api/v1/admin/integrations/payment
sports-pie-main-api/src/main/java/com/sportspie/common/integration/controller/AdminIntegrationSettingController.java:75
getPaymentProviderStatus 2 0
BE-0243 PATCH /api/v1/admin/stadium-reservations/{id}/manual-refund-payout
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumReservationController.java:141
completeManualRefundPayout 1 0
BE-0244 POST /api/v1/stadiums/reservations/{reservationId}/payment-invoice
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:317
reissuePaymentInvoice 0 0
BE-0245 PUT /api/v1/stadiums/reservations/{reservationId}/refund-account
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/StadiumController.java:297
updateRefundAccount 1 0
BE-0246 GET /api/v1/admin/clubs/{id}/members
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminClubController.java:183
getMembers 1 0
BE-0247 GET /api/v1/admin/clubs/{id}/schedules
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminClubController.java:192
getSchedules 1 0
BE-0248 PATCH /api/v1/admin/clubs/{id}/activate
sports-pie-main-api/src/main/java/com/sportspie/club/controller/AdminClubController.java:201
activate 1 0
BE-0249 PATCH /api/v1/admin/stadiums/{id}/owner-confirmed
sports-pie-main-api/src/main/java/com/sportspie/stadium/controller/AdminStadiumController.java:190
updateOwnerConfirmed 1 0

경고 색인을 만들 때 기계가 확신하지 못한 것 405건

경고 405건 보기
출처종류내용
apicalls indirect-only adminFacilityApi.fetchFacilityOptions (sports-pie-admin-web/src/shared/api/adminFacility.ts:121) has no direct fetch/http.<method> call — resolved through adminFacilityApi.fetchAdminFacilities
apicalls indirect-only stadiumApi.fetchAllStadiums (sports-pie-web/src/entities/stadium/api/stadium.api.ts:423) has no direct fetch/http.<method> call — resolved through stadiumApi.fetchStadiums
apicalls missing-module sports-pie-admin-web/src/shared/api/reservation.ts not found — every method it defines is missing from the map
apicalls no-http-call adminClubApi.getClubLevelLabelKey (sports-pie-admin-web/src/shared/api/adminClub.ts:46) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call adminClubApi.getClubSessionDurationLabelKey (sports-pie-admin-web/src/shared/api/adminClub.ts:78) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call adminFacilityApi.uploadAdminFacilityIcon (sports-pie-admin-web/src/shared/api/adminFacility.ts:86) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call adminFeedbackApi.ensureGuestToken (sports-pie-admin-web/src/shared/api/feedbackApi.ts:92) has no direct jsonFetch/fetch call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call adminFeedbackApi.getGuestName (sports-pie-admin-web/src/shared/api/feedbackApi.ts:113) has no direct jsonFetch/fetch call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call adminFeedbackApi.setGuestName (sports-pie-admin-web/src/shared/api/feedbackApi.ts:121) has no direct jsonFetch/fetch call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call adminFileApi.isManagedImageUrl (sports-pie-admin-web/src/shared/api/file.ts:57) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call adminPromotionApi.emptyPromotionLocaleCopy (sports-pie-admin-web/src/shared/api/adminPromotion.ts:87) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call adminPromotionApi.emptyPromotionLocaleForm (sports-pie-admin-web/src/shared/api/adminPromotion.ts:91) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call adminPromotionApi.hydratePromotionLocaleForm (sports-pie-admin-web/src/shared/api/adminPromotion.ts:96) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call adminPromotionApi.serializePromotionLocaleForm (sports-pie-admin-web/src/shared/api/adminPromotion.ts:114) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call adminReservationApi.needsManualRefundPayout (sports-pie-admin-web/src/shared/api/adminReservation.ts:63) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call adminReservationApi.normalizeRefundStatus (sports-pie-admin-web/src/shared/api/adminReservation.ts:89) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call bannerApi.hydrateBannerLocaleForm (sports-pie-admin-web/src/shared/api/banner.ts:129) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call bannerApi.serializeBannerLocaleForm (sports-pie-admin-web/src/shared/api/banner.ts:163) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call clubApi.getClubDescription (sports-pie-web/src/entities/club/api/club.api.ts:396) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call clubApi.getClubImage (sports-pie-web/src/entities/club/api/club.api.ts:402) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call clubApi.getClubLabelColorClass (sports-pie-web/src/entities/club/api/club.api.ts:56) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call clubApi.getClubLevelLabelKey (sports-pie-web/src/entities/club/api/club.api.ts:115) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call clubApi.getClubPostCategoryMeta (sports-pie-web/src/entities/club/api/club.api.ts:180) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call clubApi.getClubSessionDurationLabelKey (sports-pie-web/src/entities/club/api/club.api.ts:150) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call clubApi.getClubTitle (sports-pie-web/src/entities/club/api/club.api.ts:387) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call clubApi.stripDemoSuffix (sports-pie-web/src/entities/club/api/club.api.ts:383) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call commonApi.getRegionLabel (sports-pie-web/src/entities/common/api/common.api.ts:152) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call commonApi.getSportCategoryLabelKey (sports-pie-web/src/entities/common/api/common.api.ts:111) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call commonApi.getSportLabelKey (sports-pie-web/src/entities/common/api/common.api.ts:107) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call commonApi.normalizeSportCategories (sports-pie-web/src/entities/common/api/common.api.ts:115) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call consumerFeedbackApi.ensureGuestToken (sports-pie-web/src/shared/lib/feedbackApi.ts:91) has no direct jsonFetch/fetch call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call consumerFeedbackApi.getGuestName (sports-pie-web/src/shared/lib/feedbackApi.ts:112) has no direct jsonFetch/fetch call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call consumerFeedbackApi.setGuestName (sports-pie-web/src/shared/lib/feedbackApi.ts:120) has no direct jsonFetch/fetch call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call fileApi.validateImageFile (sports-pie-web/src/shared/api/file.api.ts:49) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call promotionApi.isCanonicalPromotionId (sports-pie-web/src/entities/promotion/api/promotion.api.ts:49) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call stadiumApi.getReservationTimeRange (sports-pie-web/src/entities/stadium/api/stadium.api.ts:150) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call stadiumApi.getStadiumDisplayTitle (sports-pie-web/src/entities/stadium/api/stadium.api.ts:127) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call stadiumApi.getStadiumReservationStartSlots (sports-pie-web/src/entities/stadium/api/stadium.api.ts:172) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apicalls no-http-call stadiumApi.needsRefundAccount (sports-pie-web/src/entities/stadium/api/stadium.api.ts:641) has no direct fetch/http.<method> call — and nothing it calls reaches one either — it is local-only, or the parser missed it
apishare orphan-ui-shares-api SH-S18 가 아무 화면에도 안 얹히는데 US-S27·SH-S18 가 API 1개를 나눠 쓴다 — 같은 일을 하는 화면이 둘인데 하나는 죽어 있다
apishare orphan-ui-shares-api SH-S18 가 아무 화면에도 안 얹히는데 US-S32·SH-S18 가 API 1개를 나눠 쓴다 — 같은 일을 하는 화면이 둘인데 하나는 죽어 있다
apishare orphan-ui-shares-api SH-S18 가 아무 화면에도 안 얹히는데 US-S34·SH-S18 가 API 1개를 나눠 쓴다 — 같은 일을 하는 화면이 둘인데 하나는 죽어 있다
apishare orphan-ui-shares-api SH-S31, SH-S53 가 아무 화면에도 안 얹히는데 SH-S31·SH-S53 가 API 2개를 나눠 쓴다 — 같은 일을 하는 화면이 둘인데 하나는 죽어 있다
backend duplicate-mapping-variant POST /api/v1/oauth/revoke 가 sports-pie-main-api/src/main/java/com/sportspie/oauth/controller/OauthController.java:145 와 sports-pie-main-api/src/main/java/com/sportspie/oauth/controller/OauthController.java:153 에 함께 매핑된다. HTTP 창구 하나로 합쳤다.
backend duplicate-mapping-variant POST /api/v1/oauth/token 가 sports-pie-main-api/src/main/java/com/sportspie/oauth/controller/OauthController.java:117 와 sports-pie-main-api/src/main/java/com/sportspie/oauth/controller/OauthController.java:128 에 함께 매핑된다. HTTP 창구 하나로 합쳤다.
colors link-destinations 링크 목적지 — 문자열 15 · 템플릿 8 · 배열 0 · 인라인배열 0 · 지역상수 2 · 밖으로 나감 0 · 못 품 12 · to/href 없음 0. 이름 자동 0개 · 설명 자동 272개
colors route-pattern-too-broad * 는 첫 칸이 파라미터라 아무 주소나 삼킨다 — 테스트를 붙이지 않는다
elements anchor-collision sports-pie-web/src/pages/activity/favorites/page.tsx::onToggle is shared by 4 elements (lines 333, 344, 389, 390) — all demoted to positional anchors
elements dynamic-input-type sports-pie-admin-web/src/pages/login/page.tsx: <input type={showPassword ? "text" : "password"}> is not a literal — treated as F
elements dynamic-input-type sports-pie-admin-web/src/pages/system/integrations.tsx: <input type={s.secret ? "password" : "text"}> is not a literal — treated as F
elements dynamic-input-type sports-pie-web/src/pages/login/page.tsx: <input type={showPassword ? "text" : "password"}> is not a literal — treated as F
elements dynamic-input-type sports-pie-web/src/pages/signup/profile/page.tsx: <input type={showSignupPassword ? "text" : "password"}> is not a literal — treated as F
elements dynamic-input-type sports-pie-web/src/pages/signup/profile/page.tsx: <input type={showSignupPasswordConfirm ? "text" : "password"}> is not a literal — treated as F
elements multi-call-handler sports-pie-admin-web/src/pages/banners/page.tsx:747 <select> onChange calls setSearchType, setSearch — anchored on "setSearchType"
elements multi-call-handler sports-pie-admin-web/src/pages/members/detail.tsx:1013 <button> onClick calls setShowWithdrawModal, setActionError — anchored on "setShowWithdrawModal"
elements multi-call-handler sports-pie-admin-web/src/pages/members/detail.tsx:428 <button> onClick calls setShowRoleDropdown, setShowStatusDropdown — anchored on "setShowRoleDropdown"
elements multi-call-handler sports-pie-admin-web/src/pages/members/detail.tsx:459 <button> onClick calls setShowStatusDropdown, setShowRoleDropdown — anchored on "setShowStatusDropdown"
elements multi-call-handler sports-pie-admin-web/src/pages/members/detail.tsx:514 <button> onClick calls setProfileNickname, setProfileClearAvatar, setActionError, setShowProfileModal — anchored on "setProfileNickname"
elements multi-call-handler sports-pie-admin-web/src/pages/members/detail.tsx:888 <button> onClick calls setShowProfileModal, setActionError — anchored on "setShowProfileModal"
elements multi-call-handler sports-pie-admin-web/src/pages/members/detail.tsx:963 <button> onClick calls setShowSuspendModal, setActionError — anchored on "setShowSuspendModal"
elements multi-call-handler sports-pie-admin-web/src/pages/members/page.tsx:190 <button> onClick calls setStatusFilter, setPage — anchored on "setStatusFilter"
elements multi-call-handler sports-pie-admin-web/src/pages/members/page.tsx:197 <select> onChange calls setRoleFilter, setPage — anchored on "setRoleFilter"
elements multi-call-handler sports-pie-admin-web/src/pages/posts/ReportsTab.tsx:198 <button> onClick calls setStatusFilter, setPage — anchored on "setStatusFilter"
elements multi-call-handler sports-pie-admin-web/src/pages/stadiums/board-write.tsx:335 <input> onChange calls setTitle, setErrors — anchored on "setTitle"
elements multi-call-handler sports-pie-admin-web/src/pages/stadiums/board-write.tsx:378 <textarea> onChange calls setContent, clearContentError — anchored on "clearContentError"
elements multi-call-handler sports-pie-admin-web/src/pages/stadiums/board.tsx:293 <button> onClick calls setFilterCategory, setPage — anchored on "setFilterCategory"
elements multi-call-handler sports-pie-admin-web/src/pages/stadiums/board.tsx:309 <select> onChange calls setFilterPublished, setPage — anchored on "setFilterPublished"
elements multi-call-handler sports-pie-admin-web/src/pages/stadiums/board.tsx:321 <input> onChange calls setSearch, setPage — anchored on "setSearch"
elements multi-call-handler sports-pie-admin-web/src/pages/stadiums/page.tsx:463 <select> onChange calls setSearchType, setSearch — anchored on "setSearchType"
elements multi-call-handler sports-pie-admin-web/src/pages/stadiums/register.tsx:1171 <input> onChange calls setParkingCapacity, setErrors — anchored on "setParkingCapacity"
elements multi-call-handler sports-pie-admin-web/src/pages/stadiums/register.tsx:790 <input> onChange calls setName, setErrors — anchored on "setName"
elements multi-call-handler sports-pie-admin-web/src/pages/stadiums/register.tsx:805 <input> onChange calls setAddress, setErrors — anchored on "setAddress"
elements multi-call-handler sports-pie-admin-web/src/pages/stadiums/register.tsx:813 <input> onChange calls setAddressDetail, setErrors — anchored on "setAddressDetail"
elements multi-call-handler sports-pie-admin-web/src/pages/stadiums/register.tsx:855 <select> onChange calls setRegionCode, setErrors — anchored on "setRegionCode"
elements multi-call-handler sports-pie-admin-web/src/pages/stadiums/register.tsx:863 <input> onChange calls setPhone, setErrors — anchored on "setPhone"
elements multi-call-handler sports-pie-admin-web/src/pages/stadiums/register.tsx:876 <select> onChange calls setSportCategoryCode, setErrors — anchored on "setSportCategoryCode"
elements multi-call-handler sports-pie-admin-web/src/pages/stadiums/register.tsx:941 <textarea> onChange calls setIntro, setErrors — anchored on "setIntro"
elements multi-call-handler sports-pie-admin-web/src/pages/stadiums/reservation-detail.tsx:662 <button> onClick calls setPayoutError, setPayoutReference, setPayoutAcknowledged, setPayoutModalOpen — anchored on "setPayoutError"
elements multi-call-handler sports-pie-admin-web/src/pages/stadiums/stadium-reservations.tsx:445 <button> onClick calls setRefundTarget, setRefundReason, setRefundError — anchored on "setRefundTarget"
elements multi-call-handler sports-pie-admin-web/src/pages/stadiums/zones.tsx:333 <button> onClick calls setDeleteError, setDeleteTarget — anchored on "setDeleteError"
elements multi-call-handler sports-pie-admin-web/src/pages/system/components/FacilitiesPanel.tsx:565 <div> onClick calls setShowModal, setEditItem — anchored on "setShowModal"
elements multi-call-handler sports-pie-admin-web/src/pages/system/components/FacilitiesPanel.tsx:584 <button> onClick calls setShowModal, setEditItem — anchored on "setShowModal"
elements multi-call-handler sports-pie-admin-web/src/pages/system/components/FacilitiesPanel.tsx:716 <button> onClick calls setShowModal, setEditItem — anchored on "setShowModal"
elements multi-call-handler sports-pie-admin-web/src/pages/system/components/PromotionLabelsPanel.tsx:318 <div> onClick calls setShowModal, setEditItem — anchored on "setShowModal"
elements multi-call-handler sports-pie-admin-web/src/pages/system/components/PromotionLabelsPanel.tsx:337 <button> onClick calls setShowModal, setEditItem — anchored on "setShowModal"
elements multi-call-handler sports-pie-admin-web/src/pages/system/components/PromotionLabelsPanel.tsx:440 <button> onClick calls setShowModal, setEditItem — anchored on "setShowModal"
elements multi-call-handler sports-pie-admin-web/src/pages/system/page.tsx:524 <button> onClick calls setCreatedNotice, setShowCreateModal — anchored on "setCreatedNotice"
elements multi-call-handler sports-pie-admin-web/src/widgets/feedback/ui/FeedbackWidget.tsx:1094 <button> onClick calls setTarget, setScreenshot, setAttachmentMeta — anchored on "setTarget"
elements multi-call-handler sports-pie-admin-web/src/widgets/feedback/ui/FeedbackWidget.tsx:988 <button> onClick calls setMessage, setMarkupMode, setHoverTarget, setOpen — anchored on "setMessage"
elements multi-call-handler sports-pie-admin-web/src/widgets/layout/ui/StadiumSelector.tsx:89 <button> onClick calls setActiveStadiumId, setOpen — anchored on "setActiveStadiumId"
elements multi-call-handler sports-pie-web/src/pages/club/board/write/page.tsx:157 <input> onChange calls setTitle, setErrors — anchored on "setTitle"
elements multi-call-handler sports-pie-web/src/pages/club/board/write/page.tsx:185 <textarea> onChange calls setContent, setErrors — anchored on "setContent"
elements multi-call-handler sports-pie-web/src/pages/club/edit/page.tsx:858 <button> onClick calls removeTag, addTag — anchored on "removeTag"
elements multi-call-handler sports-pie-web/src/pages/login/page.tsx:127 <input> onChange calls setEmail, setEmailError — anchored on "setEmail"
elements multi-call-handler sports-pie-web/src/pages/login/page.tsx:142 <input> onChange calls setPassword, setEmailError — anchored on "setPassword"
elements multi-call-handler sports-pie-web/src/pages/profile/stadiums/page.tsx:683 <button> onClick calls setLoading, loadReservations — anchored on "loadReservations"
elements multi-call-handler sports-pie-web/src/pages/settings/page.tsx:438 <MenuRow> onClick calls setWithdrawError, setShowDeleteModal — anchored on "setWithdrawError"
elements multi-call-handler sports-pie-web/src/pages/settings/page.tsx:617 <button> onClick calls setShowLogoutModal, logout — anchored on "logout"
elements multi-call-handler sports-pie-web/src/pages/signup/profile/page.tsx:264 <button> onClick calls editedProfileFieldsRef.current.add, setAvatarUrl — anchored on "editedProfileFieldsRef.current.add"
elements multi-call-handler sports-pie-web/src/pages/signup/profile/page.tsx:358 <input> onChange calls editedProfileFieldsRef.current.add, setNickname — anchored on "editedProfileFieldsRef.current.add"
elements multi-call-handler sports-pie-web/src/pages/signup/profile/page.tsx:428 <button> onClick calls editedProfileFieldsRef.current.add, setRegionId, setRegionOpen — anchored on "editedProfileFieldsRef.current.add"
elements multi-call-handler sports-pie-web/src/pages/stadium/detail/page.tsx:554 <img> onClick calls setIsImageExpanded, setSelectedImageIndex — anchored on "setIsImageExpanded"
elements multi-call-handler sports-pie-web/src/pages/stadium/reviews/page.tsx:471 <button> onClick calls setWriteRating, setWriteError — anchored on "setWriteRating"
elements multi-call-handler sports-pie-web/src/pages/stadium/reviews/page.tsx:501 <textarea> onChange calls setWriteComment, setWriteError — anchored on "setWriteComment"
elements multi-call-handler sports-pie-web/src/widgets/feedback/ui/FeedbackWidget.tsx:1407 <button> onClick calls setMessage, setMarkupMode, setHoverTarget, setOpen — anchored on "setMessage"
elements multi-call-handler sports-pie-web/src/widgets/feedback/ui/FeedbackWidget.tsx:1524 <button> onClick calls setTarget, setScreenshot, setAttachmentMeta — anchored on "setTarget"
elements multi-call-handler sports-pie-web/src/widgets/feedback/ui/FeedbackWidget.tsx:1545 <button> onClick calls setOpen, setPicking — anchored on "setOpen"
elements multi-call-handler sports-pie-web/src/widgets/layout/ui/BottomNav.tsx:81 <button> onClick calls window.scrollTo, navigate — anchored on "window.scrollTo"
elements multi-state-label sports-pie-admin-web/src/pages/banners/page.tsx:1042 <select> 이 상태에 따라 이름이 3가지다 — 1번째("banner_status_active")를 이름으로 썼다. 나머지도 이 버튼의 글자다: banner_status_scheduled · banner_status_inactive
elements multi-state-label sports-pie-admin-web/src/pages/banners/page.tsx:965 <select> 이 상태에 따라 이름이 3가지다 — 1번째("banner_status_active")를 이름으로 썼다. 나머지도 이 버튼의 글자다: banner_status_scheduled · banner_status_inactive
elements multi-state-label sports-pie-admin-web/src/pages/members/page.tsx:197 <select> 이 상태에 따라 이름이 6가지다 — 1번째("member_role_filter_all")를 이름으로 썼다. 나머지도 이 버튼의 글자다: member_role_member · member_role_club_owner · member_role_stadium_manager · role_platform · role_developer
elements multi-state-label sports-pie-admin-web/src/pages/stadiums/register.tsx:1204 <button> 이 상태에 따라 이름이 3가지다 — 2번째("stadium_admin_empty")를 이름으로 썼다. 나머지도 이 버튼의 글자다: member_loading · stadium_admin_select
elements multi-state-label sports-pie-admin-web/src/pages/stadiums/stadium-reservations.tsx:291 <select> 이 상태에 따라 이름이 9가지다 — 1번째("resv_status_all_full")를 이름으로 썼다. 나머지도 이 버튼의 글자다: resv_status_pending · resv_status_paid · resv_status_approval_pending · resv_status_completed · resv_status_refund_requested · resv_status_refunded_internal · resv_status_cancelled · resv_status_approval_rejected
elements multi-state-label sports-pie-admin-web/src/pages/system/components/FacilitiesPanel.tsx:725 <button> 이 상태에 따라 이름이 3가지다 — 2번째("facility_save_edit")를 이름으로 썼다. 나머지도 이 버튼의 글자다: facility_saving · facility_save_add
elements multi-state-label sports-pie-admin-web/src/pages/system/components/PromotionLabelsPanel.tsx:449 <button> 이 상태에 따라 이름이 3가지다 — 2번째("promolabel_save_edit")를 이름으로 썼다. 나머지도 이 버튼의 글자다: promolabel_saving · promolabel_save_add
elements multi-state-label sports-pie-web/src/pages/club/detail/page.tsx:770 <button> 이 상태에 따라 이름이 3가지다 — 1번째("club_applying")를 이름으로 썼다. 나머지도 이 버튼의 글자다: club_pending_badge · common_cancel
elements multi-state-label sports-pie-web/src/pages/club/members/page.tsx:397 <select> 이 상태에 따라 이름이 3가지다 — 1번째("role_vice")를 이름으로 썼다. 나머지도 이 버튼의 글자다: role_treasurer · role_member
elements multi-state-label sports-pie-web/src/pages/club/schedule/detail/page.tsx:506 <select> 이 상태에 따라 이름이 3가지다 — 1번째("schedule_type_training")를 이름으로 썼다. 나머지도 이 버튼의 글자다: schedule_type_match · schedule_type_meeting
elements multi-state-label sports-pie-web/src/widgets/home/ui/RecommendedClubs.tsx:101 <button> 이 상태에 따라 이름이 4가지다 — 4번째("home_join")를 이름으로 썼다. 나머지도 이 버튼의 글자다: club_applying · club_pending_badge · club_joined_done
elements non-api-module sports-pie-web/src/pages/feedback/BoardPage.tsx imports from "@/shared/lib/feedbackApi" — its calls are outside api.ts and cannot appear in apiHint
elements non-api-module sports-pie-web/src/pages/feedback/EntryTableOverlay.tsx imports from "@/shared/lib/feedbackApi" — its calls are outside api.ts and cannot appear in apiHint
elements non-api-module sports-pie-web/src/widgets/feedback/ui/FeedbackWidget.tsx imports from "@/shared/lib/feedbackApi" — its calls are outside api.ts and cannot appear in apiHint
elements onclick-on-form-control sports-pie-web/src/pages/club/board/detail/page.tsx: <input> carries onClick — classified B by the spec's rule order, review if it should be F/C
elements onclick-on-form-control sports-pie-web/src/pages/home/page.tsx: <input> carries onClick — classified B by the spec's rule order, review if it should be F/C
elements unreadable-translator-alias sports-pie-admin-web/src/pages/banners/page.tsx: const posLabel … => t(`banner_pos_${POS_KEY[p] ?? "unknown"}`) — 앞머리만 붙이는 꼴이 아니다 (`banner_pos_${POS_KEY[p] ?? "unknown"}`). 이 함수로 지은 이름은 비워 둔다
elements unreadable-translator-alias sports-pie-admin-web/src/pages/banners/page.tsx: const searchTypeLabel … => t(`banner_search_type_${SEARCH_TYPE_KEY[s] ?? "title"}`) — 앞머리만 붙이는 꼴이 아니다 (`banner_search_type_${SEARCH_TYPE_KEY[s] ?? "title"}`). 이 함수로 지은 이름은 비워 둔다
elements unreadable-translator-alias sports-pie-admin-web/src/pages/banners/page.tsx: const statusFilterLabel … => t(`banner_status_filter_${STATUS_FILTER_KEY[s] ?? "all"}`) — 앞머리만 붙이는 꼴이 아니다 (`banner_status_filter_${STATUS_FILTER_KEY[s] ?? "all"}`). 이 함수로 지은 이름은 비워 둔다
elements unresolved-handler sports-pie-admin-web/src/pages/banners/page.tsx:614 <button> onClick={() => imageInputRef.current?.click()} — no callable name found
elements unresolved-handler sports-pie-admin-web/src/pages/banners/page.tsx:925 <div> onClick={(e) => e.stopPropagation()} — no callable name found
elements unresolved-handler sports-pie-admin-web/src/pages/banners/page.tsx:989 <div> onClick={(e) => e.stopPropagation()} — no callable name found
elements unresolved-handler sports-pie-admin-web/src/pages/clubs/components/ClubRichFieldsForm.tsx:795 <button> onClick={() => inputRef.current?.click()} — no callable name found
elements unresolved-handler sports-pie-admin-web/src/pages/promotions/page.tsx:568 <div> onClick={(e) => e.stopPropagation()} — no callable name found
elements unresolved-handler sports-pie-admin-web/src/pages/stadiums/info.tsx:1270 <button> onClick={() => fileInputRef.current?.click()} — no callable name found
elements unresolved-handler sports-pie-admin-web/src/pages/stadiums/page.tsx:642 <td> onClick={(e) => e.stopPropagation()} — no callable name found
elements unresolved-handler sports-pie-admin-web/src/pages/stadiums/page.tsx:658 <td> onClick={(e) => e.stopPropagation()} — no callable name found
elements unresolved-handler sports-pie-admin-web/src/pages/stadiums/page.tsx:675 <td> onClick={(e) => e.stopPropagation()} — no callable name found
elements unresolved-handler sports-pie-admin-web/src/pages/stadiums/page.tsx:694 <td> onClick={(e) => e.stopPropagation()} — no callable name found
elements unresolved-handler sports-pie-admin-web/src/pages/stadiums/register.tsx:1079 <button> onClick={() => fileInputRef.current?.click()} — no callable name found
elements unresolved-handler sports-pie-admin-web/src/pages/stadiums/reservation-detail.tsx:850 <div> onClick={(e) => e.stopPropagation()} — no callable name found
elements unresolved-handler sports-pie-admin-web/src/pages/stadiums/reservation-detail.tsx:903 <div> onClick={(e) => e.stopPropagation()} — no callable name found
elements unresolved-handler sports-pie-admin-web/src/pages/stadiums/stadium-reservations.tsx:464 <div> onClick={(e) => e.stopPropagation()} — no callable name found
elements unresolved-handler sports-pie-admin-web/src/pages/stadiums/stadium-reservations.tsx:495 <div> onClick={(e) => e.stopPropagation()} — no callable name found
elements unresolved-handler sports-pie-admin-web/src/pages/stadiums/zones.tsx:357 <div> onClick={(e) => e.stopPropagation()} — no callable name found
elements unresolved-handler sports-pie-admin-web/src/pages/stadiums/zones.tsx:423 <div> onClick={(e) => e.stopPropagation()} — no callable name found
elements unresolved-handler sports-pie-admin-web/src/pages/system/components/FacilitiesPanel.tsx:188 <div> onClick={() => { if (!uploading) fileRef.current?.click(); }} — no callable name found
elements unresolved-handler sports-pie-admin-web/src/widgets/feedback/ui/FeedbackWidget.tsx:1053 <button> onClick={() => fileInputRef.current?.click()} — no callable name found
elements unresolved-handler sports-pie-admin-web/src/widgets/layout/ui/AdminLayout.tsx:615 <div> onClick={(e) => e.stopPropagation()} — no callable name found
elements unresolved-handler sports-pie-web/src/pages/club/create/page.tsx:742 <button> onClick={() => logoInputRef.current?.click()} — no callable name found
elements unresolved-handler sports-pie-web/src/pages/club/create/page.tsx:754 <button> onClick={() => logoInputRef.current?.click()} — no callable name found
elements unresolved-handler sports-pie-web/src/pages/club/edit/page.tsx:585 <button> onClick={() => coverRef.current?.click()} — no callable name found
elements unresolved-handler sports-pie-web/src/pages/club/edit/page.tsx:609 <button> onClick={() => profileRef.current?.click()} — no callable name found
elements unresolved-handler sports-pie-web/src/pages/club/edit/page.tsx:970 <button> onClick={() => galleryRef.current?.click()} — no callable name found
elements unresolved-handler sports-pie-web/src/pages/club/edit/page.tsx:988 <button> onClick={() => galleryRef.current?.click()} — no callable name found
elements unresolved-handler sports-pie-web/src/pages/club/members/page.tsx:367 <div> onClick={(e) => e.stopPropagation()} — no callable name found
elements unresolved-handler sports-pie-web/src/pages/payment/result/page.tsx:170 <button> onClick={() => { if (reservation.invoiceUrl) window.location.href = reservation.invoiceUrl; }} — no callable name found
elements unresolved-handler sports-pie-web/src/pages/profile/stadiums/page.tsx:1276 <button> onClick={() => { if (reservation.invoiceUrl) { window.location.href = reservation.invoiceUrl; } }} — no callable name found
elements unresolved-handler sports-pie-web/src/pages/settings/page.tsx:417 <MenuRow> onClick={() => { window.location.href = `mailto:${SUPPORT_EMAIL}`; }} — no callable name found
elements unresolved-handler sports-pie-web/src/pages/signup/profile/page.tsx:273 <button> onClick={() => fileInputRef.current?.click()} — no callable name found
elements unresolved-handler sports-pie-web/src/pages/stadium/detail/page.tsx:943 <img> onClick={(event) => event.stopPropagation()} — no callable name found
elements unresolved-handler sports-pie-web/src/widgets/feedback/ui/FeedbackWidget.tsx:1484 <button> onClick={() => fileInputRef.current?.click()} — no callable name found
elements unresolved-handler sports-pie-web/src/widgets/promotion/ui/PromotionDetailView.tsx:403 <img> onClick={(event) => event.stopPropagation()} — no callable name found
freshness evidence-stale 스크린샷 (shots/manifest.json)가 낡았다 — 이 결과를 만든 뒤로 코드가 바뀌었다. 다시 만들려면: node scripts/viz-capture-shots.mjs
freshness evidence-stale 테스트 결과 (spec-results.json)가 낡았다 — 이 결과를 만든 뒤로 코드가 바뀌었다. 다시 만들려면: npm run viz:specs
history no-recent-change 5개 파일이 최근 800커밋 안에 안 나온다 — 오래된 것이거나 방금 추가된 것이다
labels missing-locale no .json namespaces under sports-pie-web/src/app/providers/i18n/local/en
labels missing-locale no .json namespaces under sports-pie-web/src/app/providers/i18n/local/ko
legacy no-legacy-inventory docs/visualization/legacy-inventory.md 이 없다 — 물려받을 옛 번호 없이 새로 매긴다
link no-backend-for-path AD-S03-B03 → adminClubApi.fetchAdminClubs → GET /api/v1/admin/clubs{})} 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S03-B18 → adminClubApi.fetchAdminClubs → GET /api/v1/admin/clubs{})} 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S03-B21 → adminClubApi.fetchAdminClubs → GET /api/v1/admin/clubs{})} 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S04-B01 → adminPostApi.fetchAdminPosts → GET /api/v1/admin/posts{})} 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S07-B04 → adminUserApi.fetchAdminUsers → GET /api/v1/admin/users{})} 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S11-B03 → adminPromotionApi.fetchAdminPromotions → GET /api/v1/admin/promotions{})} 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S11-B04 → adminPromotionApi.fetchAdminPromotions → GET /api/v1/admin/promotions{})} 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S11-B07 → adminPromotionApi.fetchAdminPromotions → GET /api/v1/admin/promotions{})} 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S11-B16 → adminPromotionApi.fetchAdminPromotions → GET /api/v1/admin/promotions{})} 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S12-B06 → adminStadiumApi.fetchAdminStadiums → GET /api/v1/admin/stadiums{})} 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S14-B03 → adminStadiumPostApi.fetchStadiumPosts → GET /api/v1/admin/stadiums/{}/posts{})} 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S14-B10 → adminStadiumPostApi.fetchStadiumPosts → GET /api/v1/admin/stadiums/{}/posts{})} 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S17-B03 → adminReservationApi.fetchAdminReservations → GET /api/v1/admin/stadium-reservations{})} 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S17-B05 → adminReservationApi.fetchAdminReservations → GET /api/v1/admin/stadium-reservations{})} 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S17-B11 → adminReservationApi.fetchAdminReservations → GET /api/v1/admin/stadium-reservations{})} 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S17-B15 → adminReservationApi.fetchAdminReservations → GET /api/v1/admin/stadium-reservations{})} 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S18-B07 → adminStadiumLegacyApi.fetchAdminEngagements → GET /api/v1/admin/engagements{qs 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S18-B07 → adminStadiumLegacyApi.fetchAdminStadiumReviews → GET /api/v1/admin/stadiums/{}/reviews{qs 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S19-B03 → adminReservationApi.fetchAdminReservations → GET /api/v1/admin/stadium-reservations{})} 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S19-B11 → adminReservationApi.fetchAdminReservations → GET /api/v1/admin/stadium-reservations{})} 에 해당하는 백엔드가 없다
link no-backend-for-path AD-S26-B04 → adminUserApi.fetchAdminUsers → GET /api/v1/admin/users{})} 에 해당하는 백엔드가 없다
link no-backend-for-path SH-S10-B02 → adminPostApi.fetchAdminPosts → GET /api/v1/admin/posts{})} 에 해당하는 백엔드가 없다
link no-backend-for-path SH-S10-B10 → adminPostApi.fetchAdminPosts → GET /api/v1/admin/posts{})} 에 해당하는 백엔드가 없다
link no-backend-for-path SH-S11-B02 → adminReportApi.fetchAdminReports → GET /api/v1/admin/reports{})} 에 해당하는 백엔드가 없다
link no-backend-for-path SH-S11-B03 → adminReportApi.fetchAdminReports → GET /api/v1/admin/reports{})} 에 해당하는 백엔드가 없다
link no-backend-for-path SH-S11-B04 → adminReportApi.fetchAdminReports → GET /api/v1/admin/reports{})} 에 해당하는 백엔드가 없다
link no-backend-for-path SH-S11-B05 → adminReportApi.fetchAdminReports → GET /api/v1/admin/reports{})} 에 해당하는 백엔드가 없다
link no-backend-for-path SH-S15-B02 → stadiumApi.fetchStadiumNotices → GET /api/v1/stadiums/{}/posts{qs 에 해당하는 백엔드가 없다
link no-backend-for-path SH-S50-B14 → adminFacilityApi.fetchAdminFacilities → GET /api/v1/admin/facilities{toQuery({ page: params.page 에 해당하는 백엔드가 없다
link no-backend-for-path SH-S50-B17 → adminFacilityApi.fetchAdminFacilities → GET /api/v1/admin/facilities{toQuery({ page: params.page 에 해당하는 백엔드가 없다
link no-backend-for-path SH-S51-B10 → adminPromotionLabelApi.fetchAdminPromotionLabels → GET /api/v1/admin/promotion-labels{toQuery({ page: params.page 에 해당하는 백엔드가 없다
link no-backend-for-path SH-S51-B13 → adminPromotionLabelApi.fetchAdminPromotionLabels → GET /api/v1/admin/promotion-labels{toQuery({ page: params.page 에 해당하는 백엔드가 없다
link no-backend-for-path US-S05-B03 → clubApi.fetchClubs → GET /api/v1/clubs{qs 에 해당하는 백엔드가 없다
link no-backend-for-path US-S05-B05 → clubApi.fetchClubs → GET /api/v1/clubs{qs 에 해당하는 백엔드가 없다
link no-backend-for-path US-S05-B06 → clubApi.fetchClubs → GET /api/v1/clubs{qs 에 해당하는 백엔드가 없다
link no-backend-for-path US-S07-B05 → clubApi.fetchClubPosts → GET /api/v1/clubs/{}/posts{qs 에 해당하는 백엔드가 없다
link no-backend-for-path US-S07-B06 → clubApi.fetchClubPosts → GET /api/v1/clubs/{}/posts{qs 에 해당하는 백엔드가 없다
link no-backend-for-path US-S37-B03 → stadiumApi.fetchStadiumNotices → GET /api/v1/stadiums/{}/posts{qs 에 해당하는 백엔드가 없다
link no-backend-for-path US-S39-B03 → stadiumApi.fetchReviews → GET /api/v1/stadiums/{}/reviews{qs 에 해당하는 백엔드가 없다
requirements non-requirement-table 섹션 "2026-08-16 REQ-ADMIN-001 백엔드 절반 (TASK-355)" 의 표는 요구사항 8칸 형식이 아니다 (데이터 행 11개). 근거 축에서는 쓰지 않지만 버린 것은 아니다.
requirements non-requirement-table 섹션 "상태값" 의 표는 요구사항 8칸 형식이 아니다 (데이터 행 6개). 근거 축에서는 쓰지 않지만 버린 것은 아니다.
requirements non-requirement-table 섹션 "최종 시나리오 센터 전 즉시 갭" 의 표는 요구사항 8칸 형식이 아니다 (데이터 행 3개). 근거 축에서는 쓰지 않지만 버린 것은 아니다.
requirements requirement-row-in-foreign-table 102행: 요구사항 ID "REQ-MATCH-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-MATCH-001 | 2026-08-16 | 사용자 경기매칭 진입점이 제품에서 빠졌다. TASK-055 가 하단 탭을 경기매칭→이벤트로 교체하고, TASK-245 가 `/matches`·`/matches/:id` 를 `/activity` 리다이렉트로 바꿨고, TASK-100 이 `pages/matches/**` 와 `entities/match`
requirements requirement-row-in-foreign-table 103행: 요구사항 ID "REQ-MATCH-002" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-MATCH-002 | 2026-08-16 | 생성 화면 `/matches/create` 가 TASK-100 의 `pages/matches/**` 삭제로 사라졌다. 경기 생성 API 는 관리자 도메인에만 남아 REQ-ADMIN 범위에서 다룬다. | 없음 |
requirements requirement-row-in-foreign-table 104행: 요구사항 ID "REQ-MATCH-003" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-MATCH-003 | 2026-08-16 | 참여/취소 CTA 화면 `/matches/:id` 가 리다이렉트로 대체됐고 `/profile/matches` 도 `/profile` 로 리다이렉트된다. 사용자가 이 요구사항을 수행할 화면이 없다. | 없음 |
requirements requirement-row-in-foreign-table 105행: 요구사항 ID "REQ-EVT-002" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-EVT-002 | 2026-08-16 | 티켓 Event 도메인이 제품에서 빠졌다. TASK-290 이 공개 표면을 닫고 TASK-304 가 `com.sportspie.event` 패키지를 코드째 지워 `POST /api/v1/events/{id}/participants` 자체가 없다. 사용자 `/events/:id` 는 PromotionDeta
requirements requirement-row-in-foreign-table 106행: 요구사항 ID "REQ-EVT-003" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-EVT-003 | 2026-08-16 | 티켓 예매 화면 `/events/:id/booking` 이 `/activity` 리다이렉트로 대체됐고, `/api/v1/me/event-bookings`·`/api/v1/admin/event-bookings` 모두 TASK-304 의 event 패키지 삭제로 사라졌다. 증거 케이스 `MUT-004` 는 영
requirements requirement-row-in-foreign-table 140행: 요구사항 ID "REQ-AUTH-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-AUTH-001 | 연결 — `AUTH-001`·`AUTH-002`·`ADMIN-001` + 로그인 순서 가드 |
requirements requirement-row-in-foreign-table 141행: 요구사항 ID "REQ-STAD-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-STAD-001 | 연결 — `PUBLIC-001`·`PUBLIC-006`·`ADMIN-003` |
requirements requirement-row-in-foreign-table 142행: 요구사항 ID "REQ-EVT-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-EVT-001 | 연결 — `PUBLIC-007`·`PUBLIC-008`. `/events` 목록의 promotions 경로는 미검증이라 상태를 `진행중` 으로 내렸다 |
requirements requirement-row-in-foreign-table 143행: 요구사항 ID "REQ-PAY-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-PAY-001 | 연결 — 새 가드 `check-payment-provider-fail-closed.mjs` + `check-admin-payment-visibility.mjs` |
requirements requirement-row-in-foreign-table 144행: 요구사항 ID "REQ-CLUB-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-CLUB-001 | 연결 — `PUBLIC-003`·`PUBLIC-004`·`PUBLIC-009`·`ADMIN-004` |
requirements requirement-row-in-foreign-table 145행: 요구사항 ID "REQ-ADMIN-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-ADMIN-001 | 부분 연결 — 새 가드 `check-admin-menu-role-parity.mjs`(메뉴↔라우트). 백엔드 401/403 은 여전히 없음 |
requirements requirement-row-in-foreign-table 146행: 요구사항 ID "REQ-CONTENT-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-CONTENT-001 | 부분 연결 — 이미지 다양성·빈 상태 가드 3종. 내부 seed marker 는 수동 shell 뿐이라 `진행중` |
requirements requirement-row-in-foreign-table 147행: 요구사항 ID "REQ-OPS-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-OPS-001 | **해소(TASK-356)** — 수동 shell 대신 **배포 경로 자체**를 증거로 삼았다. 아무도 안 돌리는 스크립트는 증거가 아니지만, 배포할 때마다 반드시 도는 검증은 증거다 |
requirements requirement-row-in-foreign-table 36행: 요구사항 ID "REQ-AUTH-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-AUTH-001 | SCN-AUTH-LOGIN | 회원/관리자 | 로그인하고 세션 유지 | `/login`, `/admin/login` | 로그인 응답이 토큰/세션/역할 반환 | 사용자 로그인 상태/시각 갱신 | 프로필이 현재 사용자를 읽음 | 관리자 세션 역할이 메뉴를 결정 | TASK-111 하네스 `AUTH-001`·`AUTH-002`(발급
requirements requirement-row-in-foreign-table 37행: 요구사항 ID "REQ-I18N-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-I18N-001 | SCN-I18N-REGION | 회원 | 인도네시아 지역 선택 | 가입/프로필/설정/클럽/경기 폼 | `GET /api/v1/common/regions` | `regions`에 인도네시아 38개 주와 참조 무결성 | 선택 지역이 프로필/설정에 표시 | 관리자 사용자 상세가 지역을 읽을 수 있음 | TASK-111 `PUBLIC
requirements requirement-row-in-foreign-table 38행: 요구사항 ID "REQ-STAD-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-STAD-001 | SCN-STAD-LIST | 게스트/회원 | 구장 탐색 | `/stadium`, 홈 인기 구장 | public 구장/home API가 데이터 반환 | 구장/이미지/구역 row 존재 또는 정직한 빈 상태 | 목록/상세가 API 데이터를 표시 | 관리자 구장 카운트/목록과 일치 | TASK-111 public 하네스 `PUBLIC
requirements requirement-row-in-foreign-table 39행: 요구사항 ID "REQ-RES-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-RES-001 | SCN-RES-CREATE | 회원 | 구장 슬롯 예약 | 구장 상세 예약 CTA | 예약 생성 API가 실제 예약을 만들거나 실패 닫힘 | 예약 row, slot/zone/time 중복 방지 | 프로필 예약 목록 갱신 또는 공급자 미준비 오류 표시 | 공급자 준비 시 관리자 예약 목록/상태 갱신 | TASK-114 `MUT-0
requirements requirement-row-in-foreign-table 40행: 요구사항 ID "REQ-EVT-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-EVT-001 | SCN-EVT-LIST | 게스트/회원 | 이벤트 탐색 | `/events`, 홈 인기 이벤트, 메가이벤트 | public 이벤트 API가 데이터 반환 | 이벤트/메가이벤트 row와 이미지/본문 정책 | 목록/상세가 데이터 적재 상태로 표시 | 관리자 이벤트 목록 카운트와 일치 | TASK-111 public 하네스 `PUBLI
requirements requirement-row-in-foreign-table 41행: 요구사항 ID "REQ-EVT-002" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-EVT-002 | SCN-EVT-APPLY | 회원 | 이벤트 참여 신청 | `/events/:id` 참가 CTA | 참여 API가 참가자 insert 또는 중복/마감 반환 | `event_participants` insert 및 카운트 증가 | 참가 상태가 사용자 화면에 반영 | 관리자 이벤트 참가자/목록에 반영 | 없음. 증거로 걸려 있던 케
requirements requirement-row-in-foreign-table 42행: 요구사항 ID "REQ-EVT-003" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-EVT-003 | SCN-EVT-TICKET | 회원 | 이벤트 티켓 예약 | 이벤트 상세 티켓 CTA | 티켓 예약/결제 API가 예약 생성 또는 실패 닫힘 | 이벤트 예약/결제 row 상태 불변조건 | 프로필 이벤트 예약에 상태 표시 | 관리자 이벤트 예약/결제 목록 반영 | 없음. 증거로 걸려 있던 케이스(MUT-004 는 영구 skip,
requirements requirement-row-in-foreign-table 43행: 요구사항 ID "REQ-PAY-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-PAY-001 | SCN-PAY-FAILCLOSED | 회원/관리자 | 결제 공급자 미준비 상태 시 결제 시도 | 티켓/구장 예약 결제 흐름 | 공급자 미준비 시 fake success 금지 | 결제 row는 pending/failed와 failure_reason 기록 | 사용자는 pending/failed 상태를 봄 | 관리자는 공급자 실패 사
requirements requirement-row-in-foreign-table 44행: 요구사항 ID "REQ-CLUB-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-CLUB-001 | SCN-CLUB-LIST | 게스트/회원 | 클럽 탐색 | `/club`, 홈 추천 클럽 | 클럽 API가 데이터 반환 | 클럽/멤버/이미지 row 또는 정직한 빈 상태 | 클럽 목록/상세에 로드 상태 표시 | 관리자 클럽 목록과 일치 | TASK-111 public 하네스 `PUBLIC-003`(클럽 목록 4건 이상)·`PU
requirements requirement-row-in-foreign-table 45행: 요구사항 ID "REQ-CLUB-002" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-CLUB-002 | SCN-CLUB-CREATE | 회원 | 클럽 생성 | `/club/create` 제출 | 클럽 생성 API가 클럽과 owner/member 링크 생성 | `clubs`, `club_members` owner/member 불변조건 | `/api/v1/me/clubs`에 생성 클럽 표시 | 관리자 클럽 목록에 생성 클럽 표시 |
requirements requirement-row-in-foreign-table 46행: 요구사항 ID "REQ-CLUB-003" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-CLUB-003 | SCN-CLUB-JOIN | 회원 | 클럽 가입 | `/club/:id` 가입 CTA | 가입 API가 멤버십 또는 신청 상태 생성 | `club_members` 또는 신청 row 상태 불변조건 | 프로필 클럽 수/목록 갱신 | 관리자 클럽/멤버 화면 반영 | TASK-114 `MUT-006`, 중복 가입 불변조건 `MUT-0
requirements requirement-row-in-foreign-table 47행: 요구사항 ID "REQ-MATCH-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-MATCH-001 | SCN-MATCH-LIST | 게스트/회원 | 경기매칭 탐색 | `/matches`, 바텀 내비 경기매칭, 홈 경기매칭 | public 경기 API가 데이터 반환 | 경기/참가자 row와 이벤트/경기 라벨 분리 | 목록/상세가 모바일 셸 안에서 표시되고 `/matches/:id`로 이동 | 관리자 경기 목록과 일치 | 없음.
requirements requirement-row-in-foreign-table 48행: 요구사항 ID "REQ-MATCH-002" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-MATCH-002 | SCN-MATCH-CREATE | 회원 | 경기매칭 생성 | `/matches/create` 제출 | 경기 생성 API가 경기와 생성자 참가자 생성 | `matches` insert 및 creator participant 불변조건 | `/api/v1/me/matches`에 생성 경기 표시 | 관리자 경기 목록에 생성 경기 표
requirements requirement-row-in-foreign-table 49행: 요구사항 ID "REQ-MATCH-003" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-MATCH-003 | SCN-MATCH-JOIN-CANCEL | 회원 | 경기 참여/취소 | `/matches/:id` 참여/취소 CTA | 참여/취소 API가 정원, 중복, 주최자 가드 처리 | `match_participants` insert/delete 또는 상태 전이 | 프로필 경기 목록/통계 갱신 | 관리자 참가자 수 갱신 | 없음. 증
requirements requirement-row-in-foreign-table 50행: 요구사항 ID "REQ-FEED-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-FEED-001 | SCN-FEED-SEND | 게스트/회원/관리자 | 피드백 제출 | 사용자/관리자 피드백 위젯 | 피드백 생성/답변/미확인 API가 tenant/role/guestToken별 저장 | feedback entry/message row와 unread count 일치 | 사용자/관리자 배지 갱신 | 관리자 피드백 목록 표시 | TA
requirements requirement-row-in-foreign-table 51행: 요구사항 ID "REQ-ADMIN-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-ADMIN-001 | SCN-ADMIN-RBAC | 수퍼어드민/구장관리자 | 올바른 메뉴 접근 | `/admin` 사이드바와 페이지 | admin API가 역할별 권한 강제 | 권한 밖 상태 변경 금지 | 해당 없음 | 메뉴/액션 표시와 401/403 동작 일치 | TASK-108, `node tests/harness/check-admin-men
requirements requirement-row-in-foreign-table 52행: 요구사항 ID "REQ-CONTENT-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-CONTENT-001 | SCN-CONTENT-QUALITY | 게스트/회원 | 서비스 품질 콘텐츠 확인 | 홈/구장/이벤트/클럽/경기 상세 | public API가 내부 seed marker를 노출하지 않음 | 콘텐츠 row가 이미지 다양성과 본문 정책 준수 | 서버가 진짜 빈 상태일 때만 빈 화면 표시 | 관리자 콘텐츠 제어와 같은 row 사
requirements requirement-row-in-foreign-table 53행: 요구사항 ID "REQ-UI-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-UI-001 | SCN-MOBILE-SHELL | 게스트/회원 | 모든 사용자 라우트가 모바일 셸 안에서 동작 | 39개 consumer route, 예약/결제 바텀시트 | 정적 UI 계약 | 해당 없음 | 예약/결제/리뷰/프로필/경기 화면이 480px 밖으로 새지 않음 | 관리자 preview iframe도 같은 consumer 화면 사용 |
requirements requirement-row-in-foreign-table 54행: 요구사항 ID "REQ-ADMIN-002" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-ADMIN-002 | SCN-ADMIN-MEMBER-OPS | 수퍼어드민 | 회원 정지·탈퇴·프로필 조치 처리 | `/admin/members`, `/admin/members/:id` | 관리자 회원 API 가 목록/상세/정지/프로필 조치를 처리 | 정지는 `suspended_until` 에서 파생, 탈퇴 파기는 유예기간 뒤 익명화 | 정지된 계
requirements requirement-row-in-foreign-table 55행: 요구사항 ID "REQ-OPS-001" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-OPS-001 | SCN-OPS-DEPLOY-SMOKE | 운영자 | 배포와 smoke 확인 | deploy scripts/status endpoints | health/web/admin endpoint 200 | Flyway history 성공, active release 확인 | 사용자 앱 접근 가능 | 관리자 앱 접근 가능 | `node t
requirements requirement-row-in-foreign-table 56행: 요구사항 ID "REQ-AUTH-002" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-AUTH-002 | SCN-AUTH-SIGNUP | 게스트 | 약관 동의·계정 입력·프로필 완성으로 가입 | `/signup`, `/signup/profile` | 가입·OTP·구글 ID 토큰 검증이 인증 토큰을 발급 | `users`·`user_social_accounts` 에 계정 생성, 선호 종목·지역 저장 | 가입 직후 프로필이 입력값을
requirements requirement-row-in-foreign-table 57행: 요구사항 ID "REQ-AUTH-003" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-AUTH-003 | SCN-AUTH-RECOVERY | 게스트 | 아이디·비밀번호 찾기 | `/login/find-id`, `/login/find-password` | 복구 채널 계약이 확정되기 전에는 가짜 성공 대신 준비중을 반환 | 해당 없음 | 로그인 화면의 찾기 동선이 404 로 끝나지 않음 | 해당 없음 | `tests/harness/c
requirements requirement-row-in-foreign-table 58행: 요구사항 ID "REQ-AUTH-004" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-AUTH-004 | SCN-AUTH-PROFILE-HOME | 회원 | 프로필 홈에서 내 정보와 활동 지표 확인 | `/profile` | 프로필·활동 API 가 실제 원장 수치만 반환 | 집계 원장이 없는 지표는 화면에 만들지 않음 | 클럽·구장 활동만 표시하고 가짜 수치를 두지 않음 | 관리자 회원 상세가 같은 계정을 조회 | `tests/h
requirements requirement-row-in-foreign-table 59행: 요구사항 ID "REQ-AUTH-005" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-AUTH-005 | SCN-AUTH-ACTIVITY | 회원 | 내 활동과 저장한 구장·클럽 확인 | `/activity`, `/activity/favorites` | 저장 목록 API 가 실제 원장에서 회수·해제 | 저장 원장 row 와 화면 목록이 일치 | 저장·해제가 서버 재조회로 목록에 반영 | 관리자 클럽·구장 원장과 같은 row | `
requirements requirement-row-in-foreign-table 60행: 요구사항 ID "REQ-AUTH-006" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-AUTH-006 | SCN-AUTH-SETTINGS | 회원 | 알림·언어·비밀번호·회원 탈퇴 설정 | `/settings` | `DELETE /api/v1/me` 성공에만 토큰·상태를 폐기하고 실패는 오류 표시 | 탈퇴는 유예기간 뒤 익명화, 알림 수신 설정은 실제 row | 탈퇴 성공 시 로그인으로 이동하고 세션이 끊김 | 관리자 회원 상세가
requirements requirement-row-in-foreign-table 61행: 요구사항 ID "REQ-AUTH-007" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-AUTH-007 | SCN-AUTH-OAUTH-AUTHORIZE | 외부 앱 사용자 | 외부 앱이 우리 계정으로 인가를 요청할 때 동의 화면 | `/oauth/authorize` | 인가코드 5분 1회용, 코드-토큰 교환은 별도 토큰 엔드포인트 | 인가코드는 Redis, 리프레시 토큰 회전과 재사용 탐지 | 사용자가 동의 화면에서 권한 범위를 확
requirements requirement-row-in-foreign-table 62행: 요구사항 ID "REQ-STAD-002" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-STAD-002 | SCN-STAD-DETAIL | 게스트/회원 | 구장 상세에서 정보·편의시설·구역·리뷰 확인 | `/stadium/:id` | 공개 구장 상세 API 가 같은 id 로 zone·리뷰·공지를 반환 | 내부 전용 필드는 공개 응답에 실리지 않음 | 섹션 순서와 빈 상태가 정본 구조를 따름 | 관리자 구장 기본정보와 같은 row |
requirements requirement-row-in-foreign-table 63행: 요구사항 ID "REQ-STAD-003" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-STAD-003 | SCN-STAD-REVIEW-LIST | 게스트/회원 | 구장 리뷰 목록과 평점 요약 확인 | `/stadium/:id/reviews` | 리뷰 API 의 서버 집계(총건수·평균·분포)를 그대로 사용 | 로드된 페이지 subset 으로 요약을 재계산하지 않음 | 실제 리뷰가 있는데 0건으로 보이지 않음 | 관리자 리뷰 공개 여
requirements requirement-row-in-foreign-table 64행: 요구사항 ID "REQ-STAD-004" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-STAD-004 | SCN-STAD-NOTICE | 게스트/회원 | 구장 공지 목록과 상세 확인 | `/stadium/:id/notices`, `/stadium/:id/notices/:postId` | 공개 구장 게시글 API 가 published 만 반환 | `stadium_posts` 의 고정·카테고리 상태를 그대로 반영 | 카테고리 필터와
requirements requirement-row-in-foreign-table 65행: 요구사항 ID "REQ-STAD-005" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-STAD-005 | SCN-STAD-MAP | 게스트/회원 | 지도에서 구장을 찾고 상세로 이동 | `/map` | 공개 구장 API 의 위·경도로 marker 를 그림 | 고정 좌표가 아니라 실제 구장 row 를 사용 | marker 선택 카드와 상세가 같은 구장 id | 관리자 구장 위치 편집과 같은 row | `tests/harness/ch
requirements requirement-row-in-foreign-table 66행: 요구사항 ID "REQ-RES-002" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-RES-002 | SCN-RES-MY-RESERVATIONS | 회원 | 내 예약의 상태·취소·환불 확인 | `/profile/stadiums` | 예약 목록 API 가 상태와 결제 만료 시각을 반환 | 예약·결제 상태 전이가 원장과 일치 | 결제대기 예약도 화면에서 취소할 수 있음 | 관리자 예약 목록과 같은 row | `tests/harnes
requirements requirement-row-in-foreign-table 67행: 요구사항 ID "REQ-PAY-002" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-PAY-002 | SCN-PAY-RESULT | 회원 | 결제창에서 돌아온 뒤 결제 결과 확인 | `/payment/result` | 결제 생성 시 복귀 URL 을 보내고 복귀 시 상태를 다시 조회 | 가상계좌 미입금 pending 은 정상 상태이며 실패로 기록하지 않음 | pending 을 실패로 표시하지 않고 입금 만료 시각을 안내 | 관리자
requirements requirement-row-in-foreign-table 68행: 요구사항 ID "REQ-PAY-003" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-PAY-003 | SCN-PAY-PG-REVIEW | 외부 PG 검수자 | 결제 흐름 공개 설명 페이지 확인 | `/pg-review/payment-flow` | 페이지가 설명하는 webhook 경로가 실제 컨트롤러에 존재 | 해당 없음 | 한국어·영어 양쪽이 같은 흐름을 설명 | 해당 없음 | `tests/harness/check-pg-revi
requirements requirement-row-in-foreign-table 69행: 요구사항 ID "REQ-PAY-004" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-PAY-004 | SCN-PAY-SETTLEMENT | 구장관리자 | 담당 구장 정산 내역 조회와 지급 요청 | `/admin/stadiums/:id/settlement` | scoped 정산 API 가 담당 구장만 반환하고 범위 밖은 403 | 정산 금액·세금을 고객 gross 로 허위 합산하지 않음 | 해당 없음 | 지급 요청은 fail-cl
requirements requirement-row-in-foreign-table 70행: 요구사항 ID "REQ-EVT-004" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-EVT-004 | SCN-EVT-PROMOTION | 게스트/회원 | 프로모션 목록과 상세 확인 | `/promotions`, `/promotions/:id` | 공개 프로모션 API 가 기간·조건·상세 이미지를 반환 | 참가·좋아요 원장을 새로 만들지 않고 노출 기간 정책만 사용 | 카드 구성과 상세 섹션 순서가 정본 구조를 따름 | 관리자 프
requirements requirement-row-in-foreign-table 71행: 요구사항 ID "REQ-EVT-005" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-EVT-005 | SCN-EVT-MEGA | 게스트/회원 | 메가이벤트 강조 화면 확인 | `/mega-event`, `/mega-event/:id` | 활성 메가 프로모션 선택 규칙이 서버 데이터로 결정 | 메가 지정이 없으면 정직한 빈 상태 | 빈 상태에 홈 복귀 동선이 있음 | 관리자 메가 지정과 같은 row | `tests/harness/
requirements requirement-row-in-foreign-table 72행: 요구사항 ID "REQ-CLUB-004" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-CLUB-004 | SCN-CLUB-BOARD | 회원 | 클럽 게시판 글 읽기·쓰기·신고 | `/club/:id/board`, `/club/:id/board/:postId`, `/club/:id/board/write` | 클럽 게시글 API 가 작성·조회·권한을 처리 | 좋아요·댓글을 로컬 상태로 흉내 내지 않음 | 작성 뒤 목록이 서버 재조회
requirements requirement-row-in-foreign-table 73행: 요구사항 ID "REQ-CLUB-005" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-CLUB-005 | SCN-CLUB-SCHEDULE | 회원 | 클럽 일정 확인·작성·참석 표시 | `/club/:id/schedule`, `/club/:id/schedule/write`, `/club/:id/schedule/:scheduleId` | 일정 API 와 권한 계약에 연결하고 없는 필드를 만들지 않음 | 일정 종류가 번역 라벨이 아니
requirements requirement-row-in-foreign-table 74행: 요구사항 ID "REQ-CLUB-006" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-CLUB-006 | SCN-CLUB-MEMBERS | 회원/클럽운영진 | 멤버 목록과 가입 신청 승인·거절 | `/club/:id/members` | 멤버·신청 API 가 역할별 권한을 강제 | 정원 초과와 중복 가입을 서버가 막음 | 승인·거절 뒤 목록과 프로필 클럽 수가 갱신 | 관리자 클럽 멤버와 같은 row | `tests/harness/
requirements requirement-row-in-foreign-table 75행: 요구사항 ID "REQ-CLUB-007" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-CLUB-007 | SCN-CLUB-EDIT | 클럽운영진 | 클럽 정보 수정과 삭제 | `/club/:id/edit` | 수정·삭제 API 가 소유자 권한을 강제 | 클라이언트 입력 길이 제한이 서버 제한과 일치 | 수정 결과가 상세에 즉시 반영 | 관리자 클럽 상세와 같은 row | `tests/harness/check-client-serve
requirements requirement-row-in-foreign-table 76행: 요구사항 ID "REQ-CLUB-008" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-CLUB-008 | SCN-CLUB-MY-CLUBS | 회원 | 가입·신청중·운영 클럽 확인 | `/profile/clubs` | `/api/v1/me/clubs` 가 상태별 목록을 반환 | pending 클럽을 가입 클럽으로 세지 않음 | 신청 취소·상태 변화가 목록에 반영 | 관리자 클럽 멤버와 같은 row | `tests/harness/ch
requirements requirement-row-in-foreign-table 77행: 요구사항 ID "REQ-CLUB-009" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-CLUB-009 | SCN-CLUB-ADMIN-OPS | 수퍼어드민 | 관리자에서 클럽 목록·상세 운영과 노출 토글 | `/admin/clubs`, `/admin/clubs/:id` | 관리자 클럽 API 가 rich 필드와 노출 토글을 처리 | 노출 토글이 로컬 상태가 아니라 실제 컬럼 | 메인·TOP 노출이 사용자 클럽 화면에 반영 | 클럽
requirements requirement-row-in-foreign-table 78행: 요구사항 ID "REQ-FEED-002" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-FEED-002 | SCN-FEED-BOARD | 회원/관리자 | 피드백 보드에서 접수 항목 조회·분류·처리 | `/feedback` | 피드백 보드 API 가 tenant·역할별 목록과 답변을 반환 | 처리 상태 전이가 원장에 남음 | 제출한 피드백의 처리 상태를 확인 | 관리자 콘솔에서 재분류·완료 처리 | `tests/harness/chec
requirements requirement-row-in-foreign-table 79행: 요구사항 ID "REQ-UI-002" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-UI-002 | SCN-UI-NOT-FOUND | 게스트/회원/관리자 | 없는 주소로 들어갔을 때 404 안내 | `/*`, `/admin/*` | 정적 UI 계약 | 해당 없음 | 404 도 모바일 셸 폭 안에 들어오고 들어온 주소를 보여줌 | 관리자 404 는 대시보드 복귀 링크를 제공 | `tests/harness/run-task-392-p
requirements requirement-row-in-foreign-table 80행: 요구사항 ID "REQ-ADMIN-003" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-ADMIN-003 | SCN-ADMIN-STADIUM-CATALOG | 수퍼어드민 | 구장 목록 조회·검색과 신규 구장 등록 | `/admin/stadiums`, `/admin/stadiums/register` | `GET /api/v1/admin/stadiums` 목록과 등록 API, 담당자 구장 스코프 배정 | 구장 등록과 담당자 배정 실패를
requirements requirement-row-in-foreign-table 81행: 요구사항 ID "REQ-ADMIN-004" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-ADMIN-004 | SCN-ADMIN-STADIUM-INFO | 수퍼어드민/구장관리자 | 담당 구장 기본정보·이미지·정산계좌 편집 | `/admin/stadiums/:id`, `/admin/stadiums/:id/info` | 구장 상세 조회와 부분 수정 API, 담당 밖 구장은 거부 | 이미지 순서와 편의시설이 마스터 코드와 연결 | 편집 결
requirements requirement-row-in-foreign-table 82행: 요구사항 ID "REQ-ADMIN-005" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-ADMIN-005 | SCN-ADMIN-STADIUM-ZONES | 수퍼어드민/구장관리자 | 구역과 승인 방식(자동·수동) 설정 | `/admin/stadiums/:id/zones` | 구역 생성·수정 API 가 승인 방식을 실제로 받아 저장 | 예약 이력이 있는 구역 삭제를 막음 | 수동승인 구역은 사용자에게 승인 대기로 안내 | 구역 설정이
requirements requirement-row-in-foreign-table 83행: 요구사항 ID "REQ-ADMIN-006" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-ADMIN-006 | SCN-ADMIN-RESERVATION-QUEUE | 수퍼어드민/구장관리자 | 예약 목록·상세에서 승인·거절·환불 처리 | `/admin/stadiums/reservations`, `/admin/stadiums/reservations/:id`, `/admin/stadiums/:id/reservations` | 관리자 예약 응
requirements requirement-row-in-foreign-table 84행: 요구사항 ID "REQ-ADMIN-007" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-ADMIN-007 | SCN-ADMIN-STADIUM-BOARD | 수퍼어드민/구장관리자 | 구장 공지 글 작성·수정·고정 | `/admin/stadiums/:id/board`, `/admin/stadiums/:id/board/:postId`, `/admin/stadiums/:id/board/:postId/edit`, `/admin/stadium
requirements requirement-row-in-foreign-table 85행: 요구사항 ID "REQ-ADMIN-008" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-ADMIN-008 | SCN-ADMIN-STADIUM-REVIEWS | 수퍼어드민/구장관리자 | 리뷰 공개 여부 관리와 저장 사용자 확인 | `/admin/stadiums/:id/reviews` | scoped 리뷰 API 가 숨김 포함 목록과 공개 여부 변경을 처리 | 담당 밖 구장 리뷰는 조회·변경 불가 | 비공개 처리한 리뷰는 사용자 목록에
requirements requirement-row-in-foreign-table 86행: 요구사항 ID "REQ-ADMIN-009" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-ADMIN-009 | SCN-ADMIN-STADIUM-CODES | 수퍼어드민 | 구장 공통코드와 편의시설 마스터 관리 | `/admin/stadiums/codes`, `/admin/system/facilities` | 편의시설 등록 API 가 코드 중복·검증·권한을 처리 | 편의시설 마스터를 구장 편집과 사용자 필터가 함께 사용 | 필터에 뜨는
requirements requirement-row-in-foreign-table 87행: 요구사항 ID "REQ-ADMIN-010" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-ADMIN-010 | SCN-ADMIN-POSTS | 수퍼어드민 | 게시물 조회·삭제와 신고 처리 | `/admin/posts` | 관리자 게시글·신고 API 가 목록과 상태 처리(숨김·삭제·반려)를 제공 | 신고 상태 전이가 원장에 남고 가짜 카운트를 만들지 않음 | 숨김·삭제한 글은 사용자 화면에서 사라짐 | 신고 큐에서 처리 상태를 확인 |
requirements requirement-row-in-foreign-table 88행: 요구사항 ID "REQ-ADMIN-011" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-ADMIN-011 | SCN-ADMIN-BANNERS | 수퍼어드민 | 배너 등록·기간·노출 위치 관리 | `/admin/posts/banners` | 배너 API 가 유형별 노출 위치와 기간을 저장 | 편집 시 빈 기간이 기존 값을 지우지 않음 | 노출 중인 배너만 사용자 홈에 나타남 | 배너 유형과 노출 매트릭스가 일치 | `tests/har
requirements requirement-row-in-foreign-table 89행: 요구사항 ID "REQ-ADMIN-012" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-ADMIN-012 | SCN-ADMIN-PROMOTIONS | 수퍼어드민 | 프로모션·메가이벤트 등록과 노출 관리 | `/admin/promotions` | 프로모션 CRUD 가 혜택 유형·기간·노출 토글을 처리 | 내부 전용 필드가 공개 응답으로 새지 않음 | 노출한 프로모션이 사용자 목록·메가 화면에 반영 | 기간 문구와 시작·종료 값의 불일
requirements requirement-row-in-foreign-table 90행: 요구사항 ID "REQ-ADMIN-013" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-ADMIN-013 | SCN-ADMIN-SYSTEM-ACCOUNTS | 수퍼어드민 | 운영자·구장관리자 계정과 권한·코드·다국어·로그 관리 | `/admin/system`, `/admin/system/admins`, `/admin/system/stadium-managers`, `/admin/system/permissions`, `/admin/sy
requirements requirement-row-in-foreign-table 91행: 요구사항 ID "REQ-ADMIN-014" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-ADMIN-014 | SCN-ADMIN-SYSTEM-SETTINGS | 개발관리자 | 환불 수수료 등 시스템 상수 설정 | `/admin/system/settings` | 설정 저장 API 는 개발관리자만 허용 | 허용 범위를 벗어난 설정값 저장을 막음 | 설정한 수수료가 사용자 환불 금액·약관 문구와 같은 값 | 구장 귀책 취소는 전액 환불 불
requirements requirement-row-in-foreign-table 92행: 요구사항 ID "REQ-ADMIN-015" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-ADMIN-015 | SCN-ADMIN-INTEGRATIONS | 개발관리자 | 외부 연동(번역·결제) 키 설정과 상태 확인 | `/admin/system/integrations` | 비밀값은 암호화 저장하고 응답·로그에 노출하지 않음 | 공급자 설정 유무가 실제 결제 가능 여부와 일치 | 해당 없음 | 결제 공급자 설정 현황을 운영자가 확인 |
requirements requirement-row-in-foreign-table 93행: 요구사항 ID "REQ-ADMIN-016" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-ADMIN-016 | SCN-ADMIN-DESIGN-GUIDE | 개발관리자 | 내부 디자인 토큰·컴포넌트 참조 | `/admin/design-guide` | 서비스 API 를 부르지 않는 내부 도구 | 해당 없음 | 해당 없음 | 구장관리자에게는 숨김이고 직접 주소도 거부 | 미검증 | Console | 대기 |
requirements requirement-row-in-foreign-table 94행: 요구사항 ID "REQ-OPS-002" 가 요구사항 형식이 아닌 표 안에 있다 — 파싱하지 못했다. 원문: | REQ-OPS-002 | SCN-OPS-STANDARD-PACKAGE | 개발관리자 | 표준 QA 산출물 문서 모음 확인 | `/admin/standard-package` | 문서 링크만 제공하고 지표를 만들어내지 않음 | 해당 없음 | 해당 없음 | 근거 없는 수치를 화면에 만들지 않음 | `tests/harness/check-no-fabricated
routes redirect sports-pie-admin-web/src/app/providers/router/config.tsx:88 /events 리다이렉트는 화면에서 제외했다.
routes redirect sports-pie-admin-web/src/app/providers/router/config.tsx:89 /events/bookings 리다이렉트는 화면에서 제외했다.
routes redirect sports-pie-admin-web/src/app/providers/router/config.tsx:90 /events/promotions 리다이렉트는 화면에서 제외했다.
routes redirect sports-pie-admin-web/src/app/providers/router/config.tsx:92 /posts/events 리다이렉트는 화면에서 제외했다.
routes redirect sports-pie-web/src/app/providers/router/config.tsx:195 /matches 리다이렉트는 화면에서 제외했다.
routes redirect sports-pie-web/src/app/providers/router/config.tsx:199 /matches/:id 리다이렉트는 화면에서 제외했다.
routes redirect sports-pie-web/src/app/providers/router/config.tsx:203 /matches/* 리다이렉트는 화면에서 제외했다.
routes redirect sports-pie-web/src/app/providers/router/config.tsx:211 /profile/matches 리다이렉트는 화면에서 제외했다.
routes redirect sports-pie-web/src/app/providers/router/config.tsx:223 /profile/events 리다이렉트는 화면에서 제외했다.
routes redirect sports-pie-web/src/app/providers/router/config.tsx:82 /events/register 리다이렉트는 화면에서 제외했다.
routes redirect sports-pie-web/src/app/providers/router/config.tsx:90 /events/:id/edit 리다이렉트는 화면에서 제외했다.
routes redirect sports-pie-web/src/app/providers/router/config.tsx:94 /events/:id/booking 리다이렉트는 화면에서 제외했다.
silent swallows-failure sports-pie-admin-web/src/pages/stadiums/reviews.tsx:67 AD-S18 — fetchStadiumDetail(Number(id)) 가 실패하면 null 로 갈음한다. 가져오다 실패해도 빈 값으로 갈음한다 — 이 값이 화면에 그대로 쓰이면 사용자는 '없음'과 '못 가져옴'을 구분할 수 없다. 뒤에서 걸러내는지 확인이 필요하다
silent swallows-failure sports-pie-admin-web/src/pages/stadiums/stadium-reservations.tsx:170 AD-S17 — fetchStadiumDetail(Number(id)) 가 실패하면 null 로 갈음한다. 가져오다 실패해도 빈 값으로 갈음한다 — 이 값이 화면에 그대로 쓰이면 사용자는 '없음'과 '못 가져옴'을 구분할 수 없다. 뒤에서 걸러내는지 확인이 필요하다
silent swallows-failure sports-pie-admin-web/src/widgets/layout/ui/AdminLayout.tsx:155 SH-S54 — http.post("/api/v1/auth/logout") 가 실패하면 undefined 로 갈음한다. 가져오다 실패해도 빈 값으로 갈음한다 — 이 값이 화면에 그대로 쓰이면 사용자는 '없음'과 '못 가져옴'을 구분할 수 없다. 뒤에서 걸러내는지 확인이 필요하다
silent swallows-failure sports-pie-web/src/pages/club/board/detail/page.tsx:98 US-S08 — .fetchClubDetail(clubId).then((c) => { if (generation === re… 가 실패하면 setClubName(null) 로 갈음한다. 가져오다 실패해도 빈 값으로 갈음한다 — 이 값이 화면에 그대로 쓰이면 사용자는 '없음'과 '못 가져옴'을 구분할 수 없다. 뒤에서 걸러내는지 확인이 필요하다
silent swallows-failure sports-pie-web/src/pages/club/board/page.tsx:58 US-S07 — fetchClubDetail(clubId).then((detail) => { if (generation !=… 가 실패하면 setClub(null) 로 갈음한다. 가져오다 실패해도 빈 값으로 갈음한다 — 이 값이 화면에 그대로 쓰이면 사용자는 '없음'과 '못 가져옴'을 구분할 수 없다. 뒤에서 걸러내는지 확인이 필요하다
silent swallows-failure sports-pie-web/src/pages/club/schedule/detail/page.tsx:235 US-S13 — fetchClubDetail(clubId).then((club) => { if (generation === … 가 실패하면 setClubRole(null) 로 갈음한다. 가져오다 실패해도 빈 값으로 갈음한다 — 이 값이 화면에 그대로 쓰이면 사용자는 '없음'과 '못 가져옴'을 구분할 수 없다. 뒤에서 걸러내는지 확인이 필요하다
silent swallows-failure sports-pie-web/src/pages/profile/stadiums/page.tsx:511 US-S29 — loadReservations() 가 실패하면 undefined 로 갈음한다. 가져오다 실패해도 빈 값으로 갈음한다 — 이 값이 화면에 그대로 쓰이면 사용자는 '없음'과 '못 가져옴'을 구분할 수 없다. 뒤에서 걸러내는지 확인이 필요하다
silent swallows-failure sports-pie-web/src/pages/profile/stadiums/page.tsx:524 US-S29 — .await loadReservations() 가 실패하면 undefined 로 갈음한다. 가져오다 실패해도 빈 값으로 갈음한다 — 이 값이 화면에 그대로 쓰이면 사용자는 '없음'과 '못 가져옴'을 구분할 수 없다. 뒤에서 걸러내는지 확인이 필요하다
silent swallows-failure sports-pie-web/src/pages/stadium/notices/page.tsx:98 US-S37 — fetchStadiumDetail(stadiumId).then((detail) => { if (!cancel… 가 실패하면 undefined 로 갈음한다. 가져오다 실패해도 빈 값으로 갈음한다 — 이 값이 화면에 그대로 쓰이면 사용자는 '없음'과 '못 가져옴'을 구분할 수 없다. 뒤에서 걸러내는지 확인이 필요하다
silent swallows-failure sports-pie-web/src/widgets/promotion/ui/PromotionDetailView.tsx:156 SH-S44 — fetchPromotionEngagement(promotion.id).then((state) => { if … 가 실패하면 undefined 로 갈음한다. 가져오다 실패해도 빈 값으로 갈음한다 — 이 값이 화면에 그대로 쓰이면 사용자는 '없음'과 '못 가져옴'을 구분할 수 없다. 뒤에서 걸러내는지 확인이 필요하다
states attribute-conditional sports-pie-admin-web/src/pages/banners/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 3개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/clubs/components/ClubInfoSection.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/clubs/components/ClubPostsSection.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/clubs/components/ClubRichFieldsForm.tsx: 속성 자리(style/className/disabled 등)의 조건식 6개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/clubs/components/ClubTranslationsSection.tsx: 속성 자리(style/className/disabled 등)의 조건식 3개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/clubs/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 2개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/dashboard/components/StadiumManagerDashboard.tsx: 속성 자리(style/className/disabled 등)의 조건식 5개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/dashboard/components/SuperAdminDashboard.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/login/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 3개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/members/detail.tsx: 속성 자리(style/className/disabled 등)의 조건식 2개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/promotions/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 2개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/stadiums/StadiumLocationPicker.tsx: 속성 자리(style/className/disabled 등)의 조건식 2개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/stadiums/board-detail.tsx: 속성 자리(style/className/disabled 등)의 조건식 2개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/stadiums/board.tsx: 속성 자리(style/className/disabled 등)의 조건식 6개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/stadiums/info.tsx: 속성 자리(style/className/disabled 등)의 조건식 5개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/stadiums/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 3개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/stadiums/register.tsx: 속성 자리(style/className/disabled 등)의 조건식 8개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/stadiums/reservation-detail.tsx: 속성 자리(style/className/disabled 등)의 조건식 4개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/stadiums/reviews.tsx: 속성 자리(style/className/disabled 등)의 조건식 3개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/stadiums/settlement.tsx: 속성 자리(style/className/disabled 등)의 조건식 2개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/stadiums/stadium-reservations.tsx: 속성 자리(style/className/disabled 등)의 조건식 2개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/stadiums/zones.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/system/components/FacilitiesPanel.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/system/components/PromotionLabelsPanel.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/pages/system/integrations.tsx: 속성 자리(style/className/disabled 등)의 조건식 4개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/widgets/feedback/ui/FeedbackWidget.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/widgets/layout/ui/AdminLayout.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-admin-web/src/widgets/layout/ui/StadiumSelector.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/features/onboarding/ui/FirstRunPreferenceSheet.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/pages/activity/favorites/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 5개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/pages/activity/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/pages/club/board/detail/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 5개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/pages/club/detail/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/pages/club/edit/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 3개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/pages/club/schedule/detail/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 9개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/pages/club/schedule/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/pages/feedback/EntryTableOverlay.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/pages/home/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/pages/login/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 2개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/pages/profile/stadiums/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/pages/settings/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 3개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/pages/signup/profile/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 7개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/pages/stadium/detail/components/ZoneCard.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/pages/stadium/detail/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 5개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/pages/stadium/notices/detail/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/pages/stadium/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 6개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/pages/stadium/reviews/page.tsx: 속성 자리(style/className/disabled 등)의 조건식 2개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/shared/ui/BannerSlider.tsx: 속성 자리(style/className/disabled 등)의 조건식 2개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/shared/ui/BottomSheetShell.tsx: 속성 자리(style/className/disabled 등)의 조건식 3개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/shared/ui/HorizontalCarousel.tsx: 속성 자리(style/className/disabled 등)의 조건식 2개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/widgets/feedback/ui/FeedbackWidget.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/widgets/header/ui/HomeTopBar.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/widgets/header/ui/NotificationDrawer.tsx: 속성 자리(style/className/disabled 등)의 조건식 3개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/widgets/home/ui/PopularStadiums.tsx: 속성 자리(style/className/disabled 등)의 조건식 1개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/widgets/promotion/ui/PromotionDetailView.tsx: 속성 자리(style/className/disabled 등)의 조건식 2개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states attribute-conditional sports-pie-web/src/widgets/stadium/ui/BookingModal.tsx: 속성 자리(style/className/disabled 등)의 조건식 2개는 화면 상태가 아니라 겉모습 토글로 보고 제외했다
states unknown-state sports-pie-admin-web/src/pages/clubs/components/ClubInfoSection.tsx:162 조건 `((club.joinConditions?.length ?? 0) > 0 || (club.joinRules?.length ?? 0) > 0 || (club.benefits?.length ?? 0) > 0)` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/clubs/components/ClubInfoSection.tsx:164 조건 `(club.joinConditions?.length ?? 0) > 0` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/clubs/components/ClubInfoSection.tsx:171 조건 `(club.joinRules?.length ?? 0) > 0` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/clubs/components/ClubInfoSection.tsx:178 조건 `(club.benefits?.length ?? 0) > 0` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/clubs/components/ClubInfoSection.tsx:211 조건 `(club.memberPreview?.length ?? 0) > 0` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/clubs/components/ClubPostsSection.tsx:147 조건 `post.content && post.content.trim().length > 0` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/clubs/components/ClubRichFieldsForm.tsx:366 조건 `label.text.trim()` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/stadiums/info.tsx:1004 조건 `(stadium.facilities ?? []).length > 0` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/stadiums/info.tsx:1052 조건 `form.regionCode && !regionOptions.some((r) => r.code === form.regionCode)` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/stadiums/info.tsx:1089 조건 `isStadiumTurfType(stadium.turfType)` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/stadiums/info.tsx:1219 조건 `(stadium.tags ?? []).length > 0` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/stadiums/info.tsx:1278 조건 `(stadium.images ?? []).length > 0` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/stadiums/page.tsx:750 조건 `getPageNumbers()[0] > 1` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/stadiums/page.tsx:756 조건 `getPageNumbers()[0] > 2` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/stadiums/page.tsx:770 조건 `getPageNumbers()[getPageNumbers().length - 1] < totalPages` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/stadiums/page.tsx:772 조건 `getPageNumbers()[getPageNumbers().length - 1] < totalPages - 1` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/stadiums/register.tsx:918 조건 `isImageIcon(f.icon)` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/stadiums/reservation-detail.tsx:625 조건 `(reservation.refundFee ?? 0) > 0` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/stadiums/reservation-detail.tsx:832 조건 `formatServerDateTimeWIB(h.createdAt)` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/stadiums/reviews.tsx:474 조건 `getReviewVisible(review)` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/stadiums/zones.tsx:324 조건 `zone.description?.trim()` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/system/components/FacilitiesPanel.tsx:500 조건 `isCustomIcon(item.icon)` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/system/components/FacilitiesPanel.tsx:601 조건 `isCustomIcon(form.icon)` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/system/components/FacilitiesPanel.tsx:770 조건 `isCustomIcon(icon)` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/system/components/FacilitiesPanel.tsx:98 조건 `isCustomIcon(value)` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/pages/system/page.tsx:816 조건 `row.route.startsWith("/")` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/widgets/feedback/ui/FeedbackWidget.tsx:851 조건 `location.pathname.startsWith("/feedback")` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-admin-web/src/widgets/layout/ui/AdminLayout.tsx:416 조건 `sidebarOpen && expandedMenus.includes(item.path)` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-web/src/pages/activity/favorites/page.tsx:385 조건 `getClubLevelLabelKey(club.level)` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-web/src/pages/activity/page.tsx:90 조건 `(stat.key === "clubs" && clubsLoading) || (stat.key === "reservations" && reservationsLoading) || ((stat.key === "bookmarks" || stat.key === "likes") && statsLoading)` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-web/src/pages/club/detail/page.tsx:702 조건 `!isOwnerOrManager && (isMember || hasLeft)` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-web/src/pages/club/main/page.tsx:49 조건 `club.labels?.[0]?.text` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-web/src/pages/events/page.tsx:99 조건 `promotion.description?.trim()` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-web/src/pages/feedback/BoardPage.tsx:558 조건 `isVerificationRecord(selectedEntry)` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-web/src/pages/oauth/authorize/page.tsx:90 조건 `info.scope.includes("profile")` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-web/src/pages/oauth/authorize/page.tsx:91 조건 `info.scope.includes("points")` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-web/src/pages/profile/stadiums/page.tsx:1268 조건 `canResumePayment(reservation)` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-web/src/pages/stadium/detail/page.tsx:570 조건 `(stadium.promotionLabels ?? []).length > 0` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-web/src/pages/stadium/detail/page.tsx:632 조건 `(stadium.tags ?? []).length > 0` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-web/src/pages/stadium/detail/page.tsx:677 조건 `facilityIcons[facility] && !facilityIcons[facility].startsWith('ri-')` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-web/src/pages/stadium/page.tsx:893 조건 `? stadium.image` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-web/src/widgets/club/ui/ClubPromoBanner.tsx:68 조건 `? club.cardImage` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-web/src/widgets/feedback/ui/FeedbackWidget.tsx:1195 조건 `location.pathname.startsWith("/feedback") || location.pathname.startsWith("/pg-review")` 가 어떤 상태인지 판정되지 않았다
states unknown-state sports-pie-web/src/widgets/stadium/ui/StadiumInfo.tsx:43 조건 `isStadiumTurfType(stadium.turfType)` 가 어떤 상태인지 판정되지 않았다
subjourneys subjourney-graph-incomplete 서브 여정은 목적지를 푼 링크로만 그렸다. 목적지가 변수라 못 푼 링크가 12개 있으므로, 여기서 "안 이어졌다"는 "이어진 것을 못 찾았다"는 뜻이다
unreachable no-way-in US-S01 NotFoundPage (*) — 이 주소가 화면 코드 어디에도 글자로조차 안 나온다 — 주소를 직접 쳐야만 닿는다