docs(gift): 관리자 선물함 조회 요구사항을 기록한다

This commit is contained in:
2026-09-30 18:41:01 +09:00
parent 22c6cd2d38
commit afe92829dc
@@ -246,6 +246,7 @@ INSPECTION_COMPLETED -> UNDELIVERABLE
| `GIFT-011` | 확정 | 팬/크리에이터 대상 푸시를 상태별로 분리 발송한다 | 각 상태 전이에서 지정된 수신자에게만 지정 문구와 딥링크가 발송된다 | `P7` | | `GIFT-011` | 확정 | 팬/크리에이터 대상 푸시를 상태별로 분리 발송한다 | 각 상태 전이에서 지정된 수신자에게만 지정 문구와 딥링크가 발송된다 | `P7` |
| `GIFT-012` | 확정 | 관리자는 카테고리를 등록/수정/논리삭제할 수 있다 | 삭제는 `isActive=false`만 수행한다 | `P1` | | `GIFT-012` | 확정 | 관리자는 카테고리를 등록/수정/논리삭제할 수 있다 | 삭제는 `isActive=false`만 수행한다 | `P1` |
| `GIFT-013` | 확정 | 관리자는 사이즈별 가격을 수정할 수 있다 | 새 신청에는 변경 가격이 적용되고 기존 신청 스냅샷은 바뀌지 않는다 | `P1` | | `GIFT-013` | 확정 | 관리자는 사이즈별 가격을 수정할 수 있다 | 새 신청에는 변경 가격이 적용되고 기존 신청 스냅샷은 바뀌지 않는다 | `P1` |
| `GIFT-015` | 확정 | 관리자는 전체 선물함 목록과 상세를 조회하고 현재 상태에서 가능한 운영 액션을 확인할 수 있다 | 목록은 상태/신청번호/닉네임 검색과 페이징을 지원하고, 상세는 발송인/수취인 개인정보와 상품/배송/상태 정보를 내려준다 | `P10` |
## 8. API 계약 ## 8. API 계약
@@ -715,7 +716,105 @@ Response:
`salePriceCan`은 0보다 커야 하고 `basePriceCan`보다 클 수 없다. `salePriceCan`은 0보다 커야 하고 `basePriceCan`보다 클 수 없다.
### 8.13 운영 상태변경 API ### 8.13 관리자 선물함 조회 API
관리자 페이지는 전체 선물함을 목록과 상세로 조회한다. 상태 변경은 `8.14 운영 상태변경 API`의 기존 전용 endpoint를 사용한다.
#### 8.13.1 관리자 선물함 목록 조회
`GET /api/v2/admin/gifts?status=TRACKING_REGISTERED&applicationNo=A-100&nickname=fan&page=0&size=20`
Query:
| 이름 | 필수 | 설명 |
|---|---|---|
| `status` | 아니오 | 선물 상태. 지정하면 해당 상태만 조회 |
| `applicationNo` | 아니오 | 신청번호 부분 검색 |
| `nickname` | 아니오 | 발송인 또는 수취인 닉네임 부분 검색 |
| `page` | 아니오 | 0 기반 page index. 기본값 `0` |
| `size` | 아니오 | page size. 기본값 `20` |
필터는 AND로 조합한다. `nickname`은 발송인 닉네임 또는 수취인 닉네임 중 하나에 포함되면 매칭한다.
Response:
```json
{
"totalCount": 1,
"items": [
{
"applicationNo": "A-1002609300001",
"senderNickname": "팬닉네임",
"recipientNickname": "크리에이터닉네임",
"sizeCode": "SMALL",
"sizeName": "소형",
"categoryName": "인형",
"classificationNumber": "100",
"courierCompanyName": "CJ대한통운",
"trackingNumber": "1234567890",
"status": "TRACKING_REGISTERED",
"statusName": "발송 확인",
"availableActions": ["ARRIVE_MAILBOX", "MARK_UNDELIVERABLE"]
}
],
"page": 0,
"size": 20,
"hasNext": false
}
```
#### 8.13.2 관리자 선물 상세 조회
`GET /api/v2/admin/gifts/{applicationNo}`
Response:
```json
{
"applicationNo": "A-1002609300001",
"senderInfo": {
"nickname": "팬닉네임",
"name": "홍길동",
"phoneNumber": "01012345678",
"address": "(06234) 서울시 강남구 ..., 101동 1001호"
},
"recipientInfo": {
"nickname": "크리에이터닉네임",
"name": "김소다",
"phoneNumber": "01098765432",
"address": "(04524) 서울시 중구 ..., 202호"
},
"productInfo": {
"sizeCode": "SMALL",
"sizeName": "소형",
"categoryName": "인형",
"classificationNumber": "100"
},
"inboundDeliveryInfo": {
"courierCompanyName": "CJ대한통운",
"trackingNumber": "1234567890"
},
"status": "TRACKING_REGISTERED",
"statusName": "발송 확인",
"availableActions": ["ARRIVE_MAILBOX", "MARK_UNDELIVERABLE"]
}
```
크리에이터가 배송지를 아직 입력하지 않은 경우에도 `recipientInfo.nickname`은 내려주고, `recipientInfo.name`, `recipientInfo.phoneNumber`, `recipientInfo.address`는 빈 문자열 `""`로 내려준다.
`availableActions`는 현재 상태별로 다음 값만 내려준다.
| 현재 상태 | availableActions |
|---|---|
| `RECEIVED` | `[]` |
| `TRACKING_REGISTERED` | `["ARRIVE_MAILBOX", "MARK_UNDELIVERABLE"]` |
| `ARRIVED_AT_MAILBOX` | `["COMPLETE_INSPECTION", "MARK_UNDELIVERABLE"]` |
| `INSPECTION_COMPLETED` | `["COMPLETE_DELIVERY", "MARK_UNDELIVERABLE"]` |
| `DELIVERED` | `[]` |
| `UNDELIVERABLE` | `[]` |
| `CANCELED` | `[]` |
### 8.14 운영 상태변경 API
| Method | Path | 이전 상태 | 변경 상태 | 필수 입력 | | Method | Path | 이전 상태 | 변경 상태 | 필수 입력 |
|---|---|---|---|---| |---|---|---|---|---|
@@ -732,7 +831,7 @@ Response:
} }
``` ```
### 8.14 자동 스케줄링 작업 ### 8.15 자동 스케줄링 작업
| 작업 | 대상 | 처리 | 푸시 | | 작업 | 대상 | 처리 | 푸시 |
|---|---|---|---| |---|---|---|---|