문서 목적 · 범위
본 문서는 볼토피아의 회원·이벤트·클럽·예약·성적 관리를 아우르는 볼링장 통합 운영 플랫폼의 기능·시스템 요구사항을 정의합니다. 볼토피아는 정책이 중요하게 반영되는 서비스이므로, 각 영역은 기능 개요보다 서버가 실제로 강제하는 업무 규칙을 중심으로 기술합니다.
- 최우선 원칙 1 — 회원 데이터 보호
- 최우선 원칙 2 — 대회 운영의 공정성 · 안정성
- 원칙 충돌 시 — 개발 속도 등 다른 목표보다 항상 위 두 원칙을 우선
확정 — 아래 포함 범위(8개 영역)는 모두 진승과의 계약 딜리버리 대상입니다.
- 회원 · 등급 · 인증
- 대회 · 이벤트 접수 (BMT / 리그 / 대회 공통)
- 클럽 · 리그 운영
- 레인 · 락커 예약
- 볼(사용구) 등록 · 공인구 확인
- 성적 · 등급 · 통계
- 게시판 · 알림 · 소셜
- 결제
- 진승 통합 인증(SSO) 전환 — 별도 프로젝트(JS-AUTH). 본 문서는 현행 인증 연동 구조만 개념 언급
- 매출 · 정산 리포트, 멀티 지점 관리, 키오스크 모드 — 장기 백로그
시설 운영 목표
회원은 하나의 볼링장 안에서 대회 접수 → 클럽 활동 → 레인/락커 예약 → 성적 확인까지 하나의 서비스로 이용하며, 관리자는 하나의 관리 화면에서 시설 전체를 운영합니다.
연동 대상 시스템
| 시스템 | 연동 내용 |
|---|---|
| 진승 JS-HOME | 대회접수 — 공인구 확인. 참가자가 등록한 볼의 시리얼을 진승 공인구 원장과 실시간 대조 |
회원 · 인증 요구사항
| ID | 기능 | 설명 |
|---|---|---|
| FR-1.1 | 로그인 | 계정으로 로그인; 관리자는 강화된 인증 절차 적용 |
| FR-1.2 | 회원 등급 산정 | 산정 기준은 아래 등급 정책 표 참조 |
| FR-1.3 | 등급별 조건 · 혜택 관리 | 관리자가 직접 편집, 앱에 즉시 반영 |
| FR-1.4 | 단일 로그인 세션 | 동시 세션 1개만 허용 |
| FR-1.5 | 진승 인증 연동 장애 대응 | 자동 재시도 후 명확한 안내로 대응 |
| 등급 | 산정 조건 | 강등 정책 | 조건 · 혜택 문구 |
|---|---|---|---|
| GUEST | 진승 ID로 로그인(비회원) | 해당 없음 | 관리자 편집 가능 |
| MEMBER | 볼토피아 회원 가입 | 해당 없음(기본 등급) | 관리자 편집 가능 |
| REGULAR(정회원) | 최근 1년 게임 수 기준 충족 또는 유효 락커 보유 | 게임 수 기준 승급자는 강등 없음. 락커만으로 승급한 경우 락커 만료+미연장+게임 수 미달 시에만 MEMBER로 자동 강등 | 관리자 편집 가능(예: 레인 할인) |
| STORM | 최근 1년 게임 수 기준 충족 | 자동 강등 없음 — 관리자 수동 조정만 | 관리자 편집 가능 |
아래 규칙은 회원 · 등급 · 인증 도메인에서 서버가 항상 강제하는 정책입니다.
| 규칙 | 조건 | 서버 강제 동작 |
|---|---|---|
| BR-1.1 | 등급을 판정하는 시점(성적 반영, 프로필 조회 등) | 최근 1년(365일)간의 실제 참여 게임 수만 집계하며, 그 이전 기록은 포함하지 않습니다. |
| BR-1.2 | 회원이 유효한 락커를 보유 | 게임 수 기준을 충족하지 않아도 정회원 등급을 부여합니다. |
| BR-1.3 | 게임 수 기준으로 정회원 또는 STORM 등급으로 승급 | 이후 활동이 줄어도 해당 등급을 자동으로 낮추지 않습니다. |
| BR-1.4 | 락커 보유만으로 정회원이 된 회원의 락커가 만료 · 미연장 + 게임 수 기준 미달 | 일반 회원 등급으로 자동 조정합니다(자동 강등이 발생하는 유일한 경로). |
| BR-1.5 | 회원이 최고 등급(STORM)에 도달 | 이후 활동이 없어도 자동 강등하지 않으며, 등급 하향은 관리자의 수동 조정으로만 가능합니다. |
| BR-1.6 | 이미 로그인된 계정으로 다른 기기에서 새로 로그인 | 기존 기기의 로그인 세션을 즉시 무효화하고, 해당 기기에 강제 로그아웃 안내를 전달합니다. |
| BR-1.7 | 관리자 · 키오스크 계정 | 단일 세션 강제 정책이 적용되지 않습니다(다중 세션 허용). |
| BR-1.8 | 진승 인증 시스템이 응답하지 않음 | 정해진 횟수만큼 자동 재시도 후, 최종 실패 시 원인을 알 수 있는 안내로 응답하며 관리자 계정 인증에는 영향을 주지 않습니다. |
| BR-1.9 | 관리자가 특정 등급의 승급 조건 문구를 비워둠 | 게임 수 임계값 기반으로 자동 생성된 문구로 대체 표시합니다. |
| BR-1.10 | 일반 회원 권한으로 관리자 전용 기능(회원 관리, 대회 운영 등)에 접근 시도 | 요청을 거부합니다(역할 기반 접근 통제). |
대회 · 이벤트 접수 요구사항
BMT(미니대회) · 리그 · 대회는 공통된 접수 흐름을 따르며, 8개 영역 중 업무 규칙이 가장 촘촘한 영역입니다.
| ID | 기능 | 설명 |
|---|---|---|
| FR-2.1 | 접수 유형 | 개인 / 클럽(팀) / 프로암 세 가지 지원 |
| FR-2.2 | 선착순 접수 · 대기열 | 정원 초과 시 대기열, 취소 발생 시 자동 승격 |
| FR-2.3 | 성적 제출 · 확정 워크플로우 | 리그 · BMT: 참가자 제출 → 관리자 확정 / 정정 / 반려(2단계). 일반(GAME) 대회: 관리자 직접 입력(단일 단계, 설계상 별도 모델) |
| FR-2.4 | 결과 공개 시점 선택 | 관리자가 아래 4가지 공개 방식 중 선택 |
| FR-2.5 | 단체전 팀 생성 · 로스터 관리 | 클럽 운영자가 대상 대회를 선택해 팀을 만들고 명단(로스터)을 구성 · 확정. 확정 · 배포 완료 |
| FR-2.6 | 단체전 팀 접수 · 조 편성 | 확정된 팀을 대표자가 대회의 특정 조(회차)에 접수. 선착순 · 추첨 방식 모두 지원. 확정 · 배포 완료 |
| FR-2.7 | 단체전 팀 참가비 결제 | 대표자가 팀 전체 참가비를 일괄 결제(간편결제 · 무통장 · 현장). 확정 · 배포 완료 |
| FR-2.8 | 단체전 레인 배정 · 게임 간 레인 순환 | 관리자가 조별 레인 구성과 순환 규칙을 설정하면 첫 게임 자동 배정 + 이후 게임 자동 순환. 확정 · 배포 완료 |
| FR-2.9 | 단체전 팀 성적 입력 · 핸디캡 산정 | 관리자가 팀원별 게임 성적을 입력하면 핸디캡이 자동 반영되고, 로스터 전원의 성적이 모이면 팀 단위로 확정. 확정 · 배포 완료 |
| FR-2.10 | 단체전 팀 순위 · 대회 전체 개인 순위 공개 | 팀 성적이 확정되면 순위가 자동 집계되고, 관리자가 공개 여부를 선택. 확정 · 배포 완료 |
| FR-2.11 | 단체전 우승 명예의 전당 자동 연동 | 순위 공개 시 우승 팀 전원이 명예의 전당(§09)에 자동 등재. 확정 · 배포 완료 |
| 공개 방식 | 동작 | 제공 상태 |
|---|---|---|
| 즉시 공개 | 성적이 확정되는 즉시 순위표에 반영 | 제공 중 |
| 비공개 | 관리자가 수동으로 공개하기 전까지 순위 비공개 | 제공 중 |
| 일 단위 공개 | 그날 확정된 성적은 다음날부터 공개 | 확정 대기 |
| 대회 종료 후 공개 | 대회 전체가 종료된 이후 일괄 공개 | 확정 대기 |
| 단계 | 전환 트리거 |
|---|---|
| 1. 접수 시작 | (초기 상태) |
| 2. 접수 종료 | 접수 마감 시각 도래(자동) |
| 3. 결제 기간 | 접수 종료 직후 진입(자동) |
| 4. 결제 마감 | 결제 기한 도래(자동) |
| 5. 레인 배정 완료 | 관리자 수동 전환(자동 전환 없음) |
| 6. 진행 중 | 대회 시작 시각 도래(자동) |
| 7. 종료 | 대회 종료 시각 도래(자동) |
| 접수 방식 | 동작 | 대기(보결) |
|---|---|---|
| 선착순 | 조 정원이 찰 때까지 접수 순서대로 확정 | 정원 초과분은 대기 순번 등록, 취소 발생 시 순번대로 자동 승격 |
| 추첨 | 접수 마감까지는 전원 접수 대기 상태 유지, 마감 시 조별로 무작위 추첨해 정원만큼 확정 | 추첨에서 밀린 팀 중 정해진 인원만큼 보결로 전환, 이후 취소 발생 시 순번대로 자동 승격 |
대회가 여러 조(회차)로 편성된 경우, 정원 · 대기 · 추첨 · 승계는 모두 대표자가 접수 시 선택한 조 단위로 독립 운영됩니다.
| 순환 방식 | 동작 |
|---|---|
| 순환 없음 | 첫 게임에 배정된 레인을 전 게임 동일하게 사용 |
| 교차 순환 | 레인 좌 · 우에 있던 팀이 서로 반대 방향으로 이동하며 자리(좌 · 우)는 그대로 유지 |
| 이동 순환 | 레인의 모든 팀이 정해진 같은 방향으로 함께 이동 |
첫 게임 레인은 조별로 시스템이 자동(무작위) 배정하며, 이후 게임은 조마다 설정한 순환 방식대로 자동 전환됩니다. 관리자는 개별 팀 · 게임 단위로 레인을 수동 조정할 수 있습니다.
| 규칙 | 조건 | 서버 강제 동작 |
|---|---|---|
| BR-2.1 | 대회 접수 유형이 개인 또는 클럽 | 개인은 참가자 수, 클럽은 팀 수를 기준으로 각각 별도 정원을 산정하고, 클럽 접수는 팀 대표(팀장) 명의로만 접수할 수 있습니다. |
| BR-2.2 | 이미 리그에 참가 팀을 등록한 클럽이 같은 리그에 다른 팀으로 재접수 | 정상 접수를 허용합니다(동일 클럽 복수 팀 가능). 단 이미 등록된 것과 동일한 팀의 중복 접수만 차단합니다. |
| BR-2.3 | 승인 대기 상태의 클럽이 클럽 단위 대회 · 리그에 접수 시도 | 접수 자체를 차단합니다. |
| BR-2.4 | 이벤트 정원이 모두 찬 상태에서 신규 접수 | 대기열로 등록합니다. |
| BR-2.5 | 확정 참가자의 취소 발생 | 대기열 중 접수 시간이 가장 빠른 순번을 자동으로 정식 참가자로 승격하고, 승격 대상 본인(또는 팀 대표) · 소속 클럽 운영자 · 시설 관리자에게 동시에 알림을 발송합니다. |
| BR-2.6 | 현재 시각이 접수 마감 시각을 지남 | 신규 접수 · 수정 · 취소 요청을 모두 거부합니다. |
| BR-2.7 | 결제 기한 도달 시점까지 참가비 미결제 | 해당 참가자를 자동으로 취소 처리하고 대기자를 승격 절차로 넘깁니다. |
| BR-2.8 | 리그 · BMT 대회에서 참가자가 경기 성적을 입력해 제출 | 관리자가 확정하기 전까지 해당 성적은 순위표 · 팀 기록에 전혀 반영되지 않습니다. |
| BR-2.9 | 리그 · BMT 대회에서 관리자가 제출된 성적을 확정 | 즉시 팀 기록 · 순위표에 반영되며, 이후 참가자 본인은 직접 수정할 수 없고 관리자를 통해서만 정정할 수 있습니다. |
| BR-2.10 | 리그 · BMT 대회에서 관리자가 제출된 성적을 반려 | 사유와 함께 참가자에게 재입력을 요청하며, 재제출할 때까지 순위 미반영 상태를 유지합니다. |
| BR-2.11 | 경기 당일 팀 또는 선수가 불참 | 상대측에 승점을 자동 부여하는 부전승으로 처리하되, 양측의 누적 핀수 · 게임 수에는 영향을 주지 않습니다. |
| BR-2.12 | 클럽(팀) 참가 경기의 순위가 동점 | 승점 → 누적 핀수 → 팀 간 상대 전적 순서로 우선순위를 적용합니다. |
| BR-2.13 | 개인 참가 경기의 순위 산정 | 승패가 아닌 게임별 누적 핀수 합산을 기준으로 산정합니다. |
| BR-2.14 | 핸디캡을 적용하는 대회 | 핸디캡이 반영된 순위만 공식적으로 표시하고, 핸디캡 미반영(원점수) 순위는 별도로 게시하지 않습니다. |
| BR-2.15 | 경기가 이미 시작됨 | 후보 선수와 정규 선수 간의 교체 요청을 차단합니다(교체는 경기 시작 전까지만 허용). |
| BR-2.16 | 대회 접수가 진행 중인 기간 | 접수 · 순위 산정 로직에 영향을 주는 변경 사항의 배포를 보류합니다. |
| BR-2.17 | 여러 날에 걸쳐 진행되는 미니대회(BMT)에 회원이 연속으로 참가 | 연속 참가일수에 따라 정해진 보너스 핸디캡을 자동으로 계산해 부여합니다. |
| BR-2.18 | 대회의 설정된 시작 · 종료 시각 도래 | 관리자 조작 없이 자동으로 진행 중 · 종료 상태로 전환합니다. |
| BR-2.19 | 관리자가 결과 공개 방식(즉시 · 비공개 · 일 단위 · 종료 후) 중 하나를 선택 | 선택된 방식의 규칙에 따라서만 순위가 노출되며, 다른 방식으로 임의 노출되지 않습니다. |
| BR-2.20 | 참가자 결제 마감 시각 도래 | 자동으로 결제 마감 상태로 전환되고 관리자 작업 목록에 "레인 배정 필요" 항목이 자동으로 나타납니다. 이후 레인 배정 완료 전환은 관리자의 명시적 조작으로만 이루어집니다(자동 전환 없음). |
| BR-2.21 | 이벤트 진행 단계의 전환(자동 · 수동 모두 포함) | 항상 정해진 순서로만 앞으로 진행하며 이전 단계로 되돌아가지 않습니다. 단 관리자의 취소 처리는 이 규칙의 예외로 언제든 가능합니다. |
| BR-2.22 | 일반(GAME) 대회의 성적 처리 | 관리자가 성적을 직접 입력하며, 리그 · BMT의 참가자 제출 → 확정 게이트(BR-2.8~2.10)를 거치지 않습니다. 이는 설계상 별도 모델이며 성숙도 차이가 아닙니다. |
| BR-2.23 | 클럽 운영자가 단체전 팀을 생성 | 대상 대회가 클럽(팀) 또는 프로암 유형일 때만 생성을 허용하며, 팀 정원은 생성자가 임의로 정할 수 없고 대상 대회가 정한 규격에서 자동으로 결정합니다. |
| BR-2.24 | 프로암 대회의 팀을 생성 · 로스터 수정 · 확정 | 각 시점마다 대회가 정한 성별 · 프로 선수 정원 구성을 검증합니다 — 생성 · 로스터 수정 시점은 이미 정원을 초과한 명백한 위반만 즉시 차단하고, 아직 다 채우지 못한 초안 구성은 통과시키며, 최종 확정 시점에는 규격과 정확히 일치해야만 통과합니다. |
| BR-2.25 | 단체전 팀의 대표자(주장) 지정 | 그 팀의 로스터에 포함된 회원만 대표자로 지정할 수 있으며, 로스터에 없는 회원 지정은 거부합니다. |
| BR-2.26 | 단체전 팀의 로스터가 확정된 이후 | 클럽 운영자를 포함해 사용자는 로스터 · 대표자 · 팀 이름을 직접 수정할 수 없으며, 변경은 관리자를 통해서만 가능합니다. |
| BR-2.27 | 단체전 대회 접수 | 로스터가 확정된 팀만, 그 팀의 대표자 계정만 접수할 수 있습니다. |
| BR-2.28 | 한 회원이 같은 대회의 다른 팀 로스터에 이미 포함된 상태에서 신규 팀 접수 시도 | 중복 참가로 판단해 접수를 거부합니다. |
| BR-2.29 | 여러 조(회차)로 편성된 단체전 대회의 팀 접수 | 대표자가 접수 시 선택한 조 안에서만 정원 · 대기 · 추첨 · 승계를 산정하며, 다른 조 현황과는 서로 영향을 주지 않습니다. |
| BR-2.30 | 추첨 방식 단체전 대회의 접수 마감 | 조별로 무작위 추첨을 진행해 정원만큼 확정하고, 정해진 인원만큼 다음 순번을 보결(대기)로 전환하며, 나머지는 미확정으로 처리합니다. |
| BR-2.31 | 확정된 단체전 팀의 접수 취소 | 같은 조의 대기 1순위 팀을 자동으로 승격시키고, 승격된 팀의 대표자에게 알림을 발송합니다. |
| BR-2.32 | 단체전 팀의 참가비 결제 금액 | 대회가 정한 참가비 그대로 팀당 1건으로 결제하며, 팀원 수에 비례해 곱해지지 않습니다. |
| BR-2.33 | 무료로 진행되는 단체전 대회의 팀 접수 · 확정 | 별도 결제 절차 없이 결제 완료 상태로 자동 처리합니다. |
| BR-2.34 | 확정된 단체전 팀이 결제 기한 내 참가비를 완납하지 않음 | 해당 팀을 자동으로 취소 처리하고, 같은 조의 대기 팀을 결제 기한을 부여해 승격시킵니다. 승격된 팀도 기한 내 미납이면 동일하게 다시 취소 · 재승격됩니다. |
| BR-2.35 | 관리자가 단체전 조별 레인 구성과 게임 간 순환 여부를 설정 | 첫 게임 레인은 시스템이 그 조의 확정 팀을 대상으로 자동(무작위) 배정합니다. |
| BR-2.36 | 게임 간 레인 순환이 켜진 단체전 조 | 정해진 순환 방식(교차 · 이동)에 따라 매 게임 레인을 자동으로 전환하며, 순환이 꺼진 조는 전 게임 동일 레인을 유지합니다. |
| BR-2.37 | 관리자가 단체전 특정 팀 · 특정 게임의 레인을 수동 조정 | 지정한 레인으로 변경하되, 같은 조 안에서 다른 팀과 레인이 겹치면 변경을 거부합니다. |
| BR-2.38 | 단체전 팀원의 게임 성적 입력 | 관리자가 직접 입력하며, 리그 · BMT처럼 참가자 본인이 제출하는 절차는 없습니다. |
| BR-2.39 | 단체전 팀의 성적을 확정 | 로스터 전원이 대회의 모든 게임에서 성적 또는 결장(불참) 처리를 보유하고 있어야 하며, 하나라도 비어 있으면 확정을 거부합니다. 결장 처리된 게임은 핸디캡을 반영하지 않아 임의로 0점을 입력해 우회하는 것과 구분합니다. |
| BR-2.40 | 이미 확정된 단체전 팀의 성적을 이후 수정 | 확정 상태를 자동으로 해제해 재확정을 요구하며, 결과가 이미 공개된 상태였다면 공개도 함께 해제합니다. |
| BR-2.41 | 단체전 팀 순위 산정 | 확정된 팀만을 대상으로 자동 집계하며, 동점일 경우 핸디캡 총점 → 최고 게임 기록 → 평균 → 스크래치 총점 순으로 우선순위를 적용하고 전부 동일하면 공동순위로 표시합니다. 관리자가 결과 공개를 켜기 전까지 팀 순위와 대회 전체 개인 순위는 비공개 상태입니다. |
| BR-2.42 | 단체전 결과가 공개됨 | 순위 1위 팀(공동 우승 포함) 로스터 전원을 명예의 전당에 자동 등재하며, 이후 공개 후 우승 팀이 바뀌거나 공개가 취소되면 자동 등재 기록도 그에 맞춰 자동으로 갱신 · 정리합니다(관리자가 직접 등록한 기록은 영향받지 않습니다). |
클럽 · 리그 운영 요구사항
| ID | 기능 | 설명 |
|---|---|---|
| FR-3.1 | 클럽 운영 | 회원 관리, 정기 모임, 클럽 간 리그 참여 |
| FR-3.2 | 클럽 공개 페이지 · 기록 · 리더보드 | 비회원 공개(리더보드), 회원 전용(기록 탭) |
| FR-3.3 | 정기 모임 반복 일정 | 매주 · 격주 · 매월 등 반복 규칙으로 등록 |
| FR-3.4 | 개인 종합전 리그 접수 | 참가자가 팀 없이 개인 단위로 리그에 접수(선착순 · 추첨), 정원 초과 시 대기 등록 · 승계. 설계 검토 중 |
| FR-3.5 | 개인 종합전 회차별 점수 입력 · 확정 | 참가자가 회차(매치데이)마다 본인 게임 점수를 입력 · 제출하면 관리자가 확정 · 정정 · 반려. 설계 검토 중 |
| FR-3.6 | 개인 종합전 순위 · 시즌 종료 | 확정된 점수만 누적해 순위를 산정(핸디캡 설정 시 반영)하고, 시즌 종료 시 최종 순위를 스냅샷으로 저장. 설계 검토 중 |
아래는 설계 문서에 명시된 예정 규칙으로, 검토 · 확정 전까지는 서버가 강제하지 않습니다.
- 경기 방식 — 참가자끼리 승부를 겨루지 않고, 회차마다 각자 자기 게임만 치른 점수를 누적해 순위를 매김(대진 생성 없음)
- 핸디캡 스냅샷 — 점수 확정 시점의 핸디캡을 그대로 고정 저장해, 참가자의 핸디가 나중에 바뀌어도 과거 회차 순위는 흔들리지 않음
- 정원 · 대기 — 팀 수가 아니라 참가자 수를 기준으로 정원 · 대기(승계)를 판정, 동일 인물의 중복 접수는 차단
- 미입력자(no-show) 처리 — 기본은 순위 누적 0점 처리, 관리자가 사후 보정 가능
- 동점자 처리 — 핸디 적용 총핀 → 원점수 총핀 순으로 우선순위를 적용, 그래도 같으면 공동순위
- 시즌 종료 — 관리자 수동 종료 + 확정 점수 스냅샷 기준으로 최종 순위를 저장(종료 후 값 변동 없음)
| 상태 | 진입 조건 | 다음 가능 상태 |
|---|---|---|
| 가입 신청(대기) | 승인제 클럽에 신청 | 활성(관리자 승인) 또는 신청 취소(본인) |
| 활성 회원 | 가입 승인 완료 | 차단(강퇴) 또는 탈퇴 |
| 차단 | 운영자가 강퇴 | 차단 해제 시 재가입 신청 가능 상태로 복귀 |
| 전이 | 전환 트리거 |
|---|---|
| 모집 예정 → 모집 중 | 접수 시작 시각 도래(자동) |
| 모집 중 → 모집 마감 | 접수 마감 시각 도래(자동) |
| 모집 마감 → 확정 | 관리자 수동 전환 |
| 확정 → 진행 중 | 시즌 시작 시각 도래(자동) |
| 진행 중 → 완료 | 마지막 회차 종료 시각 도래(자동) |
| 규칙 | 조건 | 서버 강제 동작 |
|---|---|---|
| BR-3.1 | 클럽장을 제외한 다른 활성 회원이 클럽에 남아있음 | 클럽 해산 요청을 거부합니다(사전에 해산 버튼을 비활성화하고 다음 행동을 안내). |
| BR-3.2 | 회원이 강퇴(차단)된 상태 | 해당 클럽으로의 재가입 신청 자체를 차단하며, 운영자가 차단을 해제해야 다시 신청할 수 있습니다. |
| BR-3.3 | 가입 승인이 필요한 클럽에 신청 후 승인 대기 중인 회원 | 클럽 활동(리그 접수 등) 권한을 부여하지 않으며, 본인은 승인 전까지 신청을 직접 취소할 수 있습니다. |
| BR-3.4 | 클럽이 클럽 대항 리그에 접수 | 해당 클럽의 참가 팀을 자동으로 생성해 운영자의 팀 관리 화면에 즉시 반영합니다. |
| BR-3.5 | 이미 참가 팀이 등록된 클럽이 같은 리그에 재접수 시도 | 중복 접수를 차단합니다. |
| BR-3.6 | 반복 중인 정기 모임 하나의 일시를 변경 | 변경된 시간만큼 이후 예정된 모임 전체를 동일하게 자동 이동합니다. |
| BR-3.7 | 공식 인증 클럽의 정기 모임 일정이 대회 · 시설 예약 일정과 겹침 | 관리자 작업 목록에 조정이 필요한 항목을 자동으로 등록하고, 관리자가 해당 회차를 조정하면 자동으로 목록에서 제거합니다. |
| BR-3.8 | 비로그인 사용자가 클럽 리더보드에 접근 | 열람을 허용합니다(공개). 단 클럽 "기록" 탭은 회원에게만 공개합니다. |
레인 · 락커 예약 요구사항
| ID | 기능 | 설명 |
|---|---|---|
| FR-4.1 | 레인 예약 · 예약 현황 캘린더 | 시간대별 조회 · 예약, 관리자 월간 캘린더 |
| FR-4.2 | 락커 임대 · 연장 · 단기 상품 | 앱 내 결제로 신청 확정, 단기(예: 3개월) 상품 지원 |
| 상태 | 전환 트리거 |
|---|---|
| 신청(결제 대기) | 신규 · 연장 신청 접수 |
| 결제 완료 | 결제 확인, 관리자 배정 대기 목록에 노출 |
| 배정 완료 | 관리자가 락커 번호 수동 배정 |
| 규칙 | 조건 | 서버 강제 동작 |
|---|---|---|
| BR-4.1 | 특정 시간대에 대회로 인한 레인 전체 대관이 설정됨 | 해당 시간대의 개별 레인 예약을 자동으로 차단합니다. |
| BR-4.2 | 대회 등록 · 수정 시 설정한 참가 정원이 배정 레인의 실제 수용 인원을 초과 | 저장 자체를 거부합니다. |
| BR-4.3 | 락커 신규 · 연장 신청의 결제가 완료되지 않거나 취소됨 | 해당 신청 기록 자체가 서버에 남지 않습니다. |
| BR-4.4 | 단기 락커 신청이 확정됨 | 신청일 기준으로 정해진 계약 기간 이후 만료일을 자동 계산하며, 별도 갱신 절차는 제공하지 않습니다. |
볼(사용구) 등록 · 공인구 확인 요구사항 — 진승 연동점
| ID | 기능 | 설명 |
|---|---|---|
| FR-5.1 | 사전 신고 · 공인구 확인 | 5개 필수 항목 신고, 진승 원장과 실시간 대조 |
| FR-5.2 | 관리자 사용구 관리 | 대리 등록 · 수정 · 삭제, 등록 현황 파일 내려받기 |
| 항목 | 필수 여부 | 제약 |
|---|---|---|
| 브랜드 | 필수 | — |
| 모델 | 필수 | — |
| 무게 | 필수 | 11~16파운드 중 선택만 허용 |
| 시리얼 | 필수 | 공인구 확인 대조 대상 |
| 비고 | 필수 | — |
| 규칙 | 조건 | 서버 강제 동작 |
|---|---|---|
| BR-5.1 | 참가비 결제가 완료되지 않은 참가자 | 사용구 등록 화면 진입 및 등록 자체를 차단합니다. |
| BR-5.2 | 사용구 등록 마감 시각을 지남(참가자 기준) | 조회만 허용하고 신규 등록 · 수정 · 삭제는 차단합니다. |
| BR-5.3 | 관리자가 대리로 사용구를 등록 · 수정 · 삭제 | 마감 시각과 개수 상한 규칙이 적용되지 않습니다. |
| BR-5.4 | 참가자의 등록된 사용구 개수가 대회별로 설정된 상한에 도달 | 추가 등록 요청을 거부합니다. |
| BR-5.5 | 등록하려는 볼의 무게 값이 정해진 범위(11~16파운드) 밖 | 등록 요청을 거부합니다. |
| BR-5.6 | 브랜드 · 모델 · 무게 · 시리얼 · 비고 다섯 항목 중 하나라도 비어 있음 | 등록 요청을 거부합니다. |
| BR-5.7 | 진승 공인구 확인 연동이 응답하지 않거나 오류 | 등록 자체는 정상 접수하고 확인 여부만 "미확인"으로 저장하여 이후 자동 보정합니다. |
| BR-5.8 | 시스템이 특정 시리얼을 "확인됨"으로 표시 | 이는 참고 정보일 뿐이며, 규정 위반 여부의 최종 판정 권한은 항상 관리자의 현장 검수에 있습니다. |
성적 · 등급 · 통계 요구사항
| ID | 기능 | 설명 |
|---|---|---|
| FR-6.1 | 성적 일괄 반영 · 명예의 전당 | CSV 업로드로 일괄 반영, 최고 기록 자동 등재 |
등급 자동 하향 금지(STORM 보호) 규칙은 §04 BR-1.5에서 다룹니다. 아래는 성적 · 통계 도메인 고유 규칙입니다.
| 규칙 | 조건 | 서버 강제 동작 |
|---|---|---|
| BR-6.1 | 대회 성적 파일이 업로드됨 | 영향받는 회원의 등급 · 통계를 자동으로 재계산합니다. |
| BR-6.2 | 등급 산정 기준일 기록 | 실제 경기 데이터의 날짜를 기준으로 정확히 기록합니다(업로드가 지연되어도 실제 달성일 기준 유지). |
| BR-6.3 | 회원이 퍼펙트 게임 등 최고 기록을 달성 | 관리자 조작 없이 명예의 전당에 자동 등재합니다. |
게시판 · 알림 · 소셜 요구사항
| ID | 기능 | 설명 |
|---|---|---|
| FR-7.1 | 게시판 · 알림 · 소셜 | 공지 · FAQ · 문의 게시판, 알림 분류 · 수신 설정, 친구 · 성적 공유 |
| 규칙 | 조건 | 서버 강제 동작 |
|---|---|---|
| BR-7.1 | 회원이 알림 화면에서 특정 카테고리(이벤트 · 결제 · 시스템 등) 탭을 선택 | 해당 카테고리에 속하는 알림만 필터링되어 표시됩니다. |
| BR-7.2 | 매장 내 대기 순번 호출과 같이 놓치면 안 되는 알림 | 항상 수신 상태로 고정되며 회원이 직접 끌 수 없습니다. |
| BR-7.3 | 이벤트 · 클럽 · 공지 등 일반 알림 | 회원이 종류별로 수신 여부를 개별적으로 켜고 끌 수 있습니다. |
결제 요구사항
| ID | 기능 | 설명 |
|---|---|---|
| FR-8.1 | 결제 연동 · 관리자 결제 내역 조회 | 토스페이먼츠(TossPayments) 연동, 통합 조회 · 정산 요약 |
| 규칙 | 조건 | 서버 강제 동작 |
|---|---|---|
| BR-8.1 | 락커 · 사용구 등록 등 결제가 필요한 신청의 결제가 완료되지 않음 | 해당 신청은 확정되지 않으며 서버에 남지 않습니다(전 영역 공통 원칙). |
| BR-8.2 | 관리자가 기간별 정산 요약을 조회 | 결제완료 · 환불완료 · 부분환불 상태의 거래만 집계에 포함하고, 대기 · 취소 · 실패 건은 제외합니다. |
| BR-8.3 | 결제가 취소되거나 실패함 | 관련 신청 · 등록 기록이 남지 않도록 처리합니다. |
업무 규칙 총람
서버가 강제하는 업무 규칙은 총 81건입니다. 상세 규칙 전문은 각 도메인 섹션(§04~§11)의 표를 참조하며, 이 총람은 실제 서비스를 규칙 원문과 대조 검증할 때 어느 섹션을 봐야 할지 안내하는 색인입니다. §06에 반영된 개인 종합전 리그(PERSONAL_AGGREGATE) 설계 규칙안은 CTO 검토 대기 상태로 아직 서버가 강제하지 않아 이 총람 · 81건 집계에는 포함하지 않았습니다.
| 도메인 | 규칙 수 | 대표 규칙 | 상세 |
|---|---|---|---|
| 회원 · 인증 | 10건 | STORM 등급은 관리자 수동 조정으로만 하향(BR-1.5) | §04 |
| 대회 · 이벤트 접수 | 42건 | 성적은 관리자 확정 전까지 순위 미반영(BR-2.8, 리그·BMT); 단체전 팀 확정 게이트(BR-2.39) | §05 |
| 클럽 · 리그 | 8건 | 활성 회원이 남아있으면 클럽 해산 불가(BR-3.1) | §06 |
| 레인 · 락커 | 4건 | 정원이 레인 수용 인원 초과 시 저장 차단(BR-4.2) | §07 |
| 볼 등록 · 공인구 | 8건 | "확인됨"의 최종 판정 권한은 관리자에게 있음(BR-5.8) | §08 |
| 성적 · 통계 | 3건 | 성적 반영 후 등급 · 통계 자동 재계산(BR-6.1) | §09 |
| 게시판 · 알림 | 3건 | 대기 호출 알림은 항상 수신 고정(BR-7.2) | §10 |
| 결제 | 3건 | 결제 미완료 신청은 서버에 남지 않음(BR-8.1) | §11 |
확정 대기 항목
아래 항목은 현시점에서 확정되지 않았으며, 후속 검토를 통해 확정합니다. 본 문서는 임의의 값을 확정하지 않습니다.