[STK6-03] 관심종목·목표가 알림 MCP Tool

작업 내용 (설계 의도)

변경 사항

presentation/ai/WatchlistMcpTools.ktAlertMcpTools.kt를 신규 생성한다. 기존 관심종목·알림 UseCase를 @Tool로 래핑한다. UseCase 로직 변경 없음.

선행 티켓: STK6-01

다이어그램

처리 흐름

sequenceDiagram
    participant LLM as Claude
    participant W as WatchlistMcpTools
    participant A as AlertMcpTools
    participant UC as UseCases
    LLM->>W: addToWatchlist("005930")
    W->>UC: AddWatchlistItemUseCase.execute
    UC-->>W: WatchlistItemResponse
    LLM->>A: createPriceAlert("005930", "ABOVE", 80000)
    A->>UC: CreatePriceAlertUseCase.execute
    UC-->>A: AlertResponse

클래스 의존

flowchart LR
    WatchlistMcpTools -->|delegates| AddWatchlistItemUseCase
    WatchlistMcpTools -->|delegates| RemoveWatchlistItemUseCase
    WatchlistMcpTools -->|delegates| ListWatchlistUseCase
    AlertMcpTools -->|delegates| CreatePriceAlertUseCase
    AlertMcpTools -->|delegates| DeletePriceAlertUseCase
    AlertMcpTools -->|delegates| ListPriceAlertsUseCase

테스트 케이스

  • addToWatchlist("005930") 호출 시 AddWatchlistItemUseCase에 위임한다.
  • removeFromWatchlist("005930") 호출 시 예외 없이 삭제 위임한다.
  • listWatchlist() 호출 시 빈 목록에서도 정상 응답한다.
  • createPriceAlert("005930", "ABOVE", 80000) 호출 시 AlertDirection.ABOVE로 변환해 위임한다.
  • 존재하지 않는 알림 ID 삭제 시 예외를 LLM이 이해할 수 있는 메시지로 반환한다.