JerryK026 / calculate-admin-pilot

정산어드민 시스템 파일럿 프로젝트

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[정산이란?]

정산은 상품이나 서비스를 판매한 거래 대금 중에서 상점이 받을 수 있는 실제 금액을 계산하는 과정을 말합니다. 판매 대금에서 결제수단별 수수료, 부가세, 기타 비용 등을 차감한 금액을 계산해 상점에 실제 지급되는 금액을 정산 금액이라고 합니다.

즉, 상점에서 이루어진 결제를 PG사에서 정산 대금 및 주기를 계산해 지급하는 과정이에요. 정산 대금 계산은 계약할 때 정한 수수료율에 따라 지급할 금액을 계산하는 것을 뜻합니다. 정산 주기 계산은 계약할 때 정한 주기에 따라 정산 지급일을 확정하는 것을 뜻하죠.

[정산 과정 이해하기]

1️⃣ 구매 고객이 결제하면, 2️⃣ 상점에서 PG사에 결제 승인을 요청해요. 3️⃣ PG사는 카드사 등 결제 기관에 결제 승인, 대금 지급을 요청해요. 4️⃣ 결제 기관 → 토스페이먼츠로 지급하는 정산 금액이 입금되면, 5️⃣ 토스페이먼츠 → 상점으로 대금을 지급합니다.

참조 : https://docs.tosspayments.com/common/glossary/settlement#%EC%A0%95%EC%82%B0-%EA%B3%BC%EC%A0%95-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

[기능 요구사항]

어드민 회원(Member) 기능

  • 회원가입, 로그인, 권한관리
  • 권한 : 일반 < 운영 일반 < 운영 팀장 < 관리자
    • 일반 : 조회(R)만 가능
    • 관리자 : CRUD 모두 가능

업주(StoreOwner) 관리 기능

  • 관리자에 의해 등록, 수정, 삭제 가능
  • 업주(1)는 여러 주문(N)을 가짐
  • 업주는 검색할 수 있어야 함 => 해당하는 업주 정보는 사용자를 특정할 수 있는 id, 이메일, 전화번호라고 가정한다.

주문(Order) 관리 기능

  • 관리자에 의해 등록, 수정, 삭제 가능
  • 주문(1)은 일시(일자, 시간) 및 주문상세(N)를 가짐
  • 주문상세는 결제수단과 결제금액을 가짐
  • 주문은 업주 정보 및 주문 발생 일시로 검색가능

보상금액(CompensationAmount) 기능

  • 관리자에 의해 등록,수정,삭제 가능
  • 보상금액은 대상 업주, 보상사유, 보상날짜, 보상금액을 가짐

지급(Payment) 관리 기능

  • 주문상세 및 보상금액으로 전체 업주에 대해 지급되는 금액을 계산
  • 운영 일반 권한을 가진 어드민 회원이 지급금을 요청
  • 운영 팀장 권한을 가진 어드민 회원이 지급금 요청 승인
  • 지급금 요청, 승인 시, 상세내역(주문상세, 보상금액 내역) 조회 가능

[기능 요구사항2 - (내가 추가한)]

자동 지급 관리 기능

  • 매월 1일 전체 업주에 대해 지급되는 금액을 계산
    • 단, 1일 기준으로 3일 이내에 발생한 거래는 정산 대상에 포함되지 않는다

[기술 요구사항]

OOP (객체지향) 코드 & 클린 코드 (JUnit5) 단위 테스트 & 통합 테스트 SQL 인잭션, 스크립팅 공격을 비롯한 기본적인 보안 HTTP API Spring Boot 2.6.x => 3.x JPA Gradle 7.x 이상 Git & GitLab JIRA => x flyway Mysql (React) 모던 JS 환경 => 당장 필요 x

[정의한 내용 - (내가 추가한)]

  • 정산은 수동정산, 월정산만 있다고 가정한다.
  • 매월 1일 00:00:00에 월정산이 차례대로 수행된다고 가정한다.
    • 1일이 휴일이더라도 정산은 수행된다고 가정한다.
  • 결제 수단은 토스 페이먼츠만 있다고 가정한다.
  • 공급가액, 부가세 등 결제 수수료 외 다른 수수료는 존재하지 않는다고 가정한다.
    • 결제 수수료는 3%라고 가정한다.
  • 결제시 할부는 존재하지 않는다고 가정한다.
  • 수동 지급시 order

[기대하는 내용]

  • 코드를 많이 짜보면서 코딩력 및 생산력을 늘린다.
  • 핀테크 도메인에 대한 이해를 경험해 본다.
  • Kotlin + Spring 조합의 숙련도를 늘린다.
  • 경험해보고 싶던 기술 스택들을 사용해 본다.
    • Envers, JooQ, Spring Batch, Spring Security

[참고]

About

정산어드민 시스템 파일럿 프로젝트


Languages

Language:Kotlin 100.0%