Skip to content
@KKUMTEUL

KKUMTEUL

👶 우리 아이 꿈의 틀을 잡아주는 맞춤형 성향 진단 및 도서 추천 서비스, 꿈틀

LG U+ 유레카 종합 프로젝트 우수상 수상
개발기간: 2024.10.15 ~ 2024.11.03 (3주)


👨🏻‍💻 팀원

이도현 류금정 임민아 장현희 정회헌 하진서
FE/BE FE/BE FE/BE FE/BE FE/BE FE/BE

👩‍💻 R&R

이름 역할
이도현 성향 진단 및 결과 조회, 성향 변경 시스템, 선착순 응모 시스템
류금정 유저 및 자녀 프로필 관리, 선착순 응모 시스템
임민아 도서 크롤링, 도서 검색 및 조회, 생성형 AI를 이용한 도서 MBTI 데이터 삽입
장현희 개인화 추천 시스템
정회헌 로그인 및 회원가입
하진서 도서 및 이벤트 관리자 시스템

🎈 Intro

  1. 자녀 성향 진단: 어린이 기반 MBTI 설문 및 성향 히스토리로 MBTI 변화, 선호 장르, 주제어 변화 관찰
  2. 맞춤형 도서 추천: 추천 알고리즘 콘텐츠 기반 필터링과 협업 필터링 사용으로 개인화 된 세세한 추천
  3. 선착순 응모 이벤트: 대규모 트래픽 처리 및 안정적인 서비스 구축

📌 기능

1. 메인 (도서 추천)
콘텐츠 기반 추천과 협업 필터링 추천을 모두 사용하는 하이브리드 추천으로 Cold Start 문제 해결 및 새로운 아이템 추천 제약 완화

  • 콘텐츠 기반 필터링
    • 사용자의 선호 장르와 선호 주제어, 좋아요 한 도서 장르와 주제어, 도서와 자녀의 MBTI를 기반으로 유사도 점수를 부여하여 콘텐츠 기반 필터링 점수 계산
    • 코사인 유사도를 사용
  • 협업 필터링
    • 사용자의 나이, 성별, MBTI에 따라 유사도 점수를 부여한 후 유사 사용자가 좋아요 한 도서 목록을 가져와 해당 도서에 프로필 유사도 점수를 합산
  • 최종 점수
    • 콘텐츠 기반 필터링과 협업 필터링을 일정 가중치를 줘 합산한 후 최종 점수 순으로 상위 20개의 도서 중 5권 필터링
  • 기본 추천 로직
    • 신규 사용자, 성향 히스토리가 없는 사용자, 필터링 된 추천 도서 수가 부족한 경우 도서 추천 연령대와 사용자 나이를 비교하여 가장 차이가 적은 도서를 반환함
    • 로그인 하지 않았을 경우 사용자 나이를 임의로 지정하여 도서 반환
  • 위 추천 시스템은 Spring Batch를 사용하여 최근 7일 내 활동한 사용자를 기준으로 매일 자정에 추천 도서가 DB에 저장됨



2. 마이페이지

  • 유저 정보 조회, 수정, 자녀 프로필 관리
  • 자녀 성향 히스토리 상세 보기



3. 자녀 성향 진단 페이지



4. 자녀 성향 히스토리 페이지

  • 히스토리 삭제 시 실제 데이터를 삭제하지 않고 isDeleted 필드를 true로 논리적 삭제
  • Spring Batch를 사용하여 deletedAt이 한 달 전인 데이터 물리적 삭제 (Cascade, OrphanRemoval로 히스토리와 관계된 데이터도 물리적 삭제)



5. 도서 목록 조회 및 검색



6. 생성형 AI 기반 도서 MBTI 매핑

  • Hugging Face의 오픈 소스와 GPT API를 모두 사용해본 후 GPT API가 보다 높은 정확성을 보여 선택



7. 도서 상세 조회



8. 도서 좋아요/싫어요에 따른 성향 변경

  • 좋아요/싫어요 선택 시 Kafka 메세지 전송
  • KafkaEventListener를 통해 Spring Batch로 좋아요/싫어요 한 책의 성향에 따라 아이 성향 점수 조정
  • Chunk 방식과 Tasklet 방식을 모두 사용하여 성능이 더 좋은 Tasklet 방식 선택



9. 이벤트 응모 시스템



10. 관리자 도서 관리 기능 (CRUD)

  • 도서명, 줄거리, MBTI 입력 후 도서 등록.
  • 이때 MBTI는 HuggingFace가 줄거리 파악 후 MBTI를 응답해주는 것을 사용
  • 도서 검색어 검색 시 1순위 도서명, 2순위 작가명을 기준으로 조회
  • 도서 장르, 주제어, MBTI를 기준으로 필터 조회



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



Trouble Shooting


ERD

image

SW 아키텍처

image

Popular repositories Loading

  1. KKUMTEUL-backend KKUMTEUL-backend Public

    Java 1 1

  2. KKUMTEUL-frontend KKUMTEUL-frontend Public

    TypeScript 1 1

  3. .github .github Public

Repositories

Showing 3 of 3 repositories

Top languages

Loading…

Most used topics

Loading…