PLAN.md의 MintingOrder 스키마를 다음과 같이 확장해야 합니다. (기존 필드에 4개 필드 추가)
| 필드 | 타입 | 설명 |
|---|---|---|
| total_fee_avax | String | (신규) 소모된 총 수수료 (AVAX 단위로 환산, BigNumber String) |
| avax_price_usd | Number | (신규) TX 완료 시점의 1 AVAX당 달러 가격 |
| total_fee_usd | Number | (신규) 최종 정산 달러 금액 |
| avax_price_krw | Number | (신규) TX 완료 시점의 1 AVAX당 원화 가격 |
| total_fee_krw | Number | (신규) 최종 정산 원화 금액 |
CoinGecko의 무료 티어(월 10K 호출)를 효율적으로 사용하고 성능을 확보하기 위해 Redis 캐싱을 필수로 적용합니다.
| API 기능 | 엔드포인트 | 사용 파라미터 |
|---|---|---|
| AVAX 시세 조회 | /simple/price | ids=avalanche-2 (AVAX 코인 ID) |
| 통화 단위 | N/A | vs_currencies=usd,krw (USD 및 KRW 동시 요청) |
| Redis 캐시 키 | N/A | pricing:avax:usd_krw (고정 캐시 키) |
MintingProcessor가 트랜잭션 성공(CONFIRMED 상태)을 확인한 직후, 다음의 4단계를 순차적으로 실행해야 합니다.
트랜잭션에 기록된 mintingGasUsed는 Wei 단위이므로, 18자리(10^18)로 나누어 AVAX 단위로 환산해야 합니다.
계산:
\[Total\_{AVAX} \= \\frac{mintingGasUsed \\text{ (Wei)}}{\\text{10}^{18}}\]이전 단계에서 얻은 시세와 총액을 곱하여 정산 금액을 계산합니다.
USD 계산:
\[Total\_{USD} \= Total\_{AVAX} \\times avax\\\_price\\\_usd\]KRW 계산:
\[Total\_{KRW} \= Total\_{AVAX} \\times avax\\\_price\\\_krw\]계산된 Total_{USD}와 Total_{KRW}를 total_fee_usd와 total_fee_krw 필드에 저장합니다.
MintingOrder 문서의 status를 CONFIRMED로 변경하며, 새로 계산된 5개 필드(total_fee_avax, avax_price_usd, total_fee_usd, avax_price_krw, total_fee_krw)를 모두 포함하여 DB를 업데이트합니다.
P3-3 (TX 상태 추적 및 로깅) 태스크의 상세 내용에 다음 내용이 추가되어야 합니다.