Skip to content

SideProjectSFY/getchaBE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

164 Commits
 
 
 
 
 
 

Repository files navigation

GetchaBE Project

📋 프로젝트 개요

프로젝트 정보

  • 프로젝트명: 겟챠(Getcha)
  • 진행일자: 2025.11.13 ~ 2025.12.21
  • 개발환경: Java(Spring Boot), Vue.js

타겟층

품절로 인해 굿즈를 사지 못한 2030 애니메이션 덕후

프로젝트 목표

  • 애니메이션 및 캐릭터 굿즈 기반 개인 간 경매 플랫폼 구축
  • 가상화폐 기반 안전 거래 시스템 제공
  • 사용자 관심 애니 목록을 통한 콘텐츠 기반 AI 굿즈 추천 시스템 개발
  • 안정적인 UX 제공을 위한 경매 관련 알림 + 경매 타이머 구현

🛠 기술 스택

개발 언어 및 도구

  • Database: MySQL, MyBatis
  • Backend: Java 17, Eclipse/IntelliJ, Springboot 3.4.12 / Gradle
  • etc: Spring Security, Jwt, Cookie/Session, Swagger
  • AI
    • HuggingFace Inference API (텍스트 임베딩 생성)
    • Pinecone API (Vector DB 저장 및 유사도 검색)
  • External API
    • TMDB API (애니 관련 정보)
    • PortOne API (결제 연동)

📊 기능적 요구사항

기능적 요구사항 (Functional Requirements)

1. 회원/인증 기능

ID 항목 상세 설명 페이지
FU-101 회원가입 - 관심 애니메이션 등록
- 가입 시 기본 지갑 자동 생성
- 신규 가입 이벤트 골드 충전 (50,000 골드)
회원 가입 페이지
FU-102 이메일 인증 - SMTP 기반 인증 회원가입 페이지
FU-103 로그인 - Spring Securtiy JWT 기반 인증
- Access Token 발급
로그인 페이지
FU-104 프로필 조회 - 닉네임, 프로필 포스터 조회 기능 제공 마이페이지
FU-105 프로필 수정 - 닉네임, 프로필 포스터 변경 기능 제공 마이페이지
FU-106 관심 애니메이션 - TMDB API를 연동하여 사용자가 좋아하는
애니메이션 등록 및 수정 (AI 추천의 입력 데이터)
- 필수 3개 등록
마이페이지
FU-107 회원 탈퇴
(= 비활성화)
(1) 탈퇴 가능 상태
- 경매 대기 상태 굿즈 등록글 삭제 시
- 예치금 unlock 상태(최고입찰가가 아닌 상태) 가상화폐로 돈 반환 시
(2) 처리 요청 상태
- 경매 진행 상태: 낙찰 or 패찰 된 후 탈퇴 요청
- 예치금 lock 상태: 낙찰 or 패찰 된 후 탈퇴 요청
마이페이지

2. 굿즈 등록 및 경매 상태관리 기능

ID 항목 상세 설명 페이지
FA-201 굿즈 등록 [등록 정보]
- 제목, 굿즈 관련 애니메이션 선택, 굿즈 종류(카테고리)
- 상품 설명, 이미지(다중 업로드) 등록
[경매 조건 설정]
- 시작가 (필수)
- 상한가/즉시구매가 (선택)
- 최초 경매 기간 (기본 값 2~3일 설정, 최댓값 14일)
굿즈 등록 페이지
FA-202 굿즈 목록 조회
(검색/필터)
- 필터(상태/카테고리/정렬) 기능
- 검색(애니메이션/제목) 기능
- 무한 스크롤(=더보기) 기능
굿즈 목록 페이지
FA-203 굿즈 글 상세 조회 - 제목, 굿즈 관련 애니메이션, 굿즈 종류, 상품 설명, 이미지
- 시작가, 상한가/즉시구매가, 경매 타이머, 찜 수
- 참여자 리스트, 경매 상태, 판매자 닉네임, 댓글 리스트 확인
굿즈 상세 페이지
FA-204 경매 등록 내용 수정 - 경매 대기 상태일 때만 수정 가능 굿즈 수정 페이지
FA-205 등록 경매 글 삭제 - 내가 등록한 경매 글 삭제 기능 (*경매 대기/완료/종료 후) 굿즈 상세 페이지
FA-206 거래 중지(패찰=종료) - 판매자가 거래중지 가능
- 거래중지 시 Lock 상태의 참여자에게 예치금 환원
- 거래중지 알림 발송
굿즈 상세 페이지
FA-207 경매 상태 관리 - 경매 대기: 등록 직후
- 경매 진행: 첫 구매자(입찰) 발생 시점부터
- 낙찰(=완료): 입찰자 있는 상태로 경매기간 종료 또는 즉시 구매가 입찰 시
- 패찰(=종료): 판매자가 거래 중지를 누를 경우 또는 입찰자 없는 상태로 경매기간 종료 시
서비스 로직 단

3. 경매 및 입찰 기능

ID 항목 상세 설명 페이지
FB-301 입찰 가격 제시 - 첫 입찰인 경우 시작가 이상 거래제한금액(500만원) 이하
- 현재 최고가보다 높고 거래제한금액(500만원) 이하인 금액 제시
- 보유한 코인 이상의 금액은 제시 불가
- 입찰 시 경고 알림창 (입찰 후 취소 불가)
굿즈 상세 페이지
(내 입찰 버튼)
FB-302 입찰 금액 Lock - 입찰 시 구매자가 입찰한 금액을 즉시 예치금으로 Lock
- 낙찰 시 코인 부족 방지 및 고의적 경매 방해 방지
서비스 로직 단
FB-303 이전 예치금 해제 - 최고입찰자 변경 시 기존 입찰자 예치금 Unlock 및 환원 서비스 로직 단
FB-304 경매 타이머 - Javascript 기반 경매 카운트다운 굿즈 상세 페이지
FB-305 경매 자동 종료 - (1) 설정된 경매 기간 만료 시
- (2) 상한가(즉시구매가) 도달 시
서비스 로직 단
FB-306 거래 정산(낙찰) - (1) 구매자에게 예치금 전송 (판매자에게 이동)
- (2) 판매자(낙찰자) 거래 낙찰 알림 전송
서비스 로직 단
FB-307 참여자 리스트 조회 - 경매에 참여한 참여자들의 이름과 금액 리스트 조회 굿즈 상세 페이지

4. 가상화폐 및 거래 정산 기능 (Wallet Core)

ID 항목 상세 설명 페이지
FC-401 자산 현황 - 잔액 및 예치금 총액 조회 마이페이지 > 자산 현황
FC-402 골드 충전 - PortOne API 를 활용한 결제 연동 기능 마이페이지 > 자산 현황 내 골드 충전하기 버튼
FC-403 거래 내역 상세
(날짜 필터링)
- 입찰, 예치금(lock/unlock), 낙찰, 환불 등 거래 내역 전체 기록
- 시작일자, 종료일자 필터링 기능
- 무한 스크롤(=더보기) 기능
마이페이지 > 거래 내역

5. 소셜 및 알림 기능

ID 항목 상세 설명 페이지
FD-501 굿즈 찜 기능 - 사용자가 관심 굿즈를 찜하여 목록 관리 (찜 리스트) 굿즈 상세, 굿즈 목록, 마이페이지
FD-502 경매 알림 - (1) 경매 마감 1시간 전 알림
- (2) 최고입찰 갱신 시 알림 발송
서비스 로직 단
FD-503 거래 알림 - 낙찰/패찰(=거래중지)/정산 결과 알림 발송 서비스 로직 단
FD-504 목록 및 상태 - 알림 목록 조회 모든 페이지 우측 상단
FD-505 등록 경매 글 조회 - 내가 등록한 경매 글 조회 기능 마이페이지
FD-506 참여 경매 글 조회 - 내가 참여한 경매 글 조회 마이페이지
FD-507 관심 애니 목록 조회 - 관심 애니메이션 목록 조회 마이페이지

6. AI 추천 및 콘텐츠 관리 기능

ID 항목 상세 설명 페이지
FE-601 [User] 관심 애니 설정
및 벡터 동기화
- TMDB API를 통해 애니메이션 검색 및 선택
- 애니메이션 메타데이터(제목, 줄거리, 장르) 조회
- 유저 프로필에 관심 애니메이션 ID 최대 3개 매핑 저장
회원가입 페이지
FE-602 [AI] 사용자 관심 애니 기반 애니 추천
(Vector Similarity)
- 사용자가 선택한 관심 애니 3개의 텍스트 정보를 기반으로 추천 애니메이션 목록 생성
- 추천 결과는 캐싱하여 재사용함으로써 응답 속도 개선
- 프로필에서 관심 애니 변경 시 추천 캐시를 무효화하고 재추천수행
- 사용자 선호 우선순위를 반영한 가중 평균 방식으로 취향 벡터 생성
- 코사인 유사도가 높은 애니메이션 Top-N 추천
마이페이지
FE-603 [AI] 추천 애니 기반 굿즈 추천 - AI 추천 애니메이션과 연관된 굿즈 목록 조회
- 판매자가 본인인 굿즈 및 이미 찜한 굿즈 제외
- 이미 낙찰/패찰(종료)된 경매 굿즈는 추천 대상에서 제외
메인페이지

7. 댓글 및 커뮤니티 기능

ID 항목 상세 설명 페이지
FG-701 댓글 작성 (Parent) - 로그인한 사용자가 굿즈 상세 페이지 하단에 문의/의견 작성 굿즈 상세 페이지
FG-702 대댓글 작성 (Child) - 1차 댓글에 대한 답글 작성 기능
- 대댓글까지만 허용 (대대댓글 불가)
굿즈 상세 페이지
FG-703 댓글 목록 조회 - 계층형 구조 노출
- 작성일 순 오름차순 정렬, 대댓글은 들여쓰기로 구분
굿즈 상세 페이지
FG-704 댓글 수정 - 작성자 본인만 수정 가능 굿즈 상세 페이지
FG-705 댓글 삭제 - 작성자 본인만 삭제 가능
- 대댓글이 남아있는 부모댓글이 삭제된 경우 (삭제된 댓글입니다.)로 표기
- 대댓글이 없는 부모댓글 or 대댓글일 경우 바로 삭제 처리
굿즈 상세 페이지
FG-706 판매자 식별 표시 - 댓글 작성자가 해당 굿즈 '판매자'일 경우 닉네임 옆 배지 표시 굿즈 상세 페이지

8. 신고 및 운영 기능

ID 항목 상세 설명 페이지
FF-801 신고 접수 - 신고된 게시물/사용자 관리
- 신고 버튼 클릭 시 alert으로 표기만 함 (UI 구현)
굿즈 상세 / 프로필
FF-802 환불 요청 문의 - 모든 페이지 하단에 전화번호 남기는 형식으로 처리 모든 페이지 하단

🗃️ 프로젝트 구조

getcha/
├── frontend/                   # getchaFE 참고
│
├── backend/                    # getchaBE (Spring boot)
│   ├── src/
│   │   └── main/
│   │       ├── resources/
│   │       │   ├── mappers/   
│   │       │   ├── getchaDDL.sql
│   │       │   ├── application-local.yml   
│   │       │   └── application.yml   
│   │       └── java/
│   │           └── com/ssafy/backend
│   │               ├── users/
│   │               │   ├── controller/
│   │               │   ├── service/
│   │               │   |   └── impl/   
│   │               │   └── model/
│   │               │       ├── mapper
│   │               │       ├── user  
│   │               │       ├── responseDTO   
│   │               │       └── requestDTO   
│   │               ├── auth/
│   │               ├── goods/
│   │               ├── bid/
│   │               ├── comment/   
│   │               ├── notification/
│   │               ├── wallet/
│   │               ├── wish/
│   │               ├── anime/
│   │               ├── payment/   
│   │               ├── ai/   
│   │               ├── common/
│   │               │   ├── enums/
│   │               │   ├── exception/
│   │               │   ├── service/
│   │               │   |   └── impl/  
│   │               │   └── config/
│   │               └── BackendApplication.java
│   ├── build.gradle
└── README.md


🏗 시스템 아키텍처 (미수정)


💎 ERD 다이어그램

ERD 다이어그램


💻 화면 구성

주요 화면 목록

  1. 헤더

    구성 요소
    • Getcha 글자 & 로고
    • 알림 확인
    • 로그인 / 로그아웃
      • 로그인 한 상태일 때 (마이페이지, 찜)
      • 로그아웃 한 상태 일 때 (로그인 버튼, 회원가입 버튼)
  2. 회원 가입

    구성 요소
    • 닉네임
    • 이름
    • 비밀번호
    • 이메일 (= 아이디)
    • 프로필 이미지 (관심 애니 첫번째 포스터이미지)
    • 관심 애니메이션 (필수)
    • 계좌 은행 및 계좌번호
  3. 메인 페이지

    구성 요소
    • 상단 : 로그인한 유저에게 맞는 AI 추천 상품
    • 중앙 : 상품 카테고리 별 리스트 (+ALL 포함)
  4. 굿즈 리스트 페이지

    구성 요소
    • 필터(상태 / 카테고리 / 정렬) & 검색
    • 굿즈 등록 버튼 (로그인 시)
    • 굿즈 카드
      • 경매 상태 뱃지 (진행 중, 완료, 종료)
      • 굿즈 대표 이미지
      • 제목
      • 현재 입찰가 금액
        • 대기 및 입찰자 없이 종료된 경우 시작가 금액
      • 판매자 닉네임 / 애니메이션 제목 / 카테고리
      • 경매 타이머 / 찜 수
  5. 굿즈 등록 / 수정 페이지

    구성 요소
    • 제목 / 애니메이션 / 카테고리 / 설명
    • 굿즈 이미지 업로드 (다중 업로드 가능/ 1개이상 필수)
    • 시작가 (필수)
    • 상한가/즉시구매가 (선택)
    • 최초 경매기간 (2일 ~ 14일 중 택 / 필수)
  6. 굿즈 상세 페이지

    구성 요소
    • 수정 / 삭제 버튼 (경매 참여자가 없는 경우에만)
    • 경매 중지 버튼 (진행 중인 경우에만)
    • 제목
    • 판매자 닉네임 / 프로필 이미지
    • 경매 상태 뱃지 (진행 중, 완료, 종료)
    • 시작가 / 즉시 구매가 금액
    • 현재 입찰가 금액 (진행 중 일 경우에만)
    • 경매 참여자 리스트 (순위)
    • 경매 타이머 (남은 경매 기간)
    • 설명 / 애니메이션 제목 / 카테고리 / 찜 갯수
    • 댓글
      • 2차 대댓글까지만 가능
  7. 마이페이지

    구성 요소
    • 찜 리스트
    • 등록 경매 글 리스트
    • 참여 경매 글 리스트
    • 거래 내역 리스트
    • 잔액 현황
    • 관심 애니메이션 리스트
    • 정보 수정 (닉네임, 좋아하는 애니메이션)

About

Back

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages