diff --git a/docs/srs/Interface/req-053_admin-daemon-crud-api.md b/docs/srs/Interface/req-053_admin-daemon-crud-api.md index ed68865..725e573 100644 --- a/docs/srs/Interface/req-053_admin-daemon-crud-api.md +++ b/docs/srs/Interface/req-053_admin-daemon-crud-api.md @@ -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) 간 엔드포인트 교차대조 체크리스트화.