docs(req-053): GET /v1/admin/daemons 목록 엔드포인트 핫픽스 거버넌스 백필
핫픽스 2dcbafb(목록 조회 405 갭 해소)를 REQ-053에 change-req로 기록. 스코프 갭(GET-list AC 누락) 정정 + AC-13/14 추가, 라이브 통합검증 근거 기재. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
This commit is contained in:
@@ -107,3 +107,36 @@
|
||||
- Date: 2026-06-28
|
||||
- Author: 팀장(Claude)
|
||||
- confirm-req-implemented: `Approved` → `Implemented`. 근거: BAT-022 PR #19 mergeCommit 1b78c18, QC PASS-WITH-NOTES(opus, blocker 0). AC-1~12 전건 테스트 통과(565 passed). owner 재할당 원자화 수정(83e6dde) — 단일 트랜잭션+선삭제 방식으로 기존 BrokerCredential 삭제 후 owner 변경을 원자적으로 처리, leak 방지 테스트 3종 PASS. AC-4/5(owner 재할당+인증정보 무효화), AC-8(DELETE 405 음성), AC-9/10/11(권한 음성) 전건 통과. 잔여 리스크 없음.
|
||||
|
||||
### CHG-20260628-04
|
||||
- Date: 2026-06-28
|
||||
- Author: 팀장(Claude) — change-req (핫픽스 백필 / 스코프 갭 정정)
|
||||
|
||||
#### Change Summary
|
||||
- **GET `/v1/admin/daemons`(전체 데몬 목록) 엔드포인트 누락 갭을 정정**한다. Status `Implemented` 유지(이번 변경으로 스코프 완결).
|
||||
|
||||
#### Intent / 증상·영향·근본원인 (핫픽스 예외 경로)
|
||||
- **증상**: trex-web admin "데몬 관리" 화면이 `adminListDaemons`(REQ-035)로 `GET /v1/admin/daemons` 호출 시 **405 Method Not Allowed** → "데몬 목록을 불러오지 못했습니다" 에러.
|
||||
- **영향**: admin 데몬 목록 열람 불가(생성·변경 자체는 가능하나 목록 미표시). 라이브 통합테스트 전까지 미발견.
|
||||
- **근본원인**: REQ-053 최초 스코프가 POST/PATCH/activate/deactivate(+DELETE 405 음성)만 AC로 잡고 **목록 조회(GET-list)를 AC로 누락**. 목록 수요는 trex-web REQ-035(admin API 클라/훅)에서 발생했으나 백엔드 계약(REQ-053)에 반영되지 않음. mock 기반 UI 단위테스트는 실제 405를 포착하지 못함(실연동 갭).
|
||||
|
||||
#### Acceptance Criteria Delta
|
||||
- Added:
|
||||
- AC-13: Given admin 인증, When `GET /v1/admin/daemons`, Then 전체 데몬 목록(`{daemons:[{id,daemon_slug,display_name,is_active,owner_user_id}], total}`)을 200으로 반환한다.
|
||||
- AC-14: Given 비admin 인증, When `GET /v1/admin/daemons`, Then 403으로 차단된다(admin role 강제 회귀).
|
||||
- Updated: 없음
|
||||
- Removed: 없음
|
||||
|
||||
#### Impacted Area Delta
|
||||
- Modules: `app/api/v1_admin_daemons.py`(GET 핸들러 `list_all_daemons`), `app/schemas/v1.py`(`DaemonDetail`, `DaemonDetailListResponse`), `app/repositories/postgres.py`(`list_daemons_all()`)
|
||||
- Tests: `tests/test_bat022_req053_admin_daemon_crud.py`(GET 목록 케이스 추가)
|
||||
|
||||
#### Delivery Trace Delta
|
||||
- 핫픽스 커밋 `2dcbafb`(로컬 main 직접 커밋 — worktree/PR/QC 정식 게이트 대신 핫픽스 fast-path). 정식 QC 게이트는 생략했고, 대신 **라이브 통합검증(실행 중 portfolio-hub :8000 상대 API E2E 18항목 PASS, GET 목록에 신규 데몬 포함 확인)**으로 검증을 대체했다.
|
||||
|
||||
#### Revalidation Impact
|
||||
- Reverification Needed: no (라이브 E2E로 검증 완료)
|
||||
- Existing Implementation Invalidated: no (순수 추가, 기존 핸들러 무변경)
|
||||
- Status Recommendation: implemented
|
||||
- Rollback: `git revert 2dcbafb`(순수 추가라 안전). 롤백 시 목록 화면만 405로 회귀, 생성/변경 영향 없음.
|
||||
- Follow-up Action: 후속 batch에서 GET 목록 케이스를 정식 회귀 테스트 스위트에 편입. 동종 갭 예방 위해 UI API 클라(REQ-035)와 백엔드 계약(REQ-053) 간 엔드포인트 교차대조 체크리스트화.
|
||||
|
||||
Reference in New Issue
Block a user