Files
portfolio-hub/docs/batches/bat-008_20260511_trex-basic-baseline-docs-update/verification.md
T
genichin 829629fa8f feat: implement portfolio UUID migration and v1 API finalization (BAT-006, BAT-001 re-verified)
Core Changes:
- Migrate portfolio_id from string to UUID in schema and repository layer
- Update portfolio CLI commands to use name+user combination for identification
- Update HTTP API to accept portfolio_id as UUID path parameter
- Implement portfolio ownership validation in repository queries

Requirements Completed (REQ-016 to REQ-019):
- REQ-016: portfolios table UUID schema migration with data migration script
- REQ-017: CLI portfolio commands with name+user identification
- REQ-018: HTTP API portfolio path parameters and v1 asset_id UUID returns
- REQ-019: Portfolio UUID baseline documentation updates

BAT-001 Re-verification:
- REQ-004~010 marked as Implemented after verification evidence validation
- All v1 API endpoints verified with comprehensive test coverage

Documentation Updates:
- Update data-model.md with portfolio UUID structure
- Update interface-contract.md with UUID path parameters
- Update runtime-flows.md with ownership-based resolution flows
- Update project-structure.md with database layer changes
- Add migration script for portfolio UUID transition

Testing:
- Add test_portfolio_uuid.py for migration validation
- Update test_cli.py and test_portfolio_ownership.py for ownership checks
2026-05-11 09:27:57 +00:00

3.5 KiB

BAT-008 Verification

  • Status: passed
  • Batch: BAT-008
  • Profile: batch-lite
  • Architecture Impact: none (confirmed — doc-only, no code/schema/runtime changes)
  • Design Gate: no (planning.md confirmed — no structural decisions required)

Acceptance Mapping

REQ-011 AC-1: docs/interface-contract.md에 4개 엔드포인트 명세 포함

Criterion Evidence Result
GET /health 응답 스키마 포함 docs/interface-contract.md Interface: Primary HTTP API — Outputs 섹션에 {status, service, version, checked_at} 명시 (HealthResponse from app/api/health.py 기준) PASS
GET /v1/assets 요청/응답 명세 포함 docs/interface-contract.md Endpoint: GET /v1/assets — query param, AssetsResponse/AssetItem 스키마, HTTP 200/401/403 명시 PASS
GET /v1/user_info 요청/응답 명세 포함 docs/interface-contract.md Endpoint: GET /v1/user_info — UserInfoResponse/BrokerItem 스키마, HTTP 200/401/403/404 명시 PASS
POST /v1/assets/{asset_id}/ledger/trades 요청/응답 명세 포함 docs/interface-contract.md Endpoint: POST /v1/assets/{asset_id}/ledger/trades — LedgerTradeRequest/LedgerTradeResponse 스키마, HTTP 201/200/409/404/401/403 명시 PASS
service-token bearer 인증 방식 포함 docs/interface-contract.md Authentication 섹션 — DB-issued service token 조건, trade-write 권한 명시 PASS

REQ-011 AC-1: PASS

REQ-011 AC-2: docs/data-model.md에 신규 테이블/컬럼 문서화

Criterion Evidence Result
broker_credentials 테이블 문서화 docs/data-model.md Entity: BrokerCredential — (user_id, broker) PK, account_ref, encrypted_payload, credential_version, last_rotated_at; migration 20260502_0014 기준 PASS
ledger_trades 테이블 문서화 docs/data-model.md Entity: LedgerTrade — ledger_entry_id (BigInt Identity), asset_id, order_id, execution_id, side, quantity, price, fee_amount, tax_amount, executed_at, recorded_at; uq_ledger_trades_idempotency unique constraint 명시 PASS
portfolios.market 컬럼 문서화 docs/data-model.md Entity: Portfolio Key Fields — market :: text|null 추가 PASS
auth_tokens.runtime_id 컬럼 문서화 docs/data-model.md Entity: AuthToken — runtime_id :: text|null 및 idx_auth_tokens_runtime_id_unique 명시 PASS

REQ-011 AC-2: PASS

REQ-011 AC-3: docs/runtime-flows.md에 v1 API 처리 흐름과 runtime_id 발급 흐름 포함

Criterion Evidence Result
v1 API 처리 흐름 포함 docs/runtime-flows.md — Flow: v1 API — Service-Token Authentication, GET /v1/assets, GET /v1/user_info, POST /v1/assets/{asset_id}/ledger/trades (bat-001에서 추가, 현행 코드와 일치) PASS
runtime_id 발급 흐름 포함 docs/runtime-flows.md — Flow: v1 API — POST /auth/service-tokens: "Calls AuthService.issue_service_token() which creates a new DB token with runtime_id" (bat-001에서 추가) PASS

REQ-011 AC-3: PASS

Architecture Impact Confirmation

  • batch-lite, Design Gate = no
  • 코드/DB 스키마/런타임 흐름 변경 없음
  • architecture impact: none ✓

Blocking Issues

  • 없음

Ready for Release

  • true

Notes

  • docs/runtime-flows.md의 v1 API flows는 bat-001 (BAT-001 scope) 에서 이미 작성됨. REQ-011이 명시한 "v1 API 처리 흐름과 runtime_id 발급 흐름" 조건은 bat-001 결과로 충족되어 있었으며, bat-008은 이를 공식 확인하고 Source Discovery를 갱신함.