- OTT 콘텐츠 과잉
- 국내 OTT 시장 규모: 2023년 약 1.4조원.
- 20~30대가 전체 이용자의 80% 이상, 구독 플랫폼 평균 2.8개 보유.
- 방대한 선택지로 ‘무엇을 볼지’ 고민에 평균 10~20분 이상 소모.
- 통합 추천 서비스 부재
- 플랫폼별 앱을 오가며 콘텐츠를 검색해야 하는 불편.
- 기존 서비스(예: 키노라이츠)는 최소 10편 평가 후 추천, 실시간 개인화 한계.
- 능동적 피드백 수집의 어려움
- ‘좋아요/싫어요’ 클릭률 저조, 피드백 데이터 부족.
- 초기 성향 설정
- 회원가입 시 OTT 구독 플랫폼·선호 장르 설문.
- 스와이프 기반 실시간 피드백
- 릴스형 숏폼 UI, 오른쪽 스와이프 좋아요, 왼쪽 스와이프 싫어요, 아래 관심없음.
- 구독 플랫폼 통합 추천
- 구독 중인 OTT 콘텐츠 우선 추천, 미구독 콘텐츠 병행 노출.
- 마이페이지 피드백 수정
- 이전 피드백 히스토리 수정 기능 제공, 추천 알고리즘에 반영.
- OTT 콘텐츠 필터링해서 보기
👉 카카오 로그인을 이용해 회원가입 및 로그인을 진행할 수 있다.
👉 처음 가입하는 사용자는 자신이 구독하고 있는 OTT 플랫폼과 선호하는 장르를 추천받을 수 있다.
👉 사용자는 자신이 선호하는 장르에 기반한 콘텐츠들의 카드를 넘겨 OTT 콘텐츠들을 추천받을 수 있다.
👉 이때, 추천받은 콘텐츠에 대해 좋아요/싫어요/관심없음 의 피드백을 남길 수 있으며, 이 피드백으로 다음 추천 콘텐츠들이 결정된다.
👉 20개의 피드백을 남기면 3개의 엄선된 추천 콘텐츠를 확인할 수 있다.
👉 각 콘텐츠 카드 우상단의 새로운 추천 콘텐츠를 확인할 수 있다.
👉 찾아보기 탭에서 OTT 콘텐츠들을 확인할 수 있다.
👉 필터링 기능을 통해 OTT / 카테고리 / 장르 / 국가 등으로 콘텐츠들을 필터링할 수 있다.
👉 요일별 추천 콘텐츠를 확인할 수 있다.
👉 인기 콘텐츠를 확인할 수 있다.

👉 마이페이지에서는 사용자의 정보를 확인할 수 있다.
👉 사용자는 회원가입 시 작성한 설문의 내용(구독하고 있는 OTT 플랫폼, 선호 장르)를 확인하고, 수정할 수 있다.
👉 사용자는 자신의 피드백 히스토리를 확인하고, 이전에 남긴 피드백을 수정할 수 있다.
👉 관리자는 ADMIN 페이지에서 콘텐츠 목록을 확인할 수 있다.
👉 관리자는 ADMIN 페이지에서 콘텐츠 수정 및 삭제를 확인할 수 있다.
👉 관리자는 ADMIN 페이지에서 콘텐츠를 등록 시 배치 예정 목록에 등록할 수 있다.
👉 관리자는 출연진/감독을 등록하거나 검색할 수 있다.
👉 관리자는 등록/삭제/수정한 콘텐츠의 배치 예정/결과목록을 확인할 수 있다.
👉 관리자는 등록/삭제/수정한 콘텐츠의 배치 예정/결과집계 확인할 수 있다.
👉 관리자는 등록/삭제/수정한 콘텐츠의 배치 상세정보를 확인할 수 있다.

- develop: 개발용 메인 브랜치
- prod: 배포용 브랜치
- feature: 기능 개발 브랜치
feat/UDT-22-구현할-기능-기반-네이밍
fix/UDT-22-고쳐야될-부분-네이밍
refactor/UDT-22-리팩토링-부분-네이밍
예시:
feat/UDT-22-회원가입feat/UDT-22-1차-추천알고리즘fix/UDT-22-회원가입-검증오류refactor/UDT-22-dto-record로-변경
- develop에서 feature 브랜치 생성
- 기능 개발 및 커밋
- PR 생성 및 코드 리뷰
- develop 브랜치로 머지
- 배포 시 develop → prod
UDT-[티켓번호] [타입]: [간단한 설명]
| 타입 | 설명 |
|---|---|
feat |
새로운 기능 추가 |
fix |
버그 수정 |
refactor |
리팩토링 (기능 변화 없음) |
hotfix |
빠르게 버그 수정 |
docs |
문서 수정 |
test |
테스트 코드 |
chore |
빌드, 배포 관련 |
예시: UDT-XXX feat: 사용자 인증 기능 구현
com.example.udtbe/
├── domain/
│ ├── admin/
│ │ ├── controller/
│ │ ├── dto/
│ │ ├── exception/
│ │ └── service/
│ ├── auth/
│ ├── content/
│ ├── file/
│ ├── member/
│ └── survey/
├── global/
│ ├── config/
│ ├── dto/
│ ├── entity/
│ ├── exception/
│ ├── log/
│ ├── security/
│ ├── token/
│ └── util/
└── UdtBeApplication
- 엔드포인트:
/api/users형식 - 컨트롤러 메서드:
- 리스트:
getUsers() - 단일:
getUser()
- 리스트:
- 서비스 메서드:
getUsers()
findUser←findByUserById()savedUser←.save()
- Record 사용:
Entity(User)~~Request,Entity(User)~~Response - 생성자: 정적메서드 사용 (
of,fromXX) - 참조형 클래스:
~~DTO(예:PlatformDTO) - 커서 페이지네이션:
CursorPageResponse<~~GetResponse>
@GetMapping
public ResponseEntity<?> getUser(@AuthenticationPrincipal Long userId) {
// 구현
}- 다운로드: Google Java Style Guide
- Settings → Editor → Code Style → Java → 구성표 가져오기
- 들여쓰기: 4 4 8 0 고정
- Settings → Tools → Actions on Save
- ✅ Reformat code
- ✅ Optimize imports
- develop: CI/CD (빌드 및 테스트, 배포)
- prod: CD (배포)
- Controller → Service → Repository 계층 구조 준수
- 각 레이어의 역할과 책임 명확히 분리
@RequiredArgsConstructor활용한 생성자 주입 권장
- 비즈니스 로직에 대한 단위 테스트 필수
- 통합 테스트를 통한 전체 플로우 검증

