[STK6-04] 주문·계좌·보유종목 MCP Tool
작업 내용 (설계 의도)
변경 사항
presentation/ai/OrderMcpTools.kt를 신규 생성한다. Phase 5 주문·계좌·보유 종목 UseCase를 @Tool로 래핑한다. Phase 5 구현 완료 전까지 @ConditionalOnProperty(name = "features.order-tool.enabled", havingValue = "true")로 비활성화한다.
선행 티켓: STK6-01 외부 의존: Phase 5 주문 UseCase 구현 완료 (별도 타임라인)
다이어그램
처리 흐름
sequenceDiagram participant LLM as Claude participant O as OrderMcpTools participant UC as OrderUseCases LLM->>O: placeOrder("005930", "BUY", 10, "MARKET", null) O->>UC: PlaceOrderUseCase.execute(command) UC-->>O: OrderResponse LLM->>O: getHoldings(accountId) O->>UC: GetHoldingsUseCase.execute(accountId) UC-->>O: List<HoldingResponse>
클래스 의존
flowchart LR OrderMcpTools -->|delegates| PlaceOrderUseCase OrderMcpTools -->|delegates| CancelOrderUseCase OrderMcpTools -->|delegates| ModifyOrderUseCase OrderMcpTools -->|delegates| GetAccountsUseCase OrderMcpTools -->|delegates| GetHoldingsUseCase OrderMcpTools -->|delegates| GetTradeHistoryUseCase
테스트 케이스
features.order-tool.enabled=false시OrderMcpTools빈이 컨텍스트에 없다.placeOrder("005930", "BUY", 10, "MARKET", null)호출 시 PlaceOrderUseCase에 위임한다.placeOrder에 수량 0 전달 시 명확한 오류 메시지를 반환한다.cancelOrder에 존재하지 않는 주문 ID 전달 시 예외를 메시지로 래핑 반환한다.getHoldings결과가 빈 목록인 경우도 정상 응답한다.