REQ-044: list_catalog_assets 의존성을 require_admin → require_read로 완화. asset 쓰기(POST/PATCH/DELETE)는 require_admin 유지. REQ-045: GET /v1/daemons 신규 엔드포인트 — caller 소유 데몬만 반환(require_read). user_id=None(env 토큰)은 빈 목록 200. DaemonResponse/DaemonListResponse 스키마 추가. 기존 테스트(test_v1.py, test_asset_catalog.py, test_daemon_assignment.py, test_tags_master.py) REQ-044 권한 완화에 맞게 업데이트. test_v1_daemons.py 신규 추가(13 케이스). pytest 472 passed, 0 failed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2.0 KiB
2.0 KiB
BAT-019 Implementation
- Status: completed
- Batch: BAT-019
Plan Summary
- REQ-044:
app/api/v1_assets.py의list_catalog_assets의존성을require_admin→require_read로 교체. - REQ-045:
app/schemas/v1.py에DaemonResponse/DaemonListResponse추가,app/api/v1_daemons.py신규 생성,app/main.py에 라우터 등록. - 테스트:
tests/test_v1.py기존 403 기대 케이스 업데이트,tests/test_asset_catalog.py기존 403 기대 케이스 업데이트,tests/test_v1_daemons.py신규 생성.
Changed Files
app/api/v1_assets.py:require_readimport 추가,list_catalog_assets의존성 교체 (require_admin → require_read)app/api/v1_daemons.py: 신규 생성 — GET /v1/daemons 라우터app/schemas/v1.py:DaemonResponse,DaemonListResponse스키마 추가app/main.py:v1_daemons_routerimport 및include_router추가tests/test_v1.py: 5개 테스트 업데이트 (403→200 기대치 변경, 일부 내용/이름 변경)tests/test_asset_catalog.py: 2개 테스트 삭제 후 3개로 교체 (REQ-044 반영 + 무토큰 401 추가)tests/test_v1_daemons.py: 신규 생성 — REQ-045 AC 전체 + REQ-044 회귀 커버
Execution Log
app/api/v1_assets.py:require_readimport,list_catalog_assetsDepends 교체app/schemas/v1.py: DaemonResponse, DaemonListResponse 스키마 추가 (파일 말미)app/api/v1_daemons.py: 신규 작성 (GET /v1/daemons, user_id=None → 빈 목록 200)app/main.py: v1_daemons_router import + include_routertests/test_v1.py: 영향받는 5개 테스트 업데이트tests/test_asset_catalog.py: 영향받는 2개 테스트 → 3개로 교체tests/test_v1_daemons.py: 신규 생성 (13개 테스트)- pytest 전체 실행 → 결과 verification.md에 기록
Validation
- pytest 전체 실행 결과: verification.md 참조
Remaining Risks
list_daemons_for_user는 DB 라이브 테스트 없이 mock으로만 검증됨 (DB 통합 테스트는 비활성화 환경 밖에서 필요)