Files
portfolio-hub/docs/batches/bat-014_20260524_portfolioitem-symbol-response-contract/index.md
T

2.2 KiB

BAT-014: PortfolioItem symbol 응답 계약 보강 (REQ-025, REQ-026, REQ-027, REQ-028, REQ-032)

  • Status: release-candidate
  • Profile: batch-lite
  • Source Discovery: dcy-003
  • Included REQ: REQ-025, REQ-026, REQ-027, REQ-028, REQ-032
  • Excluded REQ: REQ-029, REQ-030, REQ-031

Summary

  • trex-orbit 팀 이슈(docs/issues/20260524_portfolio-hub-ticket-symbol-in-portfolios.md) 후속으로, PortfolioItem 기반 v1 portfolio 응답 계약에 symbol 필드를 추가한다.
  • 특히 GET /v1/portfolios 는 클라이언트 캐시 복원이 아니라 portfolios JOIN assets 결과를 그대로 응답해야 하며, symbol 은 linked asset row의 assets.symbol 이어야 한다.
  • POST/PATCH/DELETE /v1/portfolios 응답도 동일한 PortfolioItem contract를 따르도록 정합성을 맞추고, baseline 문서(docs/interface-contract.md)에 이를 반영한다.

Scope

  • In Scope:
    • app/schemas/v1.py — PortfolioItem.symbol: str | None = None 추가
    • app/api/v1_portfolios.py — _portfolio_to_item() 에 symbol=portfolio.symbol 반영
    • app/repositories/postgres.py — GET/list/create/update/delete 응답이 asset join 결과를 유지하는지 검증
    • tests/test_v1_portfolios_list.py — GET /v1/portfolios 응답 symbol 검증 추가
    • tests/test_v1_portfolios_crud.py — POST/PATCH/DELETE 응답 symbol 검증 추가
    • docs/interface-contract.md — PortfolioItem 응답 예시/설명에 symbol 및 GET join 기반 응답 설명 추가
  • Out of Scope:
    • portfolio write semantics 변경 (ownership, soft delete, disabled 보호 정책 자체는 불변)
    • /v1/portfolios/{id}/ledger/trades, /tags, /comments 계약 변경
    • assets catalog schema 또는 DB migration

Documents

Notes

  • profile 선정 근거: follow-up change는 기존 Implemented REQ의 응답 contract augmentation이며 범위가 좁고 additive 성격이 강해 batch-lite 로 시작한다.
  • 다만 docs/interface-contract.md 갱신은 필수이므로 문서 정합성까지 한 배치에서 닫는다.
  • BAT-009 / BAT-010 verification evidence는 본 batch 완료 후 superseded 표기가 필요할 수 있다.