예약 & 영상 시스템
문서 정보
- 작성일: 2026-02-27
- 최종 업데이트: 2026-02-27
- 버전: v1.0.0
TL;DR
사용자가 체육관 코트에서 **녹화를 예약(Recording)**하면, 카메라가 촬영한 영상이 **10분 단위 세그먼트(Video)**로 클라우드에 저장됩니다. 저장된 영상은 일정 기간 후 만료되며, 원본 4K 영상을 영구 소장하려면 카메라당 2,000캐쉬로 구매할 수 있습니다.
목차
- 전체 구조 한눈에 보기
- 녹화 예약 (Recording)
- 영상 (Video)
- 10분 세그먼트 구조
- 멀티카메라와 메타데이터
- 영상 저장소 구조
- 영상 만료 정책
- 자동 예약 vs 개별 예약
- 초상권 동의
- 영상 구매
- FAQ
전체 구조 한눈에 보기
스포클립의 예약 & 영상 시스템은 크게 예약 흐름과 영상 흐름 두 축으로 구성됩니다.
핵심 엔티티 관계
| 엔티티 | 역할 | 관계 |
|---|---|---|
| Recording | 녹화 시간대 컨테이너 | 체육관 + 코트 + 시작/종료 시간 |
| Schedule | 사용자별 예약 기록 | Recording 1 : N Schedule |
| UserSchedule | 접근 권한 및 만료 관리 | Schedule 1 : N UserSchedule |
| Video | 10분 단위 영상 | Recording 1 : N Video |
녹화 예약 (Recording)
Recording이란?
Recording은 특정 체육관의 특정 코트에서 특정 시간대에 이루어지는 녹화의 컨테이너입니다.
하나의 Recording에 여러 사용자의 예약(Schedule)이 연결될 수 있습니다. 같은 시간, 같은 코트에서 운동하는 사람들은 모두 같은 Recording을 공유합니다.
Recording의 주요 필드
| 필드 | 설명 | 예시 |
|---|---|---|
date | 녹화 날짜 | 2026-02-27 |
startTime | 녹화 시작 시간 | 14:00:00 (KST) |
endTime | 녹화 종료 시간 | 15:00:00 (KST) |
gymId | 체육관 | 이동국 FC |
courtId | 코트 | 실내 A 구장 |
expiresAt | 만료 시점 | 녹화 종료 후 일정 시간 |
Recording이 생성되는 3가지 시점
동일 코트-시간대 중복 방지
같은 코트에서 같은 시작/종료 시간의 Recording은 하나만 존재합니다. 이미 있으면 기존 Recording에 연결됩니다.
영상 (Video)
Video란?
Video는 Recording 시간대 안에서 생성되는 10분 단위 영상 파일의 메타데이터입니다.
예를 들어 1시간(60분) 녹화가 진행되면, 6개의 Video 레코드가 생성됩니다.
Video의 주요 필드
| 필드 | 설명 | 예시 |
|---|---|---|
recordingId | 소속 Recording | Recording #42 |
gymId | 체육관 | 이동국 FC |
courtId | 코트 | 실내 A 구장 |
date | 녹화 날짜 | 2026-02-27 |
hour | 시(0~23) | 14 |
timeSlot | 10분 슬롯(0~5) | 0 (= xx:00~xx:09) |
videoType | 영상 타입 | RAW_VIDEO |
metadata | 카메라별 파일 정보 (JSON) | videoResources[] |
expiresAt | 영상 만료 시점 | 2026-03-01T15:00:00Z |
status | 상태 | ACTIVE |
10분 세그먼트 구조
영상은 시간(hour) + 타임슬롯(timeSlot) 조합으로 정확한 10분 구간을 식별합니다.
타임슬롯 번호와 시간 매핑
| timeSlot | 시간 범위 | 예시 (14시 기준) |
|---|---|---|
| 0 | xx:00 ~ xx:09 | 14:00 ~ 14:09 |
| 1 | xx:10 ~ xx:19 | 14:10 ~ 14:19 |
| 2 | xx:20 ~ xx:29 | 14:20 ~ 14:29 |
| 3 | xx:30 ~ xx:39 | 14:30 ~ 14:39 |
| 4 | xx:40 ~ xx:49 | 14:40 ~ 14:49 |
| 5 | xx:50 ~ xx:59 | 14:50 ~ 14:59 |
유니크 제약 조건
하나의 영상은 체육관 + 코트 + 날짜 + 시 + 타임슬롯 조합으로 유일하게 식별됩니다.
예: "이동국 FC / A코트 / 2026-02-27 / 14시 / 슬롯 2" = 14:20~14:29의 영상