[BE-14] 승인·거부·킬스위치·조회 UseCase
작업 내용 (설계 의도)
변경 사항
사용자가 직접 조작·조회하는 UseCase 5종을 만든다. UseCase 1개 = 파일 1개 원칙을 지킨다.
ApproveOrderProposalUseCase/RejectOrderProposalUseCase— 대기 제안 승인·거부. 승인 시점 가격으로 집행한다.ToggleKillSwitchUseCase— 킬 스위치 on/off. 켜면 1초 내에 ① 신규 주문 차단 ② 미체결 주문 전량 취소 ③ 대기 제안 전량 무효화가 이뤄진다. 보유 포지션과 손절 주문은 유지한다. 해제는 명시적 조작으로만 가능하며 자동 해제되지 않는다.GetAutoTradingStatusUseCase— 모드·단계·킬스위치·포지션 수·당일 손익·한도 소진율ListOrderProposalsUseCase— 제안 목록 조회
킬 스위치는 상태 전이가 있는 파괴적 조작이다 — 롤백: 킬 스위치 해제로 즉시 복구되나, 취소된 미체결 주문은 복원되지 않는다.
의존
- BE-11 (AutoTradingDomainService)
다이어그램
처리 흐름
sequenceDiagram participant UC as ToggleKillSwitchUseCase participant Svc as AutoTradingDomainService participant Order as OrderGateway UC->>Svc: enableKillSwitch() Svc->>Svc: 정책 갱신 (신규 주문 차단) Svc->>Order: 미체결 주문 전량 취소 Svc->>Svc: PENDING 제안 INVALIDATED 전이
클래스 의존
flowchart LR Approve[ApproveOrderProposalUseCase] --> Svc[AutoTradingDomainService] Reject[RejectOrderProposalUseCase] --> Svc Kill[ToggleKillSwitchUseCase] --> Svc Status[GetAutoTradingStatusUseCase] --> Svc List[ListOrderProposalsUseCase] --> Svc
테스트 케이스
PENDING제안을 승인하면 승인 시점 가격으로 집행된다.- 만료된 제안을 승인하면 거부된다.
- 킬 스위치를 켜면 미체결 주문이 전량 취소된다.
- 킬 스위치를 켜면
PENDING제안이 전부INVALIDATED가 된다. - 킬 스위치를 켜도 보유 포지션은 청산되지 않는다(상태 보호).
- 킬 스위치는 자동 해제되지 않는다 — 명시적 해제 호출 전까지 유지된다.
- 상태 조회가 당일 손실 한도 소진율을 반환한다.