Skip to content

Latest commit

 

History

History
153 lines (135 loc) · 5.8 KB

File metadata and controls

153 lines (135 loc) · 5.8 KB

✨배달 및 포장 음식 주문 관리 플랫폼

1️⃣ 프로젝트 목적/상세

이 프로젝트는 가게를 대상으로 배달, 포장 주문을 효율적으로 관리하는 플랫폼입니다. 이를 통해 고객은 편하게 가게 상품을 주문할 수 있습니다. 그리고 매장 주인은 플랫폼을 통해서 주문 접수부터 결제 내역 및 리뷰 등 운영하는데 편리한 기능을 제공받을 수 있습니다. 현재는 서비스 출시 초기라 광화문에서 시작하지만, 이후 확장성을 고려하여 전국적으로 이용할 수 있는 플랫폼을 제공하는 것이 목표입니다.

1. 모든 도메인 공통 기능

  • CRUD 기능
  • 검색 기능
    • 정렬: 생성일순, 수정일순
    • 페이지 노출 건수 : 10건/30건/50건 (기본 10건)
  • 접근 권한 관리
    • 고객, 가게 주인, 관리자, 마스터
  • 데이터 감사 로그
    • 모든 정보에 생성일, 생성 아이디, 수정일, 수정 아이디, 삭제일, 삭제 아이디를 포함

2. 사용자 인증 기능

  • 회원가입
    • username은 최소 4자 이상, 10자 이하이며 알파벳 소문자(az), 숫자(09)로 구성
    • password는 최소 8자 이상, 15자 이하이며 알파벳 대소문자(az, AZ), 숫자(0~9), 특수문자
    • 사용자 권한 (CUSTOMER, OWNER, MANAGER, MASTER)
  • 로그인
    • JWT 인증 : Acess Token, Refresh Token 발급 및 관리

3. 가게 시스템

  • 관리자 권한만 가게 등록
    • 이후 가게 주인 지정 가능
  • 가게 주인이 자신이 소유한 가게의 주문 내역 조회 가능
  • 가게 검색 시 평점이 같이 조회되도록 구현

4. 리뷰 및 평점 시스템

  • 주문 기반 리뷰 저장(주문 상태 COMPLETED)
    • 평점 저장(1~5점 평점)
  • 주문 한 건당 한 건의 리뷰 생성 가능
  • 특정 가게 및 사용자의 리뷰 조회 가능

5. 상품 시스템

  • 상품
    • 단일 상품에 대한 등록, 수정, 삭제 기능(권한 : OWNER, ADMIN, MASTER)
    • 단일 상품 조회는 2가지 경우가 있습니다(ALL 권한)
      • 고객이 상품을 장바구니에 담기 위한 개별 상품 조회
      • 가게 주인이 상품 변경을 위한 개별 상품 조회
    • 상품 검색 기능(ALL)
      • 앱에서 검색어 입력 → 관련 가게 목록 반환 → 특정 가게 조회 → 검색어가 포함된 상품 리스트 반환
      • 페이징 및 정렬 처리
    • 상품 다중 상태 변경 기능(OWNER, ADMIN, MASTER)
      • 가게 주인이 내 가게 상품 목록 조회 → 상품별 판매 상태 변경
      • DB에서 in절을 통해 한번에 가져와서 순차적으로 상태 변경 후 저장.
    • 내 가게 전체 상품 조회(OWNER)

6. 장바구니 시스템

  • 장바구니(권한 : USER, ADMIN, MASTER)
    • 장바구니 추가
      • 장바구니 추가는 한 번에 한 종류의 상품만 담을 수 있고, 수량만 변경 가능
      • 수량에 대한 검증.
        • 처음 넣는 상품일 때 : 상품 수량 ≥ 선택한 수량
        • 이미 넣은 상품일 때 : 상품 수량 ≥ 선택한 수량 + 기존에 담긴 수량
      • 다른 가게 상품을 넣으려고 하면 장바구니를 먼저 비워야함.
    • 장바구니 수정
      • 수정은 다중 상품 변경 가능.
      • 이미 넣은 상품이면 수량을 누적하고, 처음 넣으면 추가. 이때 장바구니 추가랑 같은 수량 검증
    • 장바구니 조회
      • 장바구니에 있는 모든 상품을 조회
    • 장바구니 삭제

7. 주문 시스템

  • 주문 상태 관리(COMPLETED, CANCELED, PENDING)
  • 주문 취소(COMPLETED -> CANCELED)

8. 결제 시스템

  • 카드 결제만 지원(PG사 연동 통해 결제 정보 저장)
  • 결제 내역 관리를 위해 결제 테이블 운영

9. AI Gemini 시스템

  • Google Ai Gemini API를 활용
    • 가게 주인이 상품 설명 쉽게 작성 가능
  • 사용자별 응답 내역 조회 가능
    • 응답 로그 DB 저장

2️⃣ ERD 및 API 명세서

  • ERD ERD

* API 명세서 https://teamsparta.notion.site/API-1a52dc3ef51480ed84e3efb6f288a58c

3️⃣ 기술 스택

💻 사용 기술 스택

  • Backend : Spring Boot 3.3.8, JPA, QueryDSL, JWT, Spring Security
  • DB : PostgreSQL, Redis
  • AI : Google Generative Language API(Gemini-1.5)
  • Development Tools : Git/GitHub, IntelliJ IDEA
  • Cloud : AWS EC2, RDS

4️⃣ 서비스 구성 및 실행 방법

  • 🔧요구 사항:
    • Java 17
    • Redis (Redis 7.xx 버전)
    • PostgreSQL
    • Gradle
  • 🔧설치 및 실행 방법
  1. 저장소 클론
  git clone https://github.com/sparta-i4/i4-be.git
  1. 프로젝트 디렉토리 이동
cd i4-be
  1. Gradle을 이용해 의존성 설치 및 빌드
./gradlew build
  1. 애플리케이션 실행
./gradlew bootRun
  1. application.yml 파일 설정
spring:
 datasource:
   url: jdbc:postgresql://localhost:5432/your_database_name
   username: your_username
   password: your_password
   driver-class-name: org.postgresql.Driver
 jpa:
   database-platform: org.hibernate.dialect.PostgreSQLDialect
   hibernate:
     ddl-auto: create
   show-sql: true
 data:
   redis:
     host: localhost
     port: 6379

jwt:
 secret:
   key: "jwt 시크릿 키 입력"

google:
 api:
   key: "Gemini API Key 입력"

5️⃣ 팀원 역할분담

기능 담당자
가게, 리뷰, AI 추천 김채원
유저, 주소 송예지
상품, 장바구니, 배포 박상욱
주문, 결제 박준혁