대시보드 기획서 볼토피아 통합 운영 기획서
초안 · 검수 대기 문서 버전 v0.5

볼토피아 통합 운영 기획서

하우스 볼링장을 하나의 서비스로 통합 운영한다는 문제를 어떻게 풀지, 어떤 순서로 짓고 있는지를 정의합니다.

문서 유형 기획서 (설계 개요)
대상 시스템 볼링장 통합 운영 (BOWLTOPIA)
담당 단계 볼토피아 운영 플랫폼
최종 갱신 2026-07-13
수정 요청
01

기획 목적 · 접근 방식

본 기획서는 볼토피아를 어떻게 짓고 어떤 순서로 발전시킬지를 정의합니다. 요구사항정의서가 "무엇을"이라면, 본 문서는 "어떻게 · 언제"입니다.

  • 문제 프레이밍 — 회원은 대회 접수 · 클럽 활동 · 레인/락커 예약 · 성적 확인을 하나의 서비스로, 관리자는 하나의 화면으로 시설 전체를 운영
  • 원칙 1 — 회원 데이터 보호
  • 원칙 2 — 대회 운영의 공정성 · 안정성(접수 · 순위 산정 · 성적 처리가 외부 요인이나 장애로 흔들리지 않음)
  • 원칙 충돌 시 — 개발 속도 등 다른 목표보다 항상 위 두 원칙을 우선
  • 계약 범위(확정) — §07의 8개 운영 영역 전체가 진승과의 계약 딜리버리 대상
02

전체 아키텍처 개요

볼토피아는 관리자 웹 · 모바일 앱 · API 3계층으로 구성됩니다. 관리자 웹과 모바일 앱은 하나의 API를 통해서만 데이터에 접근하며, 진승 공인구 연동은 API 계층에서 표준화된 방식으로 처리됩니다.

볼토피아 API 관리자 웹 모바일 앱 진승 JS-HOME (공인구 연동) 회원 · 인증 이벤트 · 클럽 · 예약 운영 볼 등록 · 성적 · 통계

개념 구성도 — 실제 인프라 구성이 아닙니다.

계층역할
관리자 웹시설 운영자가 대회 · 회원 · 레인/락커 · 게시판 · 결제 내역을 관리하는 화면
모바일 앱회원이 접수 · 예약 · 성적 확인 · 소셜 · 알림 기능을 이용하는 화면
진승 JS-HOME 연동대회 참가자가 등록한 볼의 시리얼을 진승 공인구 원장과 실시간 대조하는 유일한 외부 연동점
03

회원 · 등급 모델 개요

회원 등급 정책은 다음과 같습니다.

등급산정 기준강등 정책
GUEST / MEMBER진승 ID 로그인 / 볼토피아 가입해당 없음
REGULAR(정회원)최근 1년 게임 참여 수 기준 또는 유효 락커 보유게임 수 기준 승급은 강등 없음. 락커만으로 승급한 경우 락커 만료+미연장+게임 수 미달 시에만 자동 강등
STORM(최고 등급)최근 1년 게임 참여 수 기준자동 강등 없음 — 관리자 수동 조정만
확정 STORM 등급은 자동으로 강등되지 않으며, 관리자 수동 변경으로만 하향됩니다. 이는 확정된 정책입니다.
  • 등급 문구 편집 — 승급 조건 · 혜택 · 소개 문구는 관리자가 직접 편집, 앱에 즉시 반영(앱 업데이트 불필요)
  • 단일 로그인 세션 — 계정당 동시 세션 1개만 허용, 새 로그인 시 기존 기기 강제 로그아웃 + 안내
  • 진승 인증 연동(확정) — 로그인은 현재 진승 인증 시스템 경유. 향후 진승 통합 인증(JS-AUTH/SSO) 완료 시 인증 권위가 그쪽으로 전환될 예정. 장애 시 자동 재시도 후 원인을 알 수 있는 안내로 대응
04

대회 · 리그 운영 모델 개요

접수 · 대기열
  • 개인 / 클럽(팀) / 프로암 세 가지 접수 유형을 공통 흐름으로 처리
  • 정원이 차면 대기열로 전환, 취소 발생 시 대기 1순위 자동 승격 + 관련자(팀 대표 · 클럽 운영자 · 관리자) 동시 알림
  • 경기 당일 불참 시 상대측 자동 부전승 처리(승점만 반영, 핀수 · 게임 수 불변)
성적 제출 · 확정 워크플로우 (확정 — 대회 유형별 2가지 모델)
대회 유형모델내용
리그 · BMT(미니대회)2단계(제출 → 확정)선수 본인 제출 → 관리자 확정 / 정정 / 반려. 확정 전까지 순위 미반영
일반(GAME) 대회단일 단계(직접 입력)관리자가 성적을 직접 입력 — 설계상 별도 모델이며 성숙도 차이가 아님
단계(리그 · BMT)주체내용
1. 제출선수 본인경기 성적 입력 · 제출. 순위표에는 아직 미반영
2. 검수관리자확정 · 정정 · 반려 중 하나로 처리
3. 확정관리자순위표 · 팀 기록에 즉시 반영. 이후 선수 본인은 직접 수정 불가(관리자 경유만)
4. 반려관리자 → 선수사유와 함께 재입력 요청, 재제출 시 2단계로 복귀
순위 산정 기준
참가 유형순위 산정 기준
클럽(팀)승점 → 누적 핀수 → 팀 간 상대 전적 순
개인게임별 누적 핀수 합산
핸디캡 적용 대회핸디캡 반영 순위만 공식 표시(원점수 순위 별도 게시 안 함)
접수 · 결제 진행 단계
단계내용
결제 기간접수 종료 직후 진입, 참가비 결제 가능
결제 마감결제 기한 도래, 미결제 자동 취소
레인 배정 완료관리자 수동 전환(자동 없음)
진행 중대회 시작 시각 도래 시 자동 전환

참가자와 관리자 모두 지금이 어떤 단계인지 화면에서 바로 확인할 수 있습니다.

미니대회(BMT) · 결과 공개 4모드
  • 연속 참가일수에 따라 보너스 핸디캡 자동 부여
  • 설정된 기간에 따라 자동 시작 · 종료
공개 모드동작공개 시점
즉시 공개확정 즉시 순위표 반영성적 확정 시
비공개관리자가 수동 공개하기 전까지 비공개관리자 조작 시
일 단위 공개그날 확정분은 다음날부터 공개익일 자정 기준
종료 후 공개대회 전체 종료 후 일괄 공개대회 종료 시
후보 선수 규칙
  • 경기 시작 전 — 정규 선수를 대신해 출전자로 지정 가능
  • 경기 시작 후 — 출전 선수 명단 확정, 후보 ↔ 정규 교체 차단
단체전(CLUB · 프로암) 팀 운영 — 확정 · 배포 완료

클럽(팀) · 프로암 접수는 개인 접수와 별도의 팀 전용 흐름으로 짓습니다. 팀 생성부터 순위 · 명예의 전당 연동까지 전 구간이 설계 확정을 거쳐 이미 프로덕션에 반영되었습니다.

  • 팀 생성 · 로스터 — 클럽 운영자가 대상 대회를 골라 팀을 만들면, 팀 정원은 그 대회가 정한 규격에서 자동으로 정해집니다. 대표자는 로스터에 포함된 회원만 지정 가능. 프로암은 생성 · 로스터 수정 · 최종 확정 각 시점에 성별 · 프로 선수 정원 구성을 검증(초안 단계는 미완성 허용, 확정 시점은 규격과 정확히 일치해야 통과). 확정된 로스터는 관리자를 통해서만 변경합니다.
  • 조 편성 접수 — 대회를 여러 조(회차)로 나눠 편성하고, 대표자가 접수 시 조를 선택합니다. 정원 · 대기(보결) · 추첨 · 승계는 모두 그 조 안에서만 독립적으로 산정됩니다. 선착순 대회는 정원 초과 시 대기 등록, 추첨 대회는 마감 시 조별 무작위 추첨으로 확정 · 보결을 가릅니다. 확정 팀이 취소하면 같은 조 대기 1순위가 자동 승격 + 알림 발송.
  • 참가비 결제 — 팀 참가비는 대회가 정한 금액 그대로 팀당 1건 결제(팀원 수 곱셈 없음). 무료 대회는 자동 결제완료 처리. 결제 기한 내 미납 확정 팀은 자동 취소되고, 대기 팀이 결제 기한을 새로 부여받아 승격되며, 승격 팀도 미납이면 같은 방식으로 재취소 · 재승격됩니다.
  • 레인 배정 · 순환 — 관리자가 조별 레인 구성과 게임 간 순환 방식(순환 없음 / 교차 순환 / 이동 순환)을 설정하면, 첫 게임 레인은 자동(무작위) 배정되고 이후 게임은 설정한 방식대로 자동 전환됩니다. 개별 팀 · 게임 단위 수동 조정도 가능(같은 조 안 레인 중복은 거부).
  • 팀 성적 · 핸디캡 — 팀원별 게임 성적은 관리자가 직접 입력하며(참가자 본인 제출 절차 없음), 핸디캡이 자동 반영됩니다. 팀 확정은 로스터 전원이 모든 게임의 성적 또는 결장(불참) 처리를 보유해야 가능하며, 확정 후 수정하면 확정 · 공개가 함께 자동 해제됩니다.
  • 순위 · 공개 — 확정된 팀만을 대상으로 순위를 자동 집계하며(동점 시 핸디캡 총점 → 최고 게임 → 평균 → 스크래치 총점 순), 관리자가 공개를 켜기 전까지 팀 · 개인 순위는 비공개입니다.
  • 명예의 전당 자동 연동 — 결과가 공개되면 순위 1위 팀(공동 우승 포함) 로스터 전원이 명예의 전당에 자동 등재되며, 이후 우승 팀 변경 · 공개 취소 시 자동 등재 기록도 함께 갱신됩니다(관리자가 직접 등록한 기록은 영향받지 않음).
개인 종합전 리그(PERSONAL_AGGREGATE) — 설계 검토 중

개인 참가자가 팀 없이 개인 단위로 리그에 접수해, 회차(매치데이)마다 자기 게임 점수만 쌓아 순위를 겨루는 방식입니다. 상대와 대진을 겨루지 않고 누적 성적만으로 순위를 매기는 "종합전"이며, 이 설계안은 아직 CTO 검토를 기다리는 단계로 서버에 구현 · 배포되지 않았습니다.

  • 접수 — 팀이 아니라 참가자 개인 단위로 정원 · 대기(승계)를 산정, 동일 인물의 중복 접수를 방지
  • 점수 입력 — 회차별로 참가자 본인이 직접 점수를 입력 · 제출하면 관리자가 확정 · 정정 · 반려(기존 리그 · BMT 워크플로우와 동일한 방식)
  • 순위 — 확정된 점수만 누적, 핸디캡이 설정된 리그는 핸디 적용 점수 기준(원점수 병기), 확정 시점 핸디를 고정해 이후 개인 핸디가 바뀌어도 과거 순위는 흔들리지 않음
  • 동점 처리 — 핸디 적용 총핀 → 원점수 총핀 순으로 우선순위, 그래도 같으면 공동순위
  • 시즌 종료 — 관리자가 수동으로 종료하면 확정 점수 기준 최종 순위를 스냅샷으로 저장(종료 후 값 변동 없음)
  • 기존 클럽(팀) 리그와의 관계 — 팀 리그 데이터 · 로직은 변경 없이 그대로 유지되는 별도 경로로 설계
확정 대기 참가자끼리 1:1로 승부를 겨루는 "개인 대결전(PERSONAL_HEAD_TO_HEAD)"은 이번 설계 범위(개인 종합전)에 포함되지 않는 후속 단계이며, 아직 별도 설계 문서가 없어 확정 대기 상태입니다.
05

볼 등록 · 공인구 연동 방식 개요 — 진승 연동점

  • 참가자는 브랜드 · 모델 · 무게(11~16파운드) · 시리얼 · 비고 다섯 항목을 필수 신고
  • 대회별 참가자 1인당 등록 개수 상한을 관리자가 설정
  • 등록은 참가비 결제 완료자만 가능, 마감 이후에는 조회만 가능
  • 신고된 시리얼을 진승 공인구 원장과 실시간 대조 — 확인 결과는 참고 표시, 최종 규정 판정은 항상 관리자의 현장 검수
  • 관리자는 대리 등록 · 수정 · 삭제(마감 · 개수 제한 무관), 확인 여부 수동 보정, 등록 현황 파일 내려받기 가능
안전장치 진승 연동이 일시 장애 상태이더라도 볼 등록 접수 자체는 계속됩니다. 확인 여부만 "미확인"으로 남기고 장애 해소 후 보정하여, 외부 연동 장애가 대회 운영을 막지 않게 합니다.
06

예약(레인 · 락커) 운영 모델 개요

레인
  • 시간대별 가용 현황 조회 · 예약
  • 대회 전체 대관 시 해당 시간대 레인 자동 예약 불가 처리(이중 배정 방지)
  • 대회 등록 · 수정 시 정원이 배정 레인의 실제 수용 인원을 초과하지 않도록 자동 검증
  • 관리자는 월간 예약 현황을 색상 표시 달력으로 확인
락커
  • 임대 · 연장 가능, 만료 임박 시 회원에게 안내
  • 신규 · 연장 신청은 앱 내 결제로 확정(결제 완료 전 신청은 서버에 남지 않음)
  • 일부 락커는 3개월 단위 단기 상품, 신청일 기준 만료일 자동 계산
  • 결제 대기 · 완료 등 진행 중인 신청은 "내 락커" 화면 상단에서 바로 확인
07

단계별 구축 순서

8개 운영 영역은 아래와 같이 진행 중입니다.

상태영역
구축 · 운영 중회원 · 등급 · 인증, 대회 · 이벤트 접수, 클럽 · 리그, 레인 · 락커 예약, 볼 등록 · 공인구 확인, 성적 · 등급 · 통계, 게시판 · 소셜, 결제
진행 중알림 종류별 실시간 푸시 발송, 홈 화면 개편 등 세부 기능
백로그매출 · 정산 리포트, 멀티 지점 관리, 키오스크 모드 — 별도 요구사항정의서로 상세화 예정
참고 대회 · 이벤트 접수 영역의 단체전(CLUB · 프로암) 팀 운영(팀 생성부터 레인 배정 · 성적 · 순위 · 명예의 전당 연동까지)은 2026-07-12 프로덕션에 반영 완료되었습니다.
참고 클럽 · 리그 영역의 개인 종합전 리그(PERSONAL_AGGREGATE) 설계안은 CTO 검토 대기 상태이며, 검토 · 확정 후 개발이 진행됩니다.
08

확정 대기 · 다음 단계

아래 항목은 현시점에서 확정되지 않았으며, 후속 검토를 통해 확정합니다.

서비스 수준(SLA) · 세부 일정
가동률 · 응답시간 등 서비스 수준 목표와 세부 일정은 별도 협의로 확정합니다.
실시간 푸시 알림 도입 일정
알림 종류별 실시간 푸시 발송은 순차 도입 중이며, 전체 도입 일정은 별도 협의로 확정합니다.
단체전 팀 로스터 중도 교체 전용 절차
현재는 로스터 인원 교체 시 신규 등록으로 최소 대응하고 있으며, 전용 교체 관리 화면 · 절차는 후속 검토를 통해 확정합니다.
개인 종합전 리그(PERSONAL_AGGREGATE) 설계 확정
§04에 반영한 개인 종합전 리그 설계안은 CTO 검토 대기 상태이며, 검토 · 확정 후 개발 · 배포됩니다. 참가자끼리 1:1로 승부를 겨루는 "개인 대결전(PERSONAL_HEAD_TO_HEAD)"은 이번 설계 범위(개인 종합전)에 포함되지 않는 후속 단계이며, 아직 별도 설계 문서가 없어 확정 대기 상태입니다.
다음 단계 산출물

개발 설계(논리 데이터 모델 · API 개요)를 상세화하고 단계별로 검수합니다.

본 문서는 초안(v0.5)이며 검수 대기 상태입니다. 내용 확인 · 수정 요청은 상단의 수정 요청을, 검수 완료 시 검수 승인을 이용해 주세요.