Asset Catalog Model Implementation (BAT-001): - Introduce assets table with UUID PK, symbol UNIQUE, markets TEXT[] array - Define MarketCode enum (KRX, NXT, SOR, NASDAQ, NYSE, UPBIT, BITHUMB) - Add Asset domain model with catalog properties - Implement asset CRUD protocols in portfolio_repository - Add PostgreSQL asset CRUD operations with GIN index on markets Portfolio Model Refactoring (REQ-011): - Add portfolios.asset_id UUID FK to assets(asset_id) ON DELETE RESTRICT - Remove portfolios.symbol and portfolios.market columns - Update Portfolio domain model to reference asset_id instead of symbol/market - Refactor all portfolio queries to JOIN assets catalog - Update all repository methods to use asset references Data Migration (REQ-014): - Create 20260519_0017 Alembic revision for assets table creation - Create 20260519_0018 Alembic revision for atomic data migration: * Extract unique symbol combinations from portfolios * Aggregate markets using ARRAY_AGG(DISTINCT market) * Populate assets catalog with extracted data * Update portfolios.asset_id to reference new assets * Remove legacy symbol/market columns in single transaction - Implement migration with rollback support Requirements Approved (REQ-001~008): - REQ-001~008 transitioned from Proposed to Approved - Complete tag model requirement set with implementation readiness New Requirements Approved (REQ-009~015): - REQ-009: assets table schema (approved, included in BAT-001) - REQ-010: admin asset catalog CRUD (approved, future BAT-002) - REQ-011: portfolios asset_id FK (approved, included in BAT-001) - REQ-012: portfolio create catalog validation (approved, future BAT-002) - REQ-013: GET /v1/assets token branching (approved, future BAT-002) - REQ-014: portfolios data migration (approved, included in BAT-001) - REQ-015: asset catalog baseline docs (approved) Code Changes: - app/domain/models.py: Add Asset model, MarketCode enum, Portfolio asset_id FK - app/repositories/portfolio_repository.py: Define asset CRUD protocol - app/repositories/postgres.py: Implement asset operations with full CRUD - app/api/v1_assets.py: Remove symbol/market direct references - app/cli/commands/portfolio.py: Update portfolio commands for asset references - app/schemas/portfolio.py: Update portfolio schema with asset_id - All portfolio operations throughout codebase: Use asset references Testing: - Add test_asset_catalog.py for asset CRUD operations - Verify REQ-009 AC-1~5 (asset catalog creation, lookup, uniqueness) - Verify REQ-011 AC-1~5 (FK constraint, portfolio asset reference) - Verify REQ-014 AC-1~6 (migration atomicity, data correctness, rollback) - Update existing tests for asset model usage Documentation: - Create BAT-001 batch documents (planning, design, implementation, verification) - Update dcy-001 with implementation details and confirmed architecture - Add 8 new requirement documents (REQ-009~015) - Update docs/discovery/index.md with batch entry Impact: - Database: assets catalog table, portfolios refactored to reference assets - Migration: 2 new Alembic revisions (0017 assets, 0018 portfolio migration) - API: Symbol/market now accessed through asset references - CLI: Portfolio commands require asset reference pattern - All existing portfolio data preserved and correctly migrated
4.4 KiB
4.4 KiB
REQ-015: asset catalog 도입 baseline 문서 갱신
- Status: Approved
- Type: Documentation
- Priority: Low
- Owner: Justin Ko
Intent
- dcy-001에서 정의한 assets 테이블, portfolios 재설계, admin CRUD API/CLI, GET /v1/assets 토큰 분기 변경 내용을 baseline 문서에 반영하여 다음 Discovery/REQ 작성 시 잘못된 baseline 참조를 방지한다.
Requirement
docs/data-model.md에assets엔티티(asset_id, symbol, markets, display_name, status, created_at, updated_at)를 추가하고portfolios엔티티에서 symbol/market 제거 및 asset_id FK 참조를 반영한다.docs/interface-contract.md에POST /v1/assets,PATCH /v1/assets/{asset_id},PATCH /v1/assets/{asset_id}/deactivate엔드포인트 명세를 추가하고GET /v1/assets의 토큰 타입별 분기 동작을 갱신한다.docs/runtime-flows.md의 "Flow: v1 API — GET /v1/assets" 섹션을 service-token-only에서 토큰 타입 분기 구조로 교체하고, admin asset CRUD HTTP 흐름을 신규 추가한다.docs/project-structure.md의app/cli/Command groups 목록에asset커맨드 그룹을 추가하고,app/api/v1 route surfaces에 admin asset CRUD 엔드포인트를 반영한다.
Acceptance Criteria
- Given 구현 완료 후, When
docs/data-model.md를 검토, Thenassets테이블 스키마(asset_id, symbol UNIQUE, markets TEXT[], display_name, status)와portfolios의 asset_id FK 참조, symbol/market 제거가 반영되어 있다. - Given 구현 완료 후, When
docs/interface-contract.md를 검토, ThenPOST/PATCH /v1/assets및PATCH /v1/assets/{id}/deactivate엔드포인트 명세, GET /v1/assets 토큰 타입별 분기 동작이 포함되어 있다. - Given 구현 완료 후, When
docs/runtime-flows.md를 검토, Then "GET /v1/assets" 플로우가 토큰 타입 분기 구조(service/user/admin)로 갱신되어 있고 admin asset CRUD 흐름이 추가되어 있다. - Given 구현 완료 후, When
docs/project-structure.md를 검토, Thenapp/cli/Command groups에asset이 포함되고app/api/v1 route surfaces에 admin asset CRUD 엔드포인트가 반영되어 있다.
Impacted Area
- Docs:
docs/data-model.mddocs/interface-contract.mddocs/runtime-flows.mddocs/project-structure.md
- Modules: 없음 (문서 전용)
- Tests: 없음 (문서 검토로 확인)
Notes
- 이 REQ는 REQ-009~014 구현 완료 후 마지막으로 수행한다.
docs/runtime-flows.mdUpdate Triggers: "새 top-level runtime 또는 domain 모듈이 추가되었을 때" — asset CLI 그룹 추가, GET /v1/assets 토큰 분기 재정의 모두 해당.docs/project-structure.mdUpdate Triggers: "새 top-level runtime 또는 domain 모듈이 추가되었을 때" —app/cli/commands/asset.py신규 추가 해당.- Source: dcy-001 In Scope(baseline 문서 갱신)
Change Log
CHG-20260519-02
- Date: 2026-05-19
- Author: Justin Ko
Change Summary
- Status: Proposed → Approved
Intent
- 승인 게이트 통과: 필수 필드(Status/Type/Priority/Owner/Intent/Requirement/AC/Impacted Area/Change Log) 모두 충족, AC 구체성 확인 완료
Acceptance Criteria Delta
- No change
Impacted Area Delta
- No change
Delivery Trace Delta
- Batches:
- none (미정)
- Releases:
- none (미정)
Revalidation Impact
- Reverification Needed: no
- Existing Implementation Invalidated: no
- Status Recommendation: promote-to-approved
- Follow-up Action: batch 계획 편입
CHG-20260519-01
- Date: 2026-05-19
- Author: Justin Ko
Change Summary
- 최초 생성 — dcy-001 confirm-discovery 후 draft-req 실행
Intent
- dcy-001 구현 범위의 baseline 문서 갱신 요구를 Documentation REQ로 분리
Acceptance Criteria Delta
- Added:
- AC-1~4 최초 작성
Impacted Area Delta
- Docs:
- docs/data-model.md, docs/interface-contract.md, docs/runtime-flows.md, docs/project-structure.md — 최초 지정
- Modules:
- 없음
- Tests:
- 없음
Delivery Trace Delta
- Batches:
- none (미정)
- Releases:
- none (미정)
Revalidation Impact
- Reverification Needed: no
- Existing Implementation Invalidated: no
- Status Recommendation: keep-current
- Follow-up Action: REQ-009~014 구현 완료 후 일괄 반영
Validation Plan
- 각 대상 문서를 직접 검토하여 AC-1~4 기술 내용 포함 여부 확인