일정 (User Schedule)
문서 정보
- 작성일: 2026-02-23
- 최종 업데이트: 2026-03-02
- 버전: v3.0.0
일정(UserSchedule)은 **"이 사용자가 이 녹화에 참여했는가?"**를 기록하는 엔티티이자, Spoclip 서비스의 **Hub(중심축)**입니다. 콕, 마이콕, 댓글, 앨범, 공유, 활동 보상, 영상 시청 등 거의 모든 핵심 기능이 일정을 통해 연결됩니다. GPS 기반 녹화 예약 시 OWNER로, 공유 링크 접근 시 SHARED로 생성되며, 생성 시점의 멤버십 상태에 따라 FREE 또는 PLUS 패스가 자동 적용됩니다.
목차
핵심 개념
일정이란?
체육관에서 녹화가 이루어지면, 그 녹화에 참여한(또는 공유받은) 각 사용자마다 **일정(UserSchedule)**이 하나씩 생성됩니다.
일정은 단순한 "예약 기록"이 아닙니다. 영상 시청, 콕 생성, 앨범 관리, 공유, 활동 보상 등 Spoclip의 거의 모든 기능이 일정을 기준으로 동작합니다. 일정이 없으면 해당 녹화의 어떤 콘텐츠에도 접근할 수 없습니다.
한 줄 비유
일정은 놀이공원 입장 팔찌와 같습니다. 팔찌(일정)가 있어야 놀이기구(영상, 콕, 앨범 등)를 이용할 수 있고, 팔찌 종류(FREE/PLUS)에 따라 이용할 수 있는 범위가 달라집니다.
Hub 역할 — 왜 일정이 중심인가
일정은 Spoclip 도메인에서 가장 많 은 엔티티와 연결되는 중심 엔티티입니다. 아래 다이어그램은 일정을 중심으로 연결되는 모든 도메인을 보여줍니다.
일정을 조회하면 해당 녹화에 대한 모든 사용자 활동을 파악할 수 있습니다. 콕을 몇 개 찍었는지, 마이콕에 저장했는지, 영상을 다운로드했는지, 운동 컨디션을 기록했는지 — 모두 일정에 연결되어 있습니다.
연결되는 주요 기능
| 연결 도메인 | 관계 | 설명 |
|---|---|---|
| 콕 (Kok) | 1:N | 일정 내에서 생성한 콕 목록 |
| 마이콕 (MyKok) | 1:N | 콕을 영구 저장한 마이콕 |
| 운동 컨디션 | 1:1 | 해당 일정의 운동 상태 기록 (PLUS 전용) |
| 활동 보상 | 1:N | 콕 시청 리워드, 운동 컨디션 리워드 등 |
| 카메라 잠금해제 | 1:N | 광고 시청으로 잠금해제한 카메라 기록 |
| 패스 스냅샷 | N:1 | 적용된 패스 정책의 시점별 스냅샷 |
| 공유 링크 | N:1 | SHARED 사용자가 접근한 공유 링크 |
| 댓글 | 1:N | Recording에 작성한 댓글 (OWNER/SHARED 모두 가능) |
생성 경로
일정이 생성되는 경로는 크게 두 가지입니다.
1. 개별 예약 (INDIVIDUAL) — OWNER
사용자가 체육관에서 GPS 위치 검증을 통해 녹화를 예약하는 경우입니다.
- 사용자 앱에서 GPS 위치 검증 → WebSocket 연결 → 예약 요청
- 하나의 트랜잭션으로 Recording + Schedule + UserSchedule 동시 생성
- 일정의 소유권은 OWNER, 접근 상태는 ACCESSIBLE
- 사용자의 멤버십 상태에 따라 FREE 또는 PLUS 패스 자동 적용
- GPS 위치 검증에 대한 자세한 내용은
docs/maintained/recording/adr/001-gps-location-validation.md참고
2. 공유 (SHARED)
다른 사용자가 공유 링크를 통해 접근하여 생성되는 경우입니다.
- OWNER가 생성한 공유 링크(토큰 + 비밀번호)를 통해 접근
- 일정의 소유권은 SHARED
- 접근 상태는 보안 레벨에 따라 결정:
- LEVEL_1: 비밀번호 확인 후 즉시 ACCESSIBLE
- LEVEL_2: 비밀번호 확인 후 REQUESTED (OWNER 승인 필요)
- 공유받은 사용자 본인의 멤버십 상태에 따라 패스 자동 적용
어떤 경로로 생성되든, 일정이 생성되는 시점에 사용자의 멤버십 상태를 확인하여 FREE 또는 PLUS 패스가 자동으로 적용됩니다. 별도의 패스 선택 과정은 없습니다.
소유권 (Ownership)
모든 일정에는 소유권 유형이 지정됩니다. OWNER(소유자)와 SHARED(공유자) 두 가지가 있습니다.