Files
portfolio-hub/docs/batches/bat-019_20260627_assets-read-permission-and-daemon-list/implementation.md
T
genichinandClaude Sonnet 4.6 c5288a8c42 feat(bat-019): REQ-044 GET /v1/assets require_read + REQ-045 GET /v1/daemons caller-scope
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
2026-06-27 10:36:04 +09:00

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_read import 추가, 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_router import 및 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

  1. app/api/v1_assets.py: require_read import, list_catalog_assets Depends 교체
  2. app/schemas/v1.py: DaemonResponse, DaemonListResponse 스키마 추가 (파일 말미)
  3. app/api/v1_daemons.py: 신규 작성 (GET /v1/daemons, user_id=None → 빈 목록 200)
  4. app/main.py: v1_daemons_router import + include_router
  5. tests/test_v1.py: 영향받는 5개 테스트 업데이트
  6. tests/test_asset_catalog.py: 영향받는 2개 테스트 → 3개로 교체
  7. tests/test_v1_daemons.py: 신규 생성 (13개 테스트)
  8. pytest 전체 실행 → 결과 verification.md에 기록

Validation

  • pytest 전체 실행 결과: verification.md 참조

Remaining Risks

  • list_daemons_for_user는 DB 라이브 테스트 없이 mock으로만 검증됨 (DB 통합 테스트는 비활성화 환경 밖에서 필요)