Skip to content

UDT-Uplus-Dream-Team/UDT-fe-admin

Repository files navigation

🛠️ 반딧불 - OTT 콘텐츠 추천 서비스 백오피스 (Admin Dashboard)

"반딧불 서비스의 모든 데이터와 운영을 효율적으로 관리하기 위한 강력한 백오피스 시스템."


🧭 프로젝트 개요

📌 백오피스 목적

반딧불 서비스의 콘텐츠, 사용자, 시스템 운영을 통합 관리하는 관리자 전용 대시보드입니다. DB 직접 접근 없이도 모든 핵심 기능을 웹 인터페이스를 통해 수행할 수 있도록 설계되었습니다.

  • 효율적인 콘텐츠 관리: 검색, 등록, 수정, 삭제 기능을 통한 콘텐츠 라이프사이클 관리
  • 배치 작업 모니터링: 시스템 내 배치 처리 현황 실시간 추적 및 제어
  • 사용자 데이터 분석: 회원 관리 및 선호도 통계 분석을 통한 서비스 개선 인사이트 제공

🎯 핵심 기능

1. 📋 콘텐츠 관리

  • CRUD 작업: 콘텐츠 등록, 수정, 삭제, 조회
  • 검색 시스템: 출연진, 감독, 콘텐츠별 통합 검색
  • 실시간 관리: DB 및 Amazon S3 직접 접근 없이 웹 인터페이스를 통한 즉시 작업 수행
  • 카테고리 통계: 장르별 콘텐츠 분포 시각화

2. ⚙️ 배치 처리 시스템

  • 대기열 모니터링: 서버 내 배치 요청 현황 실시간 조회
  • 작업 상세 로그: 개별 배치 작업의 상세 실행 로그 확인
  • 실패 작업 관리: 실패한 배치 재시도 및 무효화된 배치 취소
  • 결과 분석: 배치 처리 성공/실패 통계 및 성능 모니터링

3. 👥 회원 관리 & 통계

  • 사용자 목록: 전체 회원 정보 조회 및 관리
  • 선호도 분석: 회원별 좋아요/싫어요 피드백 통계
  • 장르 선호도: 사용자 장르 선호도 시각화 (차트/그래프)
  • 동기화 작업: 회원정보 수동/자동 동기화 기능

📁 프로젝트 구조

🛠️ UDT-fe-admin/
├── 📂 public/ # 정적 자산
│ ├── icons/ # 관리자 페이지 전용 아이콘
│ └── images/ # 이미지 자산 (장르, OTT 로고 등)
├── 📂 src/
│ ├── 📂 app/
│ │ ├── 📂 login/ # 🔐 관리자 로그인 페이지
│ │ ├── layout.tsx # 관리자 페이지 전용 레이아웃
│ │ ├── globals.css # 전역 스타일
│ │ └── page.tsx # 🏠 메인 대시보드 (탭 기반 네비게이션)
│ ├── 📂 components/ # 재사용 가능한 UI 컴포넌트
│ │ ├── 📂 admin/ # 🛠️ 백오피스 전용 컴포넌트
│ │ │ ├── AdminDashboard.tsx # 콘텐츠 관리 메인 대시보드
│ │ │ ├── ContentCard.tsx # 콘텐츠 카드 컴포넌트
│ │ │ ├── ContentForm.tsx # 콘텐츠 등록/수정 폼
│ │ │ ├── ContentDetail.tsx # 콘텐츠 상세 정보 모달
│ │ │ ├── CategoryChart.tsx # 카테고리별 통계 차트
│ │ │ ├── SearchFilter.tsx # 콘텐츠 검색 필터
│ │ │ ├── 📂 batch/ # ⚙️ 배치 처리 관련 컴포넌트
│ │ │ ├── 📂 userManagement/ # 👥 회원 관리 관련 컴포넌트
│ │ │ └── 📂 dialogs/ # 🔍 검색 다이얼로그
│ │ │ ├── actorSearchDialog.tsx # 배우 검색 다이얼로그
│ │ │ └── directorSearchDialog.tsx # 감독 검색 다이얼로그
│ │ ├── 📂 common/ # 🔄 공통 컴포넌트
│ │ └── 📂 ui/ # 🎨 shadcn/ui 기반 기본 컴포넌트
│ ├── 📂 hooks/ # Tanstack Query 기반 데이터 관리 Hooks 등 다양한 Custom Hooks를 저장해 둔 폴더
│ │ └── 📂 admin/ # 관리자 전용 API Hooks
│ ├── 📂 lib/ # 유틸리티 함수 및 설정
│ │ ├── 📂 apis/ # API 통신 관련 함수들
│ │ │ └── 📂 admin/ # 관리자 API 함수들
│ │ └── 📂 utils/ # 공통 유틸리티 함수
│ └── 📂 types/ # TypeScript 타입 정의
│ └── 📂 admin/ # 관리자 전용 타입 정의

🚀 로컬 개발 환경 설정

필수 요구사항

  • Node.js 22.x 이상
  • npm 11.x 이상

🛠️ 로컬 개발 환경 실행 방법

1. 패키지 설치

npm install

2. SSL 인증서 설정 (선택사항)

2.1 mkcert 설치 및 SSL 인증서 생성

macOS (Homebrew):

# mkcert 설치
brew install mkcert
brew install nss # Firefox 사용 시

# 로컬 인증 기관(CA) 생성 및 시스템에 설치
mkcert -install

# localhost와 local.banditbool.com 도메인용 인증서 생성
mkcert localhost local.banditbool.com 127.0.0.1 ::1

Windows (Chocolatey):

# mkcert 설치
choco install mkcert

# 로컬 인증 기관(CA) 생성 및 시스템에 설치
mkcert -install

# localhost와 local.banditbool.com 도메인용 인증서 생성
mkcert localhost local.banditbool.com 127.0.0.1 ::1

2.2 인증서 배치

프로젝트루트/
├── localhost+3.pem # SSL 인증서
├── localhost+3-key.pem # 개인키
└── ... (기타 프로젝트 파일들)

3. 실행 방법

3.1 개발 환경 실행 (HTTPS)

npm run dev:https

3.2 개발 환경 실행 (HTTP)

npm run dev

3.3 프로덕션 빌드 및 실행

npm run build
npm run start

4. 접속

🌐 배포 주소

🚀 프로덕션 환경

  • 백오피스 대시보드: admin.banditbool.com

📱 접속 안내

  • 권장 브라우저: Chrome, Safari, Edge 최신 버전
  • 화면 해상도: 데스크탑 환경 최적화 (1920x1080 이상 권장)
  • 반응형 지원: 태블릿 및 모바일 기기에서도 사용 가능

⚠️ 관리자 전용 서비스
본 백오피스는 전용 관리자 계정을 통해서만 접근 가능합니다. 배치 작업은 매일 오전 4시에 일괄 처리되어 현황을 확인할 수 있습니다.


🖥️ 주요 화면 및 기능

1. 콘텐츠 관리 대시보드 (content-management)

서비스 내 모든 콘텐츠의 생성, 수정, 삭제, 조회를 담당하는 핵심 관리 페이지입니다.

스크린샷1 스크린샷2

주요 기능:

  • 콘텐츠 목록 조회: 무한 스크롤 기반 전체 콘텐츠 리스트
  • 카테고리별 필터링: 장르별 콘텐츠 분류 및 통계
  • 실시간 검색: 제목, 출연진, 감독 기반 통합 검색
  • CRUD 작업:
    • 등록: 새로운 콘텐츠 추가 (기본정보, 출연진, 상세정보)
    • ✏️ 수정: 기존 콘텐츠 정보 업데이트
    • 🗑️ 삭제: 콘텐츠 제거 (연관 데이터 정리 포함)
    • 👀 상세 조회: 모달 형태의 콘텐츠 상세 정보

특징:

  • DB 직접 접근 없이 웹 인터페이스를 통한 모든 작업 수행
  • 출연진/감독 검색 다이얼로그를 통한 정확한 인물 정보 연결
  • 카테고리별 통계 차트로 콘텐츠 분포 현황 파악

2. 배치 대기열 관리 (request-queue)

서버 내에서 대기 중인 배치 처리 요청들을 실시간으로 모니터링하는 페이지입니다.

스크린샷 2025-08-07 16 53 50

주요 기능:

  • 대기열 현황: 처리 대기 중인 배치 작업 목록
  • 작업 타입별 분류: 콘텐츠 등록, 수정, 삭제 등 작업 유형별 구분
  • 우선순위 관리: 배치 작업의 처리 순서 확인
  • 실시간 상태 업데이트: 대기열 변화 자동 갱신

통계 정보:

  • 총 대기 중인 작업 수
  • 작업 타입별 분포
  • 평균 대기 시간
  • 시간대별 요청 패턴

3. 배치 결과 분석 (batch-result)

완료된 배치 작업들의 결과를 분석하고 실패한 작업을 관리하는 페이지입니다.

스크린샷 2025-08-07 16 52 34

주요 기능:

  • 처리 결과 조회: 성공/실패한 배치 작업 목록
  • 상세 로그 확인: 개별 배치 작업의 실행 로그 및 오류 정보
  • 실패 작업 재시도: 실패한 배치 작업 재실행
  • 무효 작업 정리: 취소되거나 무효화된 배치 작업 일괄 삭제

모니터링 지표:

  • 성공률 통계
  • 처리 시간 분석
  • 오류 패턴 분석
  • 시스템 성능 지표

4. 회원 정보 관리 (member-management)

서비스 가입 회원들의 정보와 선호도를 관리하고 분석하는 페이지입니다.

1 2

3

주요 기능:

  • 회원 목록: 전체 사용자 목록 및 기본 정보 조회
  • 회원 상세 정보: 개별 사용자의 상세 프로필 및 활동 이력
  • 선호도 통계: 사용자별 좋아요/싫어요 피드백 분석
  • 장르 선호도 시각화:
    • 막대 차트, 파이 차트, 전체 선호도 수치를 제공하는 표 등 다양한 형태로 제공

관리 기능:

  • 회원 정보 수동 동기화
  • 자동 동기화 스케줄 관리
  • 비활성 회원 관리
  • 회원 피드백 데이터 분석

통계 대시보드:

  • 총 회원 수 및 증가율
  • 활성 회원 비율
  • 장르별 인기도 트렌드
  • 연령대별/성별 선호도 분석

🧱 기술 스택

기술 설명
TypeScript 정적 타입으로 안정적인 협업 지원
React 19 컴포넌트 기반 UI, 관리자 도구에 최적화
Next.js 15 (App Router) SSR/CSR 하이브리드, API Route 활용
Tailwind CSS + shadcn/ui 유틸리티 퍼스트 CSS, 접근성 높은 관리자 UI
Tanstack Query + Axios 서버 상태 캐싱 및 실시간 데이터 동기화
Recharts 데이터 시각화 및 통계 차트
Lucide React 일관된 아이콘 시스템
ESLint + Prettier + Husky 코드 품질 관리 및 커밋 전 자동 검사

🔐 보안 및 인증

  • JWT 기반 인증: 관리자 권한 검증
  • 역할 기반 접근 제어: 관리자 레벨별 기능 제한
  • API 보안: 모든 요청에 대한 권한 검증
  • HTTPS 지원: 데이터 전송 암호화

📈 성능 최적화

  • 무한 스크롤: 대용량 데이터 효율적 로딩
  • 가상화: 긴 목록의 렌더링 성능 최적화
  • 캐싱 전략: Tanstack Query를 통한 스마트 캐싱
  • 번들 최적화: 코드 스플리팅 및 트리 쉐이킹

🚨 모니터링 및 알림

  • 실시간 배치 상태: 배치 처리 현황 실시간 모니터링
  • 오류 추적: 실패한 작업에 대한 상세 로그
  • 성능 지표: 시스템 처리량 및 응답 시간 추적

📝 라이센스

이 프로젝트는 LG유플러스 유레카 2기 과정의 최종 융합 프로젝트의 일환으로 개발되었습니다.

About

[LG 유플러스] 유레카 SW교육 2기 최종융합프로젝트 4조 백오피스 클라이언트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •