4.2 KiB
4.2 KiB
BAT-002 Implementation
- Status: verified
- Batch: BAT-002
Plan Summary
- 이번 구현에서 실제 변경할 범위:
app/schemas/v1.py— AssetCatalogCreateRequest, AssetCatalogUpdateRequest, AssetCatalogResponse 추가app/api/v1_assets.py— admin 엔드포인트 3개 추가(REQ-010) + list_assets 토큰 분기 재작성(REQ-013)app/cli/commands/asset.py(신규) — pfhub asset create/list/update/deactivateapp/cli/main.py— asset_app 등록app/services/portfolio_service.py— create_portfolio catalog 검증 추가(REQ-012)app/cli/commands/portfolio.py— create --symbol 옵션 추가(REQ-012)app/repositories/portfolio_repository.py— list_portfolios/list_portfolios_with_strategies market 파라미터 추가app/repositories/postgres.py— list_portfolios market 필터, list_portfolios_with_strategies market 파라미터 추가docs/4종 갱신(REQ-015)- 테스트 파일 갱신 및 신규
Changed Files
app/schemas/v1.py— AssetCatalogCreateRequest, AssetCatalogUpdateRequest, AssetCatalogResponse 추가app/api/v1_assets.py— 전체 재작성: list_assets 토큰 분기(service/user/admin), admin 엔드포인트 3개 추가app/cli/commands/asset.py(신규) — pfhub asset create/list/update/deactivate typer 커맨드app/cli/main.py— asset_app 등록app/services/portfolio_service.py— create_portfolio에 get_asset_by_id 호출 및 active 검증 추가app/cli/commands/portfolio.py— create 커맨드에 --symbol 옵션 추가app/repositories/portfolio_repository.py— list_portfolios, list_portfolios_with_strategies Protocol에 market 파라미터 추가app/repositories/postgres.py— list_portfolios market 필터 추가, list_portfolios_with_strategies market 파라미터 추가docs/data-model.md— Asset 엔티티 추가, Portfolio asset_id FK 반영docs/interface-contract.md— POST/PATCH /v1/assets 신규, GET /v1/assets 토큰 분기 명세 갱신docs/runtime-flows.md— GET /v1/assets 토큰 분기 흐름 교체, admin asset CRUD 흐름 신규 추가docs/project-structure.md— pfhub asset 커맨드 그룹, 신규 api 모듈 반영tests/test_asset_catalog.py— REQ-010/012/013 AC 테스트 추가 (18개 신규)tests/test_v1.py— REQ-013 AC 테스트 5개 추가, assert_called_once_with market=None 업데이트tests/test_daemon_assignment.py— assert_called_once_with market=None 업데이트tests/test_cli.py— FakeRepo.get_asset_by_id/get_asset_by_symbol 활성 Asset 반환으로 수정tests/test_portfolio_uuid.py— FakeRepo.get_asset_by_id/get_asset_by_symbol 활성 Asset 반환으로 수정
Execution Log
- app/schemas/v1.py — AssetCatalogCreateRequest, AssetCatalogUpdateRequest, AssetCatalogResponse 추가
- app/cli/commands/asset.py — 신규 파일 생성 (pfhub asset create/list/update/deactivate)
- app/cli/main.py — asset_app import 및 add_typer 등록
- app/api/v1_assets.py — list_assets 토큰 분기 재작성 + admin 엔드포인트 3개 추가
- app/repositories/portfolio_repository.py — Protocol market 파라미터 추가
- app/repositories/postgres.py — list_portfolios market 필터, list_portfolios_with_strategies market 파라미터 추가
- app/services/portfolio_service.py — create_portfolio catalog 검증 (get_asset_by_id → active 확인)
- app/cli/commands/portfolio.py — create --symbol 옵션 추가 (symbol → asset_id 조회 경로)
- tests/ — FakeRepo 업데이트 (active asset 반환), test_v1.py/test_daemon_assignment.py assert 업데이트
- tests/test_asset_catalog.py — REQ-010/012/013 신규 테스트 추가
- docs/ — data-model.md, interface-contract.md, runtime-flows.md, project-structure.md 갱신
Validation
- pytest 전체 실행: 180 passed, 0 failed
- lint/typecheck: 별도 실행 미수행 (테스트 통과로 대체)
Remaining Risks
- admin 엔드포인트 route 순서:
/assets/{asset_id}/deactivate가/assets/{asset_id}앞에 등록되어야 FastAPI가 올바르게 라우팅함 — 현재 구현에서 순서 보장됨 - DB 통합 테스트 (market filter SQL
ANY(a.markets))는 live PostgreSQL에서만 검증 가능