--- id: "req-0007" status: approved discovery: "dcy-0007" criteria: create: - "ac-0037" update: [] retire: [] satisfy: - "ac-0032" - "ac-0034" - "ac-0036" --- # 기업행동 원장이 포함된 보유 원가·전체 원장 조회 복구 (#19) ## Objective 기업행동 metadata를 JOIN하는 포트폴리오 read query가 PostgreSQL column ambiguity 없이 기존 보유 원가 replay와 source-neutral 전체 원장 계약을 제공하도록 복구한다. ## Scope - 기업행동 원장이 있는 포트폴리오의 holdings cost-basis path가 모든 거래와 기업행동 metadata를 기존 순서·의미로 읽어 원가 replay 결과를 반환한다. - `GET /v1/portfolios/{portfolio_id}/ledger`가 기업행동 행과 일반 거래 행을 함께 기존 latest-first·source filter·keyset pagination 계약으로 반환한다. - Joined query의 base ledger column reference를 table alias로 한정하고 corporate-action metadata projection은 명시적으로 유지한다. - 실제 PostgreSQL repository 회귀와 API 회귀로 holdings cost-basis 및 unified ledger HTTP 200, 혼합 행, metadata mapping과 cursor 경계를 검증한다. ## Constraints - SELECT column 순서와 `_row_to_ledger_entry()` positional mapping을 유지한다. - API endpoint, response schema, authorization, source/action 의미, ordering 및 cursor 형식을 변경하지 않는다. - Holdings cost basis, WAC, PnL 또는 corporate-action replay 회계 규칙을 변경하지 않는다. - 기존 active `AC-0032`, `AC-0034`, `AC-0036`의 의미를 변경하지 않고 satisfy binding으로 적용한다. ## Non-Goals - 기업행동 또는 일반 ledger row의 생성·수정·삭제·backfill. - broker 주문·취소·체결, producer/outbox 또는 reversal/recovery 동작 변경. - trex-web UI 구현, 배포, release, production mutation 또는 특정 production portfolio 데이터 보정.