Skip to content

Latest commit

 

History

History
216 lines (184 loc) · 9.51 KB

README.md

File metadata and controls

216 lines (184 loc) · 9.51 KB

LibDev

header

💬 설명

도서 데이터 및 추천 알고리즘을 활용한 도서관 대출 서비스 LibDev입니다.


⚙️ 기술 스택

백엔드

프론트엔드



🧩 ERD

LibDevERDERD

⛓️ 와이어 프레임

LibDevWAF

🔥 주요기능

1. 회원

  • 회원 가입
    • 이메일 형식 아이디
    • 이메일
    • 이메일, 비밀번호, 전화번호 유효성 검사
    • OAUTH
      • 구글
      • 네이버
  • 마이 페이지
    • 서비스 이력 확인
      • 현재 대출 현황
      • 대출 이력
      • 예약 현황
      • 본인이 쓴 한줄평
    • 내 정보 수정
      • 이름
      • 비밀번호
      • 전화번호
  • 권한
    • 일반 회원
    • 관리자
      • 회원 정보 조회
      • 회원 권한 변경
      • 도서 반납 승인
      • 도서 추가 가능
  • 로그인
    • 로그인 시 쿠키로 AccessToken, RefreshToken 발급
    • RefreshToken과 Redis를 활용한 AccessToken 재발급
    • 이메일 주소로 인증 번호를 받아 비밀번호 수정 기능 제공
  • 보안
    • 로그아웃 시 기존 쿠키들 무효화 및 엑세스 토큰 블랙리스트로 레디스에 관리

2. 도서

  • 도서 등록
    • 관리자(ADMIN) 권한을 가진 경우 도서 등록 가능
    • 카카오 API에서 도서 정보를 받아오고, 받아온 고유 번호로 국립중앙도서관 API에서 나머지 도서 정보를 받아옴
    • 중복된 도서 등록 시, 청구 번호 뒤에 =2, =3 추가
  • 통합 자료 검색
    • 키워드로 도서 검색
    • 검색 유형은 전체, 제목, 저자, 출판사
    • 해당되는 도서 목록 출력
    • 목록 최신 등록 순 정렬
    • 도서 정보와 대출 예약 가능 여부 조회
  • 주제 별 검색
    • 동양서분류기호 대분류 코드로 주제 분류
    • 주제 별 도서 목록 출력
  • 신착 자료
    • 최근 일주일 안에 등록된 도서 목록 출력
  • 도서 상세
    • 도서 상세 정보 조회
    • 대출, 예약 가능
    • 해당 도서와 유사한 추천 도서 조회
  • 도서 관리
    • 관리자 권한을 가진 경우 도서 검색, 목록 조회, 도서 삭제 가능

3. 대출+반납

  • 대출
    • 도서 상세 페이지에 대출이 가능할 경우 버튼 활성화
    • 연체 페널티가 있는 회원은 대출 불가
    • 최대 7권까지 대출 가능
    • 대출 기간은 2주
  • 연장
    • 대출 현황 페이지에서 연장 신청
    • 연체 페널티가 없고, 해당 도서에 예약자가 없는 경우 연장 가능
    • 1회에 한해 7일 연장 가능
  • 연체
    • 매일 일괄 처리
    • 반납 예정일이 지난 대출들의 상태를 연체 중으로 업데이트
      • 해당 회원은 연체 페널티 생김
    • 반납 완료 전까지 연체일 수 증가
  • 반납
    • 회원이 대출 현황 페이지에서 반납 신청
    • 관리자가 대출 관리 페이지에서 반납 승인
    • 반납 승인하면 반납 예정일 업데이트
    • 연체 된 대출의 경우 회원의 페널티 만료일 업데이트
  • 대출 현황/연장
    • 대출 중, 연체 중(미반납), 반납 신청 상태인 대출 조회 가능
    • 연장 및 반납 신청
  • 대출 이력
    • 반납 완료된 대출 조회(최신순 / 과거순)
  • 대출 관리
    • 전체 대출 조회
    • 대출 상태에 따른 조회 가능
    • 반납 신청 된 대출 반납 승인 처리

4. 예약

  • 예약 생성
    • 대출 중인 도서에만 예약하기 버튼 활성화
    • 본인이 예약 중인 경우 예약 불가
    • 패널티 만료일이 남은 유저는 예약 불가
    • 유저당 7권 넘게 예약 불가
    • 권 당 7명 이상 예약 불가
  • 예약자 수 확인
    • 이벤트 발생 시 자동 최신화
  • 예약 정보 조회
    • 제목, 예약일, 만료일, 대기 순번, 상태 표시
  • 예약 삭제
    • 예약 삭제 시 자동 최신화
  • 대출 생성
    • 예약 현황 페이지에서 1순위 예약자이면서 반납 완료 상태인 도서에 한해서 활성화
  • 예약 관리
    • 전체 예약 조회 가능
    • 예약 삭제 가능

5. 알림

  • 이메일 발송
    • 반납 완료가 되었을 때 1순위 예약자가 존재할 경우 발송
    • 기한 만료 등에 의해 1순위 예약자의 예약이 만료되었을 경우 2순위 예약자가 존재할 경우 발송
    • SMTP 사용하여 발송 후, 이메일 내부에서 대출하러 가기 버튼으로 예약 조회 페이지로 연결.
    • 대출하러 가기 버튼 누를 시 비로그인 상태라면, 로그인 페이지로 다이렉트
  • 실시간 알림 발송
    • 웹소켓을 이용하여 실시간으로 발송
    • 반납 완료가 되었을 때 1순위 예약자가 존재할 경우 발송
    • 기한 만료 등에 의해 1순위 예약자의 예약이 만료되었을 경우 2순위 예약자가 존재할 경우 발송
    • 토스트 알림창을 제거하지 않을 시 DB에 알림 보존
  • 안 읽은 알림 발송
    • 토스트 알림창을 제거하지 않은 알림에 대해 모든 페이지에서 웹소켓에 연결될 때마다 발송
    • 알림창을 제거할 경우 DB에서 해당 알림 삭제

6. 한줄평

  • 한줄평 작성
    • 로그인한 유저만 작성 가능
    • 도서 별 한줄평 페이지에서만 작성 가능
  • 한줄평 수정
    • 본인이 작성한 한줄평만 수정 가능
    • 관리자(ADMIN) 권한을 가진 경우 모든 한줄평 수정 가능
  • 한줄평 삭제
    • 본인이 작성한 한줄평만 삭제 가능
    • 관리자(ADMIN) 권한을 가진 경우 모든 한줄평 삭제 가능
  • 한줄평 조회
    • 전체 한줄평, 도서 별 한줄평은 로그인 없이 조회 가능
    • 본인이 작성한 한줄평은 로그인 후 마이페이지를 통해 조회 가능
  • 비속어 필터링

7. 도서 추천

  • 유사 도서 추천
    • 특정 도서의 상세 페이지에서 해당 도서와 유사한 도서를 추천
  • 사용자 기반 추천
    • 사용자의 대출 내역을 분석하여 적합한 도서를 추천
    • 사용자가 한 번도 대출한 적이 없는 경우, 대출 횟수가 높은 인기 도서를 추천
  • 인기 도서 추천
  • Redis를 활용하여 추천 결과를 캐싱하여 성능 최적화
    • 동일한 도서 또는 사용자가 반복적으로 요청할 경우 DB를 직접 조회하지 않고 캐시된 데이터를 반환



🛠️ 커밋 컨벤션

  • 타입은 태그와 제목으로 구성되고, 태그는 영어로 쓰되 첫 문자는 대문자로 한다.
  • "태그: 제목"의 형태이며, : 뒤에만 공백이 있음에 유의
태그 이름 설명
Feat 새로운 기능을 추가할 경우
Fix 버그를 고친 경우
Design CSS 등 사용자 UI 디자인 변경
Style 코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없는 경우
Refactor 프로덕션 코드 리팩토링
Docs 문서를 수정한 경우
Rename 파일 or 폴더명 수정하거나 옮기는 경우