Files
portfolio-hub/docs/batches/bat-011_20260521_v1-portfolios-ledger-path-migration/index.md
T
genichinandClaude Opus 4.8 b1c34068e5 docs: batch 상태 released 동기화(REL-001/002) + README 현행화(거래내역/실현PnL API)
batch drift 정합 — REL-001(BAT-001~016)·REL-002(BAT-017) released에 맞춰
batches/index 및 개별 index 상태를 release-candidate→released 동기화(17건).
README: bootstrap 문구 제거, dcy-007 엔드포인트(GET /trades·/pnl/realized) 추가,
planned-next 현행화. 코드 무변경.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-22 09:51:13 +09:00

2.0 KiB

BAT-011: v1 portfolios ledger path migration

  • Status: released
  • Profile: standard
  • Source Discovery: dcy-003
  • Included REQ: REQ-029
  • Excluded REQ: none

Summary

  • 기존 POST /v1/assets/{asset_id}/ledger/trades(app/api/v1_ledger.py)를 POST /v1/portfolios/{portfolio_id}/ledger/trades로 이전하고 구 path를 동일 release에서 제거한다.
  • 동작·인가·idempotency는 그대로 보존하며 REQ-027 정합의 disabled portfolio 차단(HTTP 409)을 신규 추가한다.
  • trex-basic 클라이언트와의 동시 배포가 필수이므로 release plan에 배포 순서 잠금·rollback 전제를 명시한다.

Scope

  • In Scope:
    • app/api/v1_portfolios.py — POST /v1/portfolios/{portfolio_id}/ledger/trades 라우트 추가
    • app/api/v1_ledger.py — 구 path 라우트 제거 (또는 파일 전체 제거 후 app/main.py에서 include 제거)
    • app/main.py — 구 ledger 라우터 include 제거
    • app/services/portfolio_service.py 또는 app/services/ledger_service.py — disabled 차단 검증 추가
    • tests/test_v1.py — 구 path 케이스 갱신(HTTP 404 확인)
    • tests/test_v1_portfolios_ledger.py (신규) — AC-1~10 검증
  • Out of Scope:
    • ledger_trades.asset_id 컬럼명 변경 (별도 migration REQ로 분리 가능)
    • trex-basic 코드 변경 (별도 레포)

Documents

Notes

  • R-1 (High): trex-basic 동시 배포 — 신 path 단일 서빙, 별칭/redirect 없음. release plan에 배포 순서(trex-basic 사전 빌드 → portfolio-hub 배포 → trex-basic 배포) + rollback 시 trex-basic 동반 rollback 전제 명시 필수.
  • R-2 (Low): disabled portfolio 차단(AC-7)은 REQ-027 soft delete 정책 정합 검증으로 신규. 기존 daemon 인가 3단계와 순서 충돌 없이 disabled 체크를 insert 전에 추가.
  • 선행 완료: BAT-009(soft delete + disabled 상태 관리, REQ-027) ✅