Skip to content

feat(types): Deposit/Withdrawal state 필드를 str에서 Enum으로 변경 #47

@interruping

Description

@interruping

현재 상태

Deposit.stateWithdrawal.statestr 타입으로 정의되어 있어, 유효한 값이 무엇인지 코드만으로 알 수 없다.

class Deposit(BaseModel):
    state: str  # "ACCEPTED"? "accepted"? 알 수 없음

class Withdrawal(BaseModel):
    state: str  # "DONE"? "done"? 알 수 없음

이로 인해 사용자가 API 문서를 직접 확인하지 않으면 대소문자 실수가 발생할 수 있다 (실제로 "accepted"로 잘못 비교하여 필터링이 동작하지 않는 버그 발생).

제안

Upbit API 응답의 state 값을 StrEnum으로 정의하여 타입 안전성을 확보한다.

class DepositState(StrEnum):
    PROCESSING = "PROCESSING"
    ACCEPTED = "ACCEPTED"
    CANCELLED = "CANCELLED"
    REJECTED = "REJECTED"
    TRAVEL_RULE_SUSPECTED = "TRAVEL_RULE_SUSPECTED"
    REFUNDING = "REFUNDING"
    REFUNDED = "REFUNDED"

class WithdrawalState(StrEnum):
    WAITING = "WAITING"
    PROCESSING = "PROCESSING"
    DONE = "DONE"
    FAILED = "FAILED"
    CANCELLED = "CANCELLED"
    REJECTED = "REJECTED"

변경 대상

  • types/deposit.py: Deposit.state: strDepositState
  • types/withdrawal.py: Withdrawal.state: strWithdrawalState, WithdrawalKrw.state: strWithdrawalState
  • api/deposits.py: list() 메서드의 state 파라미터 타입을 DepositState | None으로
  • api/withdrawals.py: list() 메서드의 state 파라미터 타입을 WithdrawalState | None으로

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions