LG U+ 유레카 종합 프로젝트 우수상 수상
개발기간: 2024.10.15 ~ 2024.11.03 (3주)
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
---|---|---|---|---|---|
이도현 | 류금정 | 임민아 | 장현희 | 정회헌 | 하진서 |
FE/BE | FE/BE | FE/BE | FE/BE | FE/BE | FE/BE |
이름 | 역할 |
---|---|
이도현 | 성향 진단 및 결과 조회, 성향 변경 시스템, 선착순 응모 시스템 |
류금정 | 유저 및 자녀 프로필 관리, 선착순 응모 시스템 |
임민아 | 도서 크롤링, 도서 검색 및 조회, 생성형 AI를 이용한 도서 MBTI 데이터 삽입 |
장현희 | 개인화 추천 시스템 |
정회헌 | 로그인 및 회원가입 |
하진서 | 도서 및 이벤트 관리자 시스템 |
- 자녀 성향 진단: 어린이 기반 MBTI 설문 및 성향 히스토리로 MBTI 변화, 선호 장르, 주제어 변화 관찰
- 맞춤형 도서 추천: 추천 알고리즘 콘텐츠 기반 필터링과 협업 필터링 사용으로 개인화 된 세세한 추천
- 선착순 응모 이벤트: 대규모 트래픽 처리 및 안정적인 서비스 구축
1. 메인 (도서 추천)
콘텐츠 기반 추천과 협업 필터링 추천을 모두 사용하는 하이브리드 추천으로 Cold Start 문제 해결 및 새로운 아이템 추천 제약 완화
- 콘텐츠 기반 필터링
- 사용자의 선호 장르와 선호 주제어, 좋아요 한 도서 장르와 주제어, 도서와 자녀의 MBTI를 기반으로 유사도 점수를 부여하여 콘텐츠 기반 필터링 점수 계산
- 코사인 유사도를 사용
- 협업 필터링
- 사용자의 나이, 성별, MBTI에 따라 유사도 점수를 부여한 후 유사 사용자가 좋아요 한 도서 목록을 가져와 해당 도서에 프로필 유사도 점수를 합산
- 최종 점수
- 콘텐츠 기반 필터링과 협업 필터링을 일정 가중치를 줘 합산한 후 최종 점수 순으로 상위 20개의 도서 중 5권 필터링
- 기본 추천 로직
- 신규 사용자, 성향 히스토리가 없는 사용자, 필터링 된 추천 도서 수가 부족한 경우 도서 추천 연령대와 사용자 나이를 비교하여 가장 차이가 적은 도서를 반환함
- 로그인 하지 않았을 경우 사용자 나이를 임의로 지정하여 도서 반환
- 위 추천 시스템은 Spring Batch를 사용하여 최근 7일 내 활동한 사용자를 기준으로 매일 자정에 추천 도서가 DB에 저장됨
2. 마이페이지
- 유저 정보 조회, 수정, 자녀 프로필 관리
- 자녀 성향 히스토리 상세 보기


4. 자녀 성향 히스토리 페이지
- 히스토리 삭제 시 실제 데이터를 삭제하지 않고 isDeleted 필드를 true로 논리적 삭제
- Spring Batch를 사용하여 deletedAt이 한 달 전인 데이터 물리적 삭제 (Cascade, OrphanRemoval로 히스토리와 관계된 데이터도 물리적 삭제)
6. 생성형 AI 기반 도서 MBTI 매핑
- Hugging Face의 오픈 소스와 GPT API를 모두 사용해본 후 GPT API가 보다 높은 정확성을 보여 선택
8. 도서 좋아요/싫어요에 따른 성향 변경
- 좋아요/싫어요 선택 시 Kafka 메세지 전송
- KafkaEventListener를 통해 Spring Batch로 좋아요/싫어요 한 책의 성향에 따라 아이 성향 점수 조정
- Chunk 방식과 Tasklet 방식을 모두 사용하여 성능이 더 좋은 Tasklet 방식 선택
10. 관리자 도서 관리 기능 (CRUD)
- 도서명, 줄거리, MBTI 입력 후 도서 등록.
- 이때 MBTI는 HuggingFace가 줄거리 파악 후 MBTI를 응답해주는 것을 사용
- 도서 검색어 검색 시 1순위 도서명, 2순위 작가명을 기준으로 조회
- 도서 장르, 주제어, MBTI를 기준으로 필터 조회

11. 관리자 이벤트 관리 기능 - 이벤트 등록, 이벤트 목록 조회, 이벤트 수정, 이벤트 삭제 기능

