- 가계부를 생성하여 수입과 소비내역을 관리(작성, 수정, 삭제)할 수 있습니다.
- 삭제한 내역은 언제든지 다시 복구할 수 있습니다.
- 각 내역들의 금액을 합산하여 총 금액을 보여줍니다.
과제소개
아래의 요구사항을 만족하는 DB 테이블과 REST API를 만들어주세요.
요구사항
- 고객은 이메일과 비밀번호 입력을 통해서 회원 가입을 할 수 있습니다.
- 고객은 회원 가입이후, 로그인과 로그아웃을 할 수 있습니다.
- 고객은 로그인 이후 가계부 관련 아래의 행동을 할 수 있습니다.
- 가계부에 오늘 사용한 돈의 금액과 관련된 메모를 남길 수 있습니다.
- 가계부에서 수정을 원하는 내역은 금액과 메모를 수정 할 수 있습니다.
- 가계부에서 삭제를 원하는 내역은 삭제 할 수 있습니다.
- 삭제한 내역은 언제든지 다시 복구 할 수 있어야 한다.
- 가계부에서 이제까지 기록한 가계부 리스트를 볼 수 있습니다.
- 가계부에서 상세한 세부 내역을 볼 수 있습니다.
- 로그인하지 않은 고객은 가계부 내역에 대한 접근 제한 처리가 되어야 합니다.
과제 요구사항을 최소한으로 충족시키려면 사용자의 가계부에 소비내역만을 기록, 관리할 수 있는 기능을 개발하는 것이라고 판단했습니다.
하지만 저희는 가계부에 초점을 두고, 지출 내역만이 아닌, 수입 내역도 함께 관리하고 그에 따른 총 금액도 보여주도록 추가 기능을 개발하였습니다.
Jira를 사용하여 전체적인 작업상황을 한눈에 볼 수 있게 관리했으며,
branch와 commit 생성시 Jira에 생성된 이슈번호를 기입하고 연동하였습니다.
Formatter
- isort
- black
Lint
- flake8
로컬에선 pre-commit 라이브러리 사용으로 커밋 전 세가지 라이브러리를 한번에 실행하고 통과되지않을시 커밋이 불가능합니다. 레포지토리에는 github action으로 다시 한번 체크 후, 통과되지 않으면 merge가 block됩니다.
❗️ '/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 호출 테스트 결과
- User : 유저 정보를 저장합니다.
- AccountBook : 가계부 정보를 저장합니다.
- AccountBookRecord : 각 가계부에 수입, 지출 내역을 저장합니다.
❗️ User 모델은 장고의 기본 User 모델을 그대로 사용하지 않고 커스텀하였습니다.
❗️ 한 명의 유저는 여러개의 가계부를 관리할 수 있도록 User 모델과 AccountBook(가계부)모델은 1:N 관계입니다.
❗️ AccountBook 모델과 AccountBookRecord 모델은 1:N 관계로, 한 개의 가계부에 여러 내역을 기록할 수 있습니다.
Docker, NginX, Gunicorn을 사용하여 EC2 서버에 배포하였습니다.
➡️ 기본 URL
기본 URL은 404 페이지 입니다.
❗️ 현재 비용의 문제로 서버 접속은 불가능합니다.
서비스하는 모든 API에 대한 TESTCASE 작성 및 수행
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 |