STK10-15 포트폴리오 예측 재계산

작업 내용

worker가 collected.v1 수신 시 포트폴리오 예측을 재계산·영속화하는 수직 슬라이스다. STK10-14와 동일 패턴, 도메인만 포트폴리오.

  • worker application: RefreshPortfolioForecastUseCase — BE에서 보유종목·수급 팩터 read → ml 포트폴리오 예측 compute → BE 포트폴리오 예측 upsert
  • worker infrastructure: BE read/persist client, ml compute client (STK10-13 client 재사용)
  • backend presentation: 포트폴리오 예측 upsert API (멱등)
  • backend 영속화: 포트폴리오 예측 스냅샷 — main(STK8) 머지 상태 확인 후 재사용/신설

다이어그램

처리 흐름

sequenceDiagram
    participant EW as EventWorker
    participant UC as RefreshPortfolioForecastUseCase
    participant BE as backend API
    participant ML as ml compute
    EW->>UC: refresh(baseDate)
    UC->>BE: 보유종목·수급 팩터 read
    UC->>ML: 포트폴리오 예측 compute
    ML-->>UC: forecast
    UC->>BE: upsert 포트폴리오 예측 (멱등)

클래스 의존

flowchart LR
    UC[RefreshPortfolioForecastUseCase] --> BEClient[backend client]
    UC --> MLClient[ml client]
    BEClient --> BE[backend 포트폴리오 upsert API]
    MLClient --> ML[ml 포트폴리오 예측]

테스트 케이스

  • collected.v1 처리 시 포트폴리오 예측이 재계산되어 BE에 영속화된다
  • 보유종목이 없으면 ml 호출 없이 스킵한다
  • 동일 baseDate 재처리 시 멱등하게 덮어쓰기된다
  • ml·BE 호출 실패 시 재시도/DLQ 대상이 된다 (부분 저장 없음)