Skip to content

Latest commit

 

History

History
215 lines (183 loc) · 10.5 KB

README.md

File metadata and controls

215 lines (183 loc) · 10.5 KB

02_Payhere_TeamH

✅ 서비스 개요

  • 가계부를 생성하여 수입과 소비내역을 관리(작성, 수정, 삭제)할 수 있습니다.
  • 삭제한 내역은 언제든지 다시 복구할 수 있습니다.
  • 각 내역들의 금액을 합산하여 총 금액을 보여줍니다.

📌 과제 분석

과제소개
🗣고객은 본인의 소비내역을 기록/관리하고 싶습니다.
아래의 요구사항을 만족하는 DB 테이블과 REST API를 만들어주세요.
요구사항
  • 고객은 이메일과 비밀번호 입력을 통해서 회원 가입을 할 수 있습니다.
  • 고객은 회원 가입이후, 로그인과 로그아웃을 할 수 있습니다.
  • 고객은 로그인 이후 가계부 관련 아래의 행동을 할 수 있습니다.
    • 가계부에 오늘 사용한 돈의 금액과 관련된 메모를 남길 수 있습니다.
    • 가계부에서 수정을 원하는 내역은 금액과 메모를 수정 할 수 있습니다.
    • 가계부에서 삭제를 원하는 내역은 삭제 할 수 있습니다.
    • 삭제한 내역은 언제든지 다시 복구 할 수 있어야 한다.
    • 가계부에서 이제까지 기록한 가계부 리스트를 볼 수 있습니다.
    • 가계부에서 상세한 세부 내역을 볼 수 있습니다.
  • 로그인하지 않은 고객은 가계부 내역에 대한 접근 제한 처리가 되어야 합니다.

➡️ 분석결과

과제 요구사항을 최소한으로 충족시키려면 사용자의 가계부에 소비내역만을 기록, 관리할 수 있는 기능을 개발하는 것이라고 판단했습니다.
하지만 저희는 가계부에 초점을 두고, 지출 내역만이 아닌, 수입 내역도 함께 관리하고 그에 따른 총 금액도 보여주도록 추가 기능을 개발하였습니다.


🛠 사용 기술

  • API
    python badge django badge

  • DB
    mysql badge

  • 배포
    aws badge docker badge nginx badge gunicorn badge

  • ETC


✒️ 이슈 관리

image

Jira를 사용하여 전체적인 작업상황을 한눈에 볼 수 있게 관리했으며,
branch와 commit 생성시 Jira에 생성된 이슈번호를 기입하고 연동하였습니다.

✨🍰✨ 코드 컨벤션

pre-commit 완료

Formatter

  • isort
  • black

Lint

  • flake8

로컬에선 pre-commit 라이브러리 사용으로 커밋 전 세가지 라이브러리를 한번에 실행하고 통과되지않을시 커밋이 불가능합니다. 레포지토리에는 github action으로 다시 한번 체크 후, 통과되지 않으면 merge가 block됩니다.


🌟 API 명세서

image

❗️ '/api/v1/accountbooks' api 호출시, 가계부 목록과, 각 가계부에 기록된 내역들을 함께 보여줍니다.
❗️ '/api/v1/accountbooks' api에 status=delete파라미터를 추가하면 삭제된 가계부 목록을 보여줍니다.
❗️ '/api/v1/accountbooks' api를 POST로 요청 시, 가계부를 생성합니다.
❗️ 가계부 목록, 가계부 단건 조회할 때, 가계부에 기록된 금액은 balance, 해당 일자까지의 금액을 합산한 값은 total_balance필드를 생성하여 보여줍니다.
❗️ 가계부, 가계부 기록 삭제 api의 http 메소드가 PATCH인 이유는 soft delete하기 위함입니다.
      삭제된 내역은 언제든지 복구할 수 있어야 하기 때문에 DB에서 실제로 데이터를 삭제하는것이 아닌, 각 모델의 is_deleted필드를 False 에서 True로 수정하게 됩니다.
❗️ 가계부 단건 및 가계부 기록 단건 복구 시, recovery를 붙여 구분합니다.
❗️ 가계부, 가계부 기록 수정 api의 메소드는 PUT이지만 코드상 partial 옵션을 주어 부분적 수정도 가능합니다.
❗️ 가계부, 가계부 기록은 is_deleted 필드가 False인 것만(삭제되지 않은 것만)유저에게 보여줍니다.



🚀 API 호출 테스트 결과
  • 회원가입

    스크린샷 2022-07-09 오후 11 51 42
  • 로그인

    스크린샷 2022-07-09 오후 11 53 38
  • 회원정보 수정

    스크린샷 2022-07-09 오후 11 57 20
  • 회원 탈퇴(soft delete)

    스크린샷 2022-07-09 오후 11 59 06
  • 가계부 목록 조회

    image
  • 삭제된 가계부 목록 조회

    image
  • 가계부 생성

    image
  • 가계부 조회

    image
  • 가계부 수정

    image
  • 가계부 삭제

    image
  • 가계부 복구

    image
  • 가계부 기록 생성

    image
  • 가계부 기록 조회

    image
  • 가계부 기록 수정

    image
  • 가계부 기록 삭제

    image
  • 가계부 기록 복구

    image

📋 ERD

erd

  • User : 유저 정보를 저장합니다.
  • AccountBook : 가계부 정보를 저장합니다.
  • AccountBookRecord : 각 가계부에 수입, 지출 내역을 저장합니다.

❗️ User 모델은 장고의 기본 User 모델을 그대로 사용하지 않고 커스텀하였습니다.
❗️ 한 명의 유저는 여러개의 가계부를 관리할 수 있도록 User 모델과 AccountBook(가계부)모델은 1:N 관계입니다.
❗️ AccountBook 모델과 AccountBookRecord 모델은 1:N 관계로, 한 개의 가계부에 여러 내역을 기록할 수 있습니다.


🌎 배포

Docker, NginX, Gunicorn을 사용하여 EC2 서버에 배포하였습니다.

➡️ 기본 URL

기본 URL은 404 페이지 입니다.
❗️ 현재 비용의 문제로 서버 접속은 불가능합니다.


✔️ Test Case

서비스하는 모든 API에 대한 TESTCASE 작성 및 수행 image


👋 TeamH Members

Name Task Github
고희석 모델링, 가계부 관련 API 개발 https://github.com/GoHeeSeok00
김민지 배포 https://github.com/my970524
김상백 가계부 관련 API 개발 https://github.com/tkdqor
김훈희 테스트 케이스 작성 https://github.com/nmdkims
이정석 개발환경 셋팅, 유저 관련 API 개발 https://github.com/sxxk2

➡️ Payhere 과제 노션 페이지