Recording 예약 시스템 연동 가이드
문서 정보
- 작성일: 2026-02-19
- 최종 업데이트: 2026-02-19
- 버전: v1.0.0
TL;DR
WebSocket으로 fetch-info → reserve 순서로 호출하면 녹화 예약이 완료됩니다. 모든 시간은 UTC ISO8601로 전송하고, endTime = startTime + recordingInterval로 계산합니다.
목차
전체 플로우
fetch-info: 체육관 정보 조회
예약 전에 반드시 fetch-info를 먼저 호출해야 합니다.
응답 예시
{
"data": {
"gym": {
"uuid": "0198fbbb-e03e-...",
"gymCode": "8ec9c43b...",
"name": "이동국 FC",
"operatingHours": [
{ "day": "MONDAY", "openTime": "00:00", "closeTime": "24:00" },
{ "day": "TUESDAY", "openTime": "09:00", "closeTime": "24:00" },
{ "day": "WEDNESDAY", "openTime": "09:00", "closeTime": "24:00" },
// ...
],
},
"court": {
"uuid": "0198fbbb-e4e4-...",
"name": "실내 A, B 구장",
"recordingInterval": 60,
},
},
}
클라이언트가 사용할 핵심 값:
| 필드 | 설명 | 용도 |
|---|---|---|
operatingHours | 요일별 운영시간 (KST) | 예약 가능 시간대 UI 표시 |
recordingInterval | 녹화 1회 길이 (분) | endTime 계산에 사용 |
reserve: 예약 생성
요청 형식
{
gymUuid: string; // fetch-info에서 받은 gym.uuid
courtUuid: string; // fetch-info에서 받은 court.uuid
startTime: string; // ISO8601 UTC
endTime: string; // ISO8601 UTC
triggeredAt: string; // ISO8601 UTC (버튼 클릭 시점)
portraitRightsConsent: boolean; // 초상권 동의 (필수: true)
latitude?: number; // GPS 위도 (선택)
longitude?: number; // GPS 경도 (선택)
}
시간 계산 방법
핵심 규칙
- 모든 시간은 UTC ISO8601 형식으로 전송
endTime = startTime + recordingInterval(분)triggeredAt은 반드시startTime ~ endTime사이
예시: recordingInterval = 60분
사용자가 KST 2026-02-19 14:30에 예약 버튼을 누른 경우:
{
"gymUuid": "0198fbbb-e03e-...",
"courtUuid": "0198fbbb-e4e4-...",
"startTime": "2026-02-19T05:00:00.000Z", // KST 14:00
"endTime": "2026-02-19T06:00:00.000Z", // KST 15:00 (14:00 + 60분)
"triggeredAt": "2026-02-19T05:30:00.000Z", // KST 14:30 (버튼 누른 시점)
"portraitRightsConsent": true,
}
운영시간 이해하기
운영시간은 KST 기준으로 저장되며, 3가지 패턴이 있습니다.
언제 뭘 쓸까?
| 패턴 | openTime-closeTime | 판단 기준 | 의미 |
|---|---|---|---|
| 일반 운영 | 09:00-24:00 | openTime < closeTime | 당일 09시 ~ 자정 |
| 24시간 운영 | 00:00-24:00 | openTime=00:00, closeTime=24:00 | 하루 종일 |
| 새벽/자정 넘김 | 18:00-03:00 | openTime > closeTime | 당일 18시 ~ 익일 03시 |
자정 넘김 판단법
openTime > closeTime이면 자정을 넘기는 운영시간입니다. 클라이언트는 이 조건으로 UI에 다음 날까지 표시해야 합니다.
자정 넘김 시각화
금요일 18:00-03:00 = 금요일 18시부터 토요일 03시까지 연속 운영
자정 넘김 예약 예시
체육관 운영시간이 금요일 18:00-03:00일 때, 사용자가 KST 토요일 01:30에 예약:
{
"startTime": "2026-02-20T16:00:00.000Z", // KST 토 01:00
"endTime": "2026-02-20T17:00:00.000Z", // KST 토 02:00
"triggeredAt": "2026-02-20T16:30:00.000Z", // KST 토 01:30
}
클라이언트는 자정 넘김 검증 로직을 몰라도 됩니다
UTC 시간만 정확히 보내면 서버가 알아서 처리합니다. 서버는 당일 운영시간 체크 후, 전날 자정 넘김 여부까지 자동으로 확인합니다.