[STK7-01] ML — 중·소형주 추천 후보군 확대

작업 내용 (설계 의도)

변경 사항

현재 ML 서비스의 CURATED_SYMBOLS는 대형주(KR 8 + US 4)만 포함한다. large / mid / small 3개 카테고리로 분류·확장하고, GET /recommendationscategory 파라미터를 추가한다. marketCapCategory 필드를 응답에 포함해 FE가 카테고리별 UI를 구분할 수 있게 한다.

다이어그램

처리 흐름

flowchart LR
    Client -->|GET /recommendations?category=mid| Router
    Router --> get_curated_symbols
    get_curated_symbols -->|MID symbols| scorer["_safe_signal 병렬 스코어링"]
    scorer --> filter["composite_score > 0.15 필터·랭킹"]
    filter -->|marketCapCategory: MID| Client

카테고리 구조

flowchart LR
    CURATED_SYMBOLS --> large["LARGE: KR 8 + US 4"]
    CURATED_SYMBOLS --> mid["MID: KR 6 + US 3"]
    CURATED_SYMBOLS --> small["SMALL: KR 4 + US 2"]

테스트 케이스

  • get_curated_symbols("large") 호출 시 기존 KR 8 + US 4 반환된다
  • get_curated_symbols("mid") 호출 시 KR 6 + US 3 반환된다
  • get_curated_symbols("small") 호출 시 KR 4 + US 2 반환된다
  • get_curated_symbols("all") 호출 시 3개 카테고리 전체 심볼 반환된다
  • 존재하지 않는 category 값 입력 시 422 에러를 반환한다
  • GET /recommendations?category=mid 응답의 각 항목에 marketCapCategory: "MID" 포함된다
  • GET /recommendations (category 파라미터 없음) 시 기본값 all로 동작한다