디셈버앤컴퍼니 핀트 서비스 개발
- Figma의 각 화면에서 필요한 데이터를 고객에게 제공해주는 API 시스템을 개발
- 제공된 테스트 데이터 셋을 API에서 사용할 수 있또록 정제하여 로딩하는 batch script 작성
- 원본 데이터와 응답 값에 일관성을 유지
on:
schedule:
- cron: "0 0 * * *"Github Action을 이용하여 매일 12시 데이터베이스를 업데이트합니다.
# 자산 정보를 입력합니다.
python manage.py seed_assets# 계좌 자산 정보를 입력합니다.
python manage.py seed_transactionserDiagram
ACCOUNT{
number string
name string
owner ACCOUNTOWNER
trader TRADER
principal integer
}
ACCOUNTOWNER{
is_user boolean
name string
user USER
}
HISTORY{
account ACCOUNT
}
TRANSFER{
account_number string
user_name string
transfer_amount integer
}
ASSET{
name string
isin string
group GROUP
}
GROUP{
name string
}
TRADER{
name string
}
TRANSACTION{
price integer
amount integer
user USER
asset ASSET
account ACCOUNT
}
USER{
name string
}
ACCOUNTOWNER |o--o| USER : register
ACCOUNTOWNER ||--o{ ACCOUNT : open
HISTORY }o--|| ACCOUNT : log
ASSET }o--|| GROUP : grouped
TRADER ||--o{ ACCOUNT : allow
TRANSACTION }o--|| ACCOUNT : deal
TRANSACTION }o--|| ASSET : deal
TRANSACTION }o--|| USER : deal
Account: 계좌 모델number: 계좌번호name: 계좌명owner: 계좌 소유자trader: 증권사principal: 투자 원금
AccountOwner: 계좌 소유자 모델is_user: 계좌 소유자가 서비스 사용자인지 여부name: 계좌 소유자 명user: 사용자 (계좌 소유자가 서비스 사용자일 경우)
Transfer: 입금 모델account_number: 계좌번호user_name: 사용자명transfer_amount: 거래금액
History: 계좌 거래 내역 모델account: 계좌
Asset: 자산 모델name: 종목명isin: 식별자group: 자산군
Group: 자산군 모델name: 자산군 명
Trader: 증권사 모델name: 증권사명
Transaction: 거래 내역 모델price: 개당 가격amount: 수량user: 소유 사용자asset: 자산account: 계좌
User: 사용자 모델name: 사용자 명
-
투자 화면
- Method: GET
- URL: /api/v1/invest/user/int:user_pk/
- Response:
[ { 'name': 계좌명, 'trader': 증권사, 'number': 계좌번호, 'total_profit': 계좌 총 자산, }, ... ]
-
투자상세 화면
- Method: GET
- URL: /api/v1/invest/user/int:user_pk/account/int:account_pk/
- Response:
{ 'name': 계좌명, 'trader': 증권사ID, 'number': 계좌번호, 'total_assets': 계좌 총 자산, 'principal': 투자 원금, 'total_profit': 총 수익금, 'profit_rate': 수익률 }
-
보유종목 화면 API
-
Method: GET
-
URL: /api/v1/invest/user/int:user_pk/account/int:account_pk/assets/
-
Response:
{ 보유 종목의 자산군: [ { 'asset_name': 보유 종목명, 'asset_price': 보유 종목의 평가 금액 (종목 보유 수량 * 종목 현재가), 'asset_isin': 보유 종목 ISIN, }, ... ] , ... }
-
- Method: POST
- URL: api/v1/accounts/transfer/
- Description: 입금 거래 정보들을 서버에 등록합니다.
- Request Example
{ "account_number": "123123", "user_name": "아이작", "transfer_amount": 1000 } - Response Example
{ "transfer_identifier": 111 }
- Method: POST
- URL: api/v1/accounts/transfer/result/
- Description: Phase 1에서 등록한 거래정보를 검증 후 실제 고객의 자산을 업데이트합니다.
- Request Example
{ "signature": "82b64b05dfe897e1c2bce88a62467c084d79365af1", // "123123아이작1000" 을 sha512 hash 한 값. "transfer_identifier": 111 } - Response Example
{ "status": true }

