- 프로젝트 이름: 인사이드 무비 (Inside Movie)
- 프로젝트 설명: 사용자 감정 기반의 맟춤 영화 서비스
| 송창용 | 채상윤 | 김대환 | 양지선 | 김소희 | 이종진 |
|---|---|---|---|---|---|
| BackEnd AI CI/CD |
FrontEnd BackEnd |
BackEnd AI |
BackEnd | BackEnd | FrontEnd |
| GitHub | GitHub | GitHub | GitHub | GitHub | GitHub |
-
인공지능 기반의 복합 감정 리뷰 분석:
- KoBERT 모델을 이용하여 리뷰의 복합 감정 상태 분석
- 사용자 리뷰 집계를 통하여 영화의 대표 감정 프로필 생성
-
사용자 감정 매핑 및 맞춤 추천:
- 좋아요 한 영화를 기반으로 복합 감정 프로필 생성
- 사용자 감정 벡터와 영화 감정 벡터의 코사인 유사도 연산으로 관련도가 높은 영화 추천
-
주간 영화 대결 & 투표:
- 스케쥴러를 활용하여 일주일마다 자동으로 대결 생성
- 감정 상태별 대표 영화 세 가지 선정
- 역대 대결 내역 우승 영화 확인
| 송창용 |
|
|
| 채상윤 |
|
|
| 김대환 |
|
|
| 양지선 |
|
|
| 김소희 |
|
|
| 이종진 |
|
| FrontEnd | |
| BackEnd | |
| AI | |
| Infra | |
| Cooperation |
src
├── api
│ ├── axiosInstance.ts
│ ├── boxofficeApi.ts
│ ├── matchApi.ts
│ ├── memberApi.ts
│ ├── movieApi.ts
│ ├── recommendApi.ts
│ └── reviewApi.ts
├── App.css
├── App.tsx
├── assets
│ ├── appleTV+.png
│ ├── arrow_down.svg
│ ├── arrow_left.svg
│ ├── arrow_right.svg
│ ├── arrow_up.svg
│ ├── background_bubble.svg
│ ├── boxoffice_icon.svg
│ ├── calendar.svg
│ ├── character
│ ├── check.svg
│ ├── close.svg
│ ├── delete.svg
│ ├── disneyPlus.png
│ ├── down.svg
│ ├── edit.svg
│ ├── home_icon.svg
│ ├── insidemovie_blue_land.svg
│ ├── insidemovie_dark_long.svg
│ ├── insidemovie_white_long.svg
│ ├── insidemovie_white.png
│ ├── kakao.png
│ ├── like.svg
│ ├── logout.svg
│ ├── mail.svg
│ ├── match_icon.svg
│ ├── movie_background.png
│ ├── movie_icon.svg
│ ├── my_page.svg
│ ├── netflix.png
│ ├── nickname.svg
│ ├── password.svg
│ ├── profile
│ ├── report.svg
│ ├── sample_poster.png
│ ├── search.svg
│ ├── star_empty.svg
│ ├── star_full.svg
│ ├── star_half.svg
│ ├── styles
│ ├── TMDB.svg
│ ├── unlike.svg
│ ├── up.svg
│ ├── visibility_off.svg
│ ├── visibility_on.svg
│ ├── watcha.png
│ └── wavve.png
├── components
│ ├── BoxOfficeItem.tsx
│ ├── Button.tsx
│ ├── ConfirmDialog.tsx
│ ├── EmotionSlider.tsx
│ ├── Header.tsx
│ ├── home
│ ├── InputField.tsx
│ ├── MovieItem.tsx
│ ├── mypage
│ ├── MyReviewItem.tsx
│ ├── ReviewItem.tsx
│ ├── StarRating.tsx
│ ├── Tag.tsx
│ ├── TransparentBox.tsx
│ └── WinnerItem.tsx
├── fonts
│ ├── Paperlogy-1Thin.ttf
│ ├── Paperlogy-2ExtraLight.ttf
│ ├── Paperlogy-3Light.ttf
│ ├── Paperlogy-4Regular.ttf
│ ├── Paperlogy-5Medium.ttf
│ ├── Paperlogy-6SemiBold.ttf
│ ├── Paperlogy-7Bold.ttf
│ ├── Paperlogy-8ExtraBold.ttf
│ └── Paperlogy-9Black.ttf
├── index.css
├── interfaces
│ ├── boxOffice.ts
│ ├── movieOne.ts
│ └── review.ts
├── main.tsx
├── pages
│ ├── admin
│ └── user
├── services
│ ├── authorityFormating.ts
│ ├── calcPercentChange.ts
│ ├── dateFormating.ts
│ ├── mapMembersToRows.ts
│ ├── mapReportsToRows.ts
│ └── timeForToday.ts
├── types
│ ├── dashboardData.ts
│ ├── member.ts
│ ├── report.ts
│ ├── reportStatus.ts
│ └── svg.d.ts
└── vite-env.d.ts
src/main
├── java
│ └── com
│ └── insidemovie
│ └── backend
│ ├── api
│ │ ├── admin
│ │ │ ├── controller
│ │ │ │ └── AdminController.java
│ │ │ ├── dto
│ │ │ │ ├── AdminDashboardDTO.java
│ │ │ │ ├── AdminMemberDTO.java
│ │ │ │ ├── AdminReportDTO.java
│ │ │ │ └── TimeCountDTO.java
│ │ │ └── service
│ │ │ └── AdminService.java
│ │ ├── constant
│ │ │ ├── Authority.java
│ │ │ ├── EmotionType.java
│ │ │ ├── GenreType.java
│ │ │ ├── MovieLanguage.java
│ │ │ ├── ReportReason.java
│ │ │ ├── ReportStatus.java
│ │ │ └── ReviewSort.java
│ │ ├── Email
│ │ │ ├── controller
│ │ │ │ └── EmailController.java
│ │ │ └── Service
│ │ │ └── EmailService.java
│ │ ├── friend
│ │ │ └── entity
│ │ │ └── Friend.java
│ │ ├── jwt
│ │ │ ├── JwtFilter.java
│ │ │ └── JwtProvider.java
│ │ ├── match
│ │ │ ├── controller
│ │ │ │ └── MatchController.java
│ │ │ ├── dto
│ │ │ │ └── WinnerHistoryDto.java
│ │ │ ├── entity
│ │ │ │ ├── Match.java
│ │ │ │ ├── MovieMatch.java
│ │ │ │ └── Vote.java
│ │ │ ├── repository
│ │ │ │ ├── MatchRepository.java
│ │ │ │ ├── MovieMatchRepository.java
│ │ │ │ └── VoteRepository.java
│ │ │ ├── scheduler
│ │ │ │ └── MatchScheduler.java
│ │ │ └── service
│ │ │ └── MatchService.java
│ │ ├── member
│ │ │ ├── controller
│ │ │ │ └── MemberController.java
│ │ │ ├── dto
│ │ │ │ ├── emotion
│ │ │ │ │ ├── EmotionAvgDTO.java
│ │ │ │ │ ├── MemberEmotionSummaryRequestDTO.java
│ │ │ │ │ └── MemberEmotionSummaryResponseDTO.java
│ │ │ │ ├── KakaoUserInfoDto.java
│ │ │ │ ├── MemberInfoDto.java
│ │ │ │ ├── MemberLoginRequestDto.java
│ │ │ │ ├── MemberLoginResponseDto.java
│ │ │ │ ├── MemberSignupRequestDto.java
│ │ │ │ ├── NicknameCheckResponseDTO.java
│ │ │ │ ├── NicknameUpdateRequestDTO.java
│ │ │ │ ├── PasswordUpdateRequestDTO.java
│ │ │ │ ├── ProfileEmotionUpdateRequestDto.java
│ │ │ │ ├── TokenRequestDto.java
│ │ │ │ └── TokenResponseDto.java
│ │ │ ├── entity
│ │ │ │ ├── Member.java
│ │ │ │ └── MemberEmotionSummary.java
│ │ │ ├── repository
│ │ │ │ ├── MemberEmotionSummaryRepository.java
│ │ │ │ ├── MemberLikeRepository.java
│ │ │ │ └── MemberRepository.java
│ │ │ └── service
│ │ │ ├── MemberEmotionSummaryService.java
│ │ │ ├── MemberService.java
│ │ │ └── OAuthService.java
│ │ ├── movie
│ │ │ ├── config
│ │ │ │ ├── RedisConfig.java
│ │ │ │ └── RestTemplateConfig.java
│ │ │ ├── controller
│ │ │ │ ├── BoxOfficeController.java
│ │ │ │ └── MovieController.java
│ │ │ ├── dto
│ │ │ │ ├── boxoffice
│ │ │ │ │ ├── BaseBoxOfficeItemDTO.java
│ │ │ │ │ ├── BoxOfficeListDTO.java
│ │ │ │ │ ├── BoxOfficeRequestDTO.java
│ │ │ │ │ ├── DailyBoxOfficeResponseDTO.java
│ │ │ │ │ └── WeeklyBoxOfficeResponseDTO.java
│ │ │ │ ├── emotion
│ │ │ │ │ ├── MovieEmotionResDTO.java
│ │ │ │ │ └── MovieEmotionSummaryResponseDTO.java
│ │ │ │ ├── MovieDetailResDto.java
│ │ │ │ ├── MovieDetailSimpleResDto.java
│ │ │ │ ├── MovieSearchReqDto.java
│ │ │ │ ├── MovieSearchResDto.java
│ │ │ │ ├── MyMovieResponseDTO.java
│ │ │ │ ├── PageResDto.java
│ │ │ │ ├── PaginatedResponse.java
│ │ │ │ ├── RecommendedMovieReqDto.java
│ │ │ │ ├── RecommendedMovieResDto.java
│ │ │ │ ├── tmdb
│ │ │ │ │ ├── CastDTO.java
│ │ │ │ │ ├── CountryProvidersDTO.java
│ │ │ │ │ ├── CreditsDTO.java
│ │ │ │ │ ├── CrewDTO.java
│ │ │ │ │ ├── MovieDetailDTO.java
│ │ │ │ │ ├── ProviderDTO.java
│ │ │ │ │ ├── ReleaseDateDTO.java
│ │ │ │ │ ├── ReleaseDateResultDTO.java
│ │ │ │ │ ├── ReleaseDatesDTO.java
│ │ │ │ │ ├── SearchMovieResponseDTO.java
│ │ │ │ │ ├── SearchMovieWrapperDTO.java
│ │ │ │ │ └── WatchProviderDTO.java
│ │ │ │ └── TmdbGenreResponseDto.java
│ │ │ ├── entity
│ │ │ │ ├── boxoffice
│ │ │ │ │ ├── DailyBoxOfficeEntity.java
│ │ │ │ │ └── WeeklyBoxOfficeEntity.java
│ │ │ │ ├── Movie.java
│ │ │ │ ├── MovieEmotionSummary.java
│ │ │ │ ├── MovieGenre.java
│ │ │ │ ├── MovieHistory.java
│ │ │ │ └── MovieLike.java
│ │ │ ├── repository
│ │ │ │ ├── DailyBoxOfficeRepository.java
│ │ │ │ ├── MovieEmotionSummaryRepository.java
│ │ │ │ ├── MovieGenreRepository.java
│ │ │ │ ├── MovieLikeRepository.java
│ │ │ │ ├── MovieRepository.java
│ │ │ │ └── WeeklyBoxOfficeRepository.java
│ │ │ ├── scheduler
│ │ │ │ ├── DailyBoxOfficeScheduler.java
│ │ │ │ ├── MovieSeedScheduler.java
│ │ │ │ ├── MovieUpdateScheduler.java
│ │ │ │ └── WeeklyBoxOfficeScheduler.java
│ │ │ └── service
│ │ │ ├── BoxOfficeService.java
│ │ │ ├── MovieDetailService.java
│ │ │ ├── MovieEmotionSummaryService.java
│ │ │ ├── MovieLikeService.java
│ │ │ └── MovieService.java
│ │ ├── recommend
│ │ │ ├── controller
│ │ │ │ └── EmotionRecommendationController.java
│ │ │ ├── dto
│ │ │ │ ├── EmotionRequestDTO.java
│ │ │ │ ├── MovieRecommendationDTO.java
│ │ │ │ └── MovieSimilarityResDto.java
│ │ │ └── service
│ │ │ └── EmotionRecommendationService.java
│ │ ├── report
│ │ │ ├── controller
│ │ │ │ └── ReportController.java
│ │ │ ├── dto
│ │ │ │ └── ReportResponseDTO.java
│ │ │ ├── entity
│ │ │ │ └── Report.java
│ │ │ ├── repository
│ │ │ │ └── ReportRepository.java
│ │ │ └── service
│ │ │ └── ReportService.java
│ │ └── review
│ │ ├── controller
│ │ │ └── ReviewController.java
│ │ ├── dto
│ │ │ ├── EmotionDTO.java
│ │ │ ├── MyReviewResponseDTO.java
│ │ │ ├── PredictRequestDTO.java
│ │ │ ├── PredictResponseDTO.java
│ │ │ ├── ReviewCreatedResponseDTO.java
│ │ │ ├── ReviewCreateDTO.java
│ │ │ ├── ReviewResponseDTO.java
│ │ │ └── ReviewUpdateDTO.java
│ │ ├── entity
│ │ │ ├── Emotion.java
│ │ │ ├── Review.java
│ │ │ └── ReviewLike.java
│ │ ├── repository
│ │ │ ├── EmotionRepository.java
│ │ │ ├── ReviewLikeRepository.java
│ │ │ └── ReviewRepository.java
│ │ └── service
│ │ └── ReviewService.java
│ ├── BackendApplication.java
│ └── common
│ ├── advice
│ │ └── ControllerExceptionAdvice.java
│ ├── config
│ │ ├── db
│ │ │ └── DatabaseInitializer.java
│ │ ├── security
│ │ │ └── SecurityConfig.java
│ │ ├── swagger
│ │ │ └── SwaggerConfig.java
│ │ └── WebClientConfig.java
│ ├── entity
│ │ └── BaseTimeEntity.java
│ ├── exception
│ │ ├── BadRequestException.java
│ │ ├── BaseException.java
│ │ ├── ExternalServiceException.java
│ │ ├── ForbiddenException.java
│ │ ├── IllegalStateException.java
│ │ ├── InternalServerException.java
│ │ ├── NotFoundException.java
│ │ └── UnAuthorizedException.java
│ └── response
│ ├── ApiResponse.java
│ ├── ErrorStatus.java
│ ├── PageResult.java
│ └── SuccessStatus.java
└── resources
├── application-key.yml
├── application-local.yml
├── application-prod.yml
└── application.yml
├── __pycache__
│ ├── config.cpython-312.pyc
│ ├── const.cpython-312.pyc
│ ├── database.cpython-312.pyc
│ ├── main.cpython-312.pyc
│ ├── models.cpython-312.pyc
│ └── schemas.cpython-312.pyc
├── config.py
├── const.py
├── database.py
├── Dockerfile
├── environment.yml
├── main.py
├── models
│ └── 0717_kobert_5_emotion_model
│ ├── config.json
│ ├── model.safetensors
│ ├── special_tokens_map.json
│ ├── spiece.model
│ └── tokenizer_config.json
├── models.py
├── README.md
├── requirements.txt
├── routers
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-312.pyc
│ │ ├── home.cpython-312.pyc
│ │ ├── predict.cpython-312.pyc
│ │ └── recommend.cpython-312.pyc
│ ├── home.py
│ ├── predict.py
│ ├── recommend.py
│ └── review.py
├── schemas.py
└── services
├── __pycache__
│ └── prediction.cpython-312.pyc
└── prediction.py




















