대시보드 개발 요구사항
초판 · 코드 조사 기반 문서 버전 v1.0

ABL 개발 요구사항

ABL 플랫폼이 실제로 제공하는 기능을 도메인 모듈에서 역으로 도출해 기능 요구사항(FR)으로 정리한 문서입니다. 각 항목의 상태는 코드로 확인된 기준입니다(구현됨 / 확정 대기).

문서 유형개발 요구사항
대상ABL · 3-surface
도출 방식모듈 역도출
최종 갱신2026-07-21
01

회원 · 프로필 · 티어

회원 계정과 프로필, 실력 등급(티어)에 대한 요구사항.

FR-ABL-101회원 가입 · 프로필 관리
구현됨

회원은 이메일 기반 계정을 만들고 닉네임 · 볼링 스타일 · 주손 · 지역 등 프로필을 관리한다.

기준 Member 엔티티에 프로필 필드 저장, PATCH /api/members/profile로 수정.
FR-ABL-102공개 프로필 · 개인 통계
구현됨

회원의 공개 프로필과 개인 통계(평균 · 기록)를 조회할 수 있다.

기준 공개 GET /api/members/:id/public, 본인 GET /api/members/my/stats.
FR-ABL-103티어(핸디캡) 배정
구현됨

회원 평균과 MMR로 티어를 산정하고, 티어 정의(TierDefinition)의 구간에 따라 등급을 부여한다.

기준 MemberTier 기록 생성, 리그/경기일의 tierMin/tierMax로 참가 자격을 거를 수 있다.
02

리그 · 시즌 · 편성

대회 구조(시즌–리그–라운드–경기일–경기)의 편성 요구사항.

FR-ABL-201시즌 · 리그 생성
구현됨

관리자는 시즌을 만들고 그 아래 리그(정원 · 참가비 · 티어 범위 · 상금풀 등)를 생성한다.

기준 POST /api/admin/leagues, LeagueSeason에 속함.
FR-ABL-202일정 자동 생성 · 조정
구현됨

관리자는 리그의 라운드/경기일 일정을 규칙에 따라 자동 생성하고, 특정 날짜를 건너뛰거나 재조정할 수 있다.

기준 POST /api/admin/leagues/:id/generate-schedule, skip-date.
FR-ABL-203공개 리그 조회 · 캘린더
구현됨

비로그인 사용자도 리그 목록 · 상세 · 캘린더를 볼 수 있다.

기준 GET /api/leagues, /:id, /:id/calendar (@Public()).
03

참가 · 결제

경기일 참가 신청과 결제 · 대기 · 듀오 요구사항.

FR-ABL-301경기일 참가 신청 · 취소
구현됨

회원은 경기일에 참가 신청하고 취소할 수 있다. 정원 초과 시 대기 순번이 부여된다.

기준 POST /api/match-days/:id/apply, DELETE /api/participations/:id, waitlistOrder.
FR-ABL-302참가비 결제 · 환불
구현됨

참가비가 있는 경기일은 결제를 거쳐 참가가 확정된다. 관리자는 강제 환불을 처리할 수 있다.

기준 외부 PG 연동 + 웹훅(pg-callback, HMAC 검증), 모바일은 TossPayments. Payment ─1:1─ Participation.
FR-ABL-303듀오 참가 · 승계
구현됨

두 명이 짝(듀오)으로 함께 참가하고, 다음 라운드로 참가를 이어받을(승계) 수 있다.

기준 duoPartnerId, 승계 POST /api/rounds/:id/apply, 모바일 딥링크 abl://duo-invite/{code}.
04

매칭 · 레인

마감 후 팀 편성과 레인 배정 요구사항.

FR-ABL-401팀 매칭(밸런스)
구현됨

신청 마감 후 참가자를 팀 A/B로 균형 있게 배정한다. 인원이 안 맞으면 밸런스용 고스트를 채운다.

기준 POST /api/matching/batch-generate, MatchPlayer.team, isGhost, matchingMmr/matchingAvg.
FR-ABL-402레인 배정
구현됨

관리자는 경기일 참가자에게 레인을 배정하고 조회한다.

기준 GET/POST /api/lanes/:matchDayId, laneAssignmentStatus.
05

경기 · 점수 · 검증

점수 기록 · 핸디캡 · 사진 증빙 검증 요구사항.

FR-ABL-501점수 제출 · 수정 이력
구현됨

경기별 점수를 제출하고, 수정 시 이전 값과 사유를 이력으로 남긴다. 동시 수정 충돌은 막는다.

기준 POST /api/matches/:id/scores, ScoreEditHistory, GameScore 낙관적 락(@VersionColumn).
FR-ABL-502핸디캡 자동 적용
구현됨

평균 차이에 따라 핸디캡을 자동 계산해 점수에 반영한다.

기준 (상대 평균 − 본인 평균) × 0.8, MatchPlayer.handicaphandicapScore.
FR-ABL-503사진 증빙 검증
구현됨

제출 점수는 사진 증빙 검증을 거쳐야 정산 대상이 된다. 관리자는 승인 · 반려한다.

기준 업로드 POST /api/upload(S3), 검증 POST /api/verification/:id/verify·reject, ScoreVerification.
06

정산

경기 결과에 따른 정산과 잠금 요구사항.

FR-ABL-601참가별 정산 생성
구현됨

경기가 확정되면 참가별로 결과 · 상금을 계산해 정산을 만든다.

기준 Settlement(result · prize · prizeRule), 회원 조회 GET /api/settlements/my.
FR-ABL-602정산 잠금
구현됨

정산이 확정된(settledAt) 뒤에는 관련 점수 · 정산 수정이 차단된다.

기준 SettlementGuard로 확정 후 편집 차단.
07

랭킹 · 평균

레이팅 · 랭킹 · 평균 집계 요구사항.

FR-ABL-701레이팅(RP) 변동 이력
구현됨

경기 결과에 따라 레이팅 포인트(RP)가 변동되며 이력이 남는다.

기준 RpHistory, GET /api/rating/my/rp·history.
FR-ABL-702리더보드 · 평균
구현됨

시즌/전체 리더보드와 회원 평균(시즌 · 롤링)을 조회한다.

기준 GET /api/stats/leaderboard, GET /api/average/....
08

게이미피케이션

뱃지 · 미션 · 마스터리 · 시즌패스 · 포인트 요구사항.

FR-ABL-801뱃지 · 미션 · 출석
구현됨

조건 달성 시 뱃지를 부여하고, 일간/주간 미션과 출석을 추적한다.

기준 Badge/MemberBadge, Mission/MemberMission, AttendanceLog, GET /api/badges·/api/missions.
FR-ABL-802마스터리 · 시즌패스 · ABL 포인트
구현됨

참여/성과로 마스터리 레벨과 시즌패스 단계가 오르고, 적립 포인트를 관리한다.

기준 MasteryExpLog, SeasonPass/MemberSeasonPass, ABL 포인트 모듈.
09

얼라이언스 · 운영

얼라이언스(볼링센터 그룹) · 공지 · 배너 등 운영 요구사항.

FR-ABL-901얼라이언스 · 볼링센터 관리
구현됨

얼라이언스가 여러 리그를 총괄하고, 소속 볼링센터/회원을 관리한다.

기준 Alliance ─1:N─ League/Member, BowlingCenter, 얼라이언스 매니저 전용 웹 콘솔.
FR-ABL-902공지 · 배너
구현됨

얼라이언스/전체 공지와 마케팅 배너를 게시한다.

기준 Announcement, AllianceNotice, Banner.
10

알림 · 실시간

알림과 실시간 업데이트 요구사항.

FR-ABL-1001인앱 알림
구현됨

회원은 경기 · 정산 등 알림을 받고 읽음 처리한다. 모바일은 푸시(FCM)로도 받는다.

기준 Notification, GET /api/notifications/my, FCM(구성 시).
FR-ABL-1002실시간 상태 반영
구현됨

경기 상태 · 정원 변화 등이 실시간으로 클라이언트에 반영된다.

기준 Socket.IO 이벤트(예: status:changed, slots:updated), 재연결 시 캐시 무효화.
11

인증 · 권한

로그인 · 토큰 · 권한 요구사항.

FR-ABL-1101로그인 · 토큰 회전
구현됨

이메일/비밀번호와 소셜 로그인을 지원하고, 접근 토큰 만료 시 refresh로 재발급한다.

기준 JWT(1시간) + refresh family 회전, POST /api/auth/login·refresh·social, 모바일 Google/Kakao/Naver.
FR-ABL-1102역할 기반 권한(RBAC)
구현됨

관리자 기능은 역할 · 권한으로 접근을 제한한다. 웹 관리자는 ADMIN/얼라이언스 매니저 이중 로그인을 쓴다.

기준 RolesGuard + @RequirePermission()(resource:action), 경로별(/admin vs /alliance) 로그인 분리.
12

변경 이력

이 문서가 바뀐 내용을 시간순으로 남깁니다. 내용이 바뀌면 본문에서 옛 문장은 취소선으로, 새 내용은 추가 표시로 남기고, 아래에 날짜·요약을 덧붙입니다.

2026-07-21 문서 신규 작성 — ABL 백엔드 모듈을 역도출해 11개 그룹 · FR 초판 작성(회원~인증).
본 문서(v1.0)는 실제 코드(모듈 · 컨트롤러 · 엔티티) 조사로 역도출한 개발자용 초판입니다. FR이 추가·변경되면 본문에 취소선·추가로 표시하고 §12에 항목을 남깁니다.