3.7 KiB
3.7 KiB
BAT-002 Verification
- Status: release-candidate
- Batch: BAT-002
Acceptance Mapping
-
REQ-010:
- AC-1: admin CLI
pfhub asset create성공 →tests/test_asset_catalog.py::test_asset_cli_create_success✓ - AC-2: admin CLI
pfhub asset list— active/inactive 필터 →tests/test_asset_catalog.py::test_asset_cli_list_returns_all,test_asset_cli_list_active_only_filter✓ - AC-3: admin CLI
pfhub asset update성공 →tests/test_asset_catalog.py::test_asset_cli_update_success✓ - AC-4: admin CLI
pfhub asset deactivate성공 →tests/test_asset_catalog.py::test_asset_cli_deactivate_success✓ - AC-5:
POST /v1/assetsadmin token → 201 AssetResponse →tests/test_asset_catalog.py::test_asset_http_create_returns_201✓ - AC-6:
PATCH /v1/assets/{id}admin token → 200 →tests/test_asset_catalog.py::test_asset_http_update_returns_200✓ - AC-7:
PATCH /v1/assets/{id}/deactivateadmin token → 200 →tests/test_asset_catalog.py::test_asset_http_deactivate_returns_200✓ - AC-8: non-admin으로 admin 엔드포인트 호출 시 403 →
tests/test_asset_catalog.py::test_asset_http_non_admin_403✓
- AC-1: admin CLI
-
REQ-012:
- AC-1: active asset 존재 시 portfolio create 성공 →
tests/test_asset_catalog.py::test_portfolio_create_with_active_asset✓ - AC-2: 미등록 asset_id 지정 시 "asset not found" 오류, 생성 실패 →
tests/test_asset_catalog.py::test_portfolio_create_unknown_asset✓ - AC-3: inactive asset 지정 시 "asset is inactive" 오류, 생성 실패 →
tests/test_asset_catalog.py::test_portfolio_create_inactive_asset✓ - AC-4:
--symbol로 asset_id 조회 후 portfolio create 성공 →tests/test_asset_catalog.py::test_portfolio_create_by_symbol✓
- AC-1: active asset 존재 시 portfolio create 성공 →
-
REQ-013:
- AC-1: service token(daemon_id 있음) → daemon 관리 portfolio 필터링 →
tests/test_v1.py::test_v1_assets_returns_asset_list(assert_called_once_with updated) ✓ - AC-2: service token(daemon_id 없음) → 403 →
tests/test_daemon_assignment.py::test_assets_403_when_token_has_no_daemon_id(기존) ✓ - AC-3: user token → 본인 portfolio만 반환 →
tests/test_v1.py::test_v1_assets_user_token✓ - AC-4: admin token 기본 → admin 본인 portfolio →
tests/test_v1.py::test_v1_assets_admin_token_default✓ - AC-5: admin token + ?user_id → 해당 user portfolio →
tests/test_v1.py::test_v1_assets_admin_token_user_id_param✓ - AC-6: 모든 토큰 + ?market=
→ 필터링 →tests/test_v1.py::test_v1_assets_market_filter✓ - AC-7: 응답 asset_id는 UUID 형식 →
tests/test_v1.py::test_v1_assets_asset_id_is_uuid✓
- AC-1: service token(daemon_id 있음) → daemon 관리 portfolio 필터링 →
-
REQ-015:
- AC-1: docs/data-model.md에 assets 엔티티, portfolios asset_id FK 반영 → 수동 검토 ✓
- AC-2: docs/interface-contract.md에 POST/PATCH /v1/assets, 토큰 분기 명세 포함 → 수동 검토 ✓
- AC-3: docs/runtime-flows.md에 GET /v1/assets 토큰 분기, admin CRUD 흐름 추가 → 수동 검토 ✓
- AC-4: docs/project-structure.md에 pfhub asset 그룹 및 asset.py 모듈 반영 → 수동 검토 ✓
Evidence
- Test:
- pytest 실행 결과: 180 passed, 0 failed (2026-05-19)
- 신규 테스트: test_asset_catalog.py 18개, test_v1.py 5개 추가
- 기존 regression: test_cli.py, test_portfolio_uuid.py, test_v1.py, test_daemon_assignment.py 전체 통과
- Manual:
- 수동 CLI 실행은 live DB 환경에서 별도 검증 필요 (FakeRepo 기반 테스트로 커버)
- HTTP admin 엔드포인트는 MagicMock 기반 테스트로 커버
- Logs:
tests/test_asset_catalog.py — 전체 38개 테스트 통과
tests/test_v1.py — 전체 통과 (기존 + 신규 5개)
Result
- Ready for Release: true
- Blocking Issues: 없음