[STK7-03] BE — 종목 리스트 관심종목 상태 연동
작업 내용 (설계 의도)
변경 사항
현재 ListStocksUseCase는 WatchlistDomainService를 참조하지 않아 모든 종목의 isInWatchlist가 항상 false다.
WatchlistDomainService.findAll()을 호출해 관심종목 symbol set을 구성하고, 종목 리스트와 교차 조회하여 올바른 isInWatchlist를 반환한다.
watchlist 조회 실패(예외) 시 graceful degradation — 모든 isInWatchlist = false로 반환한다.
변경 파일:
stock/application/ListStocksUseCase.kt—WatchlistDomainService주입, 교차 조회 로직 추가
다이어그램
처리 흐름
sequenceDiagram participant C as Client participant UC as ListStocksUseCase participant SDS as StockDomainService participant WDS as WatchlistDomainService C->>UC: execute(page, size) UC->>SDS: listStocks(page, size) SDS-->>UC: (stocks, total) UC->>WDS: findAll() WDS-->>UC: List<WatchlistItem> UC->>UC: watchlistSymbols = items.map { it.symbol }.toSet() UC-->>C: StockListResponse(isInWatchlist 반영)
클래스 의존
flowchart LR ListUC["ListStocksUseCase"] --> StockDS["StockDomainService"] ListUC --> WatchlistDS["WatchlistDomainService"]
테스트 케이스
- 관심종목에 등록된 symbol의
isInWatchlist=true로 반환된다 - 관심종목에 없는 symbol의
isInWatchlist=false로 반환된다 - 관심종목이 비어 있을 때 모든 종목
isInWatchlist = false반환된다 WatchlistDomainService.findAll()예외 발생 시 모든isInWatchlist = false로 graceful 반환된다 (예외 전파 없음)- 페이지네이션(page, size) 동작이 변경 전후 동일하다