[STK6-02] 종목 조회·검색·시세 MCP Tool

작업 내용 (설계 의도)

변경 사항

presentation/ai/StockMcpTools.kt를 신규 생성한다. 기존 ListStocksUseCase, SearchStocksUseCase, GetStockPricesUseCase를 주입받아 @Tool 메서드로 래핑한다. UseCase 로직을 변경하지 않는다.

선행 티켓: STK6-01 (Spring AI 의존성 추가)

다이어그램

처리 흐름

sequenceDiagram
    participant LLM as Claude
    participant T as StockMcpTools
    participant UC as UseCase
    LLM->>T: searchStocks("삼성전자")
    T->>UC: SearchStocksUseCase.execute("삼성전자")
    UC-->>T: List<StockResponse>
    T-->>LLM: JSON 직렬화 결과

클래스 의존

flowchart LR
    StockMcpTools -->|delegates| ListStocksUseCase
    StockMcpTools -->|delegates| SearchStocksUseCase
    StockMcpTools -->|delegates| GetStockPricesUseCase

테스트 케이스

  • searchStocks("삼성전자") 호출 시 SearchStocksUseCase.execute("삼성전자")에 위임한다.
  • listStocks(0, 20) 호출 시 ListStocksUseCase.execute(0, 20)에 위임한다.
  • getStockPrices(listOf("005930", "035420")) 호출 시 두 종목 시세를 포함한 Map을 반환한다.
  • UseCase가 빈 목록을 반환해도 Tool이 정상 응답한다.