[BE-15] 체결동기화·정산·단계평가 UseCase
작업 내용 (설계 의도)
변경 사항
스케줄러가 호출하는 배치 UseCase 3종을 만든다. UseCase 1개 = 파일 1개.
SyncPositionFillsUseCase— 토스 체결 내역을 조회해 포지션·체결 기록을 동기화한다. 1차는 폴링이며, 실시간 WebSocket(personal:order)은 PRD FR-28(P1)로 미룬다. 프로세스 재기동 후 상태 복구도 이 경로가 담당한다.SettleTradingDayUseCase— 장 마감 후 정산. 실현손익 확정 +PENDING제안 만료 + 체결 대조.EvaluateRiskTierUseCase— 일 1회 사다리 승강급 판정. 강등은 즉시 적용, 승급은 알림만.
ORDER_INFO 레이트리밋이 초당 6회이고 09:00~09:10에는 초당 3회로 낮아지므로, 개장 10분간 조회 주기를 늘려 피크 한도를 준수한다.
의존
- BE-12 (정산·단계평가 도메인 서비스)
다이어그램
처리 흐름
sequenceDiagram participant Sch as 스케줄러 participant Sync as SyncPositionFillsUseCase participant Order as OrderGateway participant Pos as TradingPosition Sch->>Sync: execute() Sync->>Order: 체결 내역 조회 Order-->>Sync: 체결 목록 Sync->>Pos: applyBuyFill / applySellFill
클래스 의존
flowchart LR Sync[SyncPositionFillsUseCase] --> Svc[AutoTradingDomainService] Settle[SettleTradingDayUseCase] --> SetSvc[TradingSettlementDomainService] Eval[EvaluateRiskTierUseCase] --> TierSvc[RiskTierPromotionDomainService]
테스트 케이스
- 토스 체결 내역이 포지션 수량·평단에 반영된다.
- 이미 반영된 체결을 다시 동기화해도 중복 반영되지 않는다(멱등).
- 개장 10분간 조회 주기가 늘어나 초당 3회를 넘지 않는다.
- 마감 정산 후 당일 실현손익이 확정되고
PENDING제안이 만료된다. - 단계평가에서 강등 조건 충족 시 정책이 즉시 갱신된다.
- 단계평가에서 승급 조건 충족 시 정책을 바꾸지 않고 알림만 보낸다.