캠페인 상태 안내
캠페인의 각 상태와 의미를 안내드립니다.
상태 목록
| 상태 | 코드 | 의미 |
|---|---|---|
| 🟠 광고주 대기 | PENDING_ADVERTISER | (현재 미사용 · 예약값) — 광고주 생성 캠페인도 바로 PENDING으로 진입 |
| 🟡 대기 | PENDING | 생성 직후 기본 상태, 파트너/어드민 확정 대기 |
| 🟢 확정 | CONFIRMED | 캠페인 확정, 진행 예정 |
| 🔵 진행 중 | IN_PROGRESS | 콘텐츠 제작/업로드 기간 |
| ✅ 업로드 완료 | UPLOADED | 콘텐츠 업로드됨, 정산 대기 |
| 💰 완료 | COMPLETED | 정산까지 모두 완료 |
| ⛔ 거절 | REJECTED | 파트너가 거절 |
| 🔴 취소 | CANCELLED | 캠페인 취소 |
상태별 상세
🟠 광고주 대기 (PENDING_ADVERTISER)
현재 미사용 상태입니다. enum에는 존재하지만, 광고주가 캠페인을 생성해도 곧바로 PENDING으로 진입합니다(§19.3 생성 시 기본 status = PENDING). 향후 광고주 사전검토 플로우용으로 예약된 값입니다.
🟡 대기 (PENDING)
생성 직후 기본 상태로, 파트너/어드민의 확정을 기다립니다. (광고주·파트너·어드민이 생성한 캠페인 모두 여기서 시작)
| 사용자 | 가능한 액션 |
|---|---|
| 광고주 | 취소(삭제), 수정 (PENDING 상태에서만, advertiser campaign.routes PUT/DELETE) |
| 파트너 | 확정 (→ CONFIRMED), 거절 (→ REJECTED) |
| 어드민 | 상태 변경, 수정 |
🟢 확정 (CONFIRMED)
캠페인이 확정되어 진행이 예정된 상태입니다.
| 사용자 | 가능한 액션 |
|---|---|
| 광고주 | 조회만 |
| 파트너 | 진행 시작 (→ IN_PROGRESS), 취소 (→ CANCELLED) |
| 어드민 | 상태 변경, 수정 |
확정 시 광고주에게 알림이 발송되고, 담당자 연락처가 공개됩니다.
🔵 진행 중 (IN_PROGRESS)
콘텐츠 제작/업로드 기간입니다.
| 사용자 | 가능한 액션 |
|---|---|
| 광고주 | 조회만 |
| 파트너 | 업로드 완료 (→ UPLOADED), 취소 (→ CANCELLED) |
| 어드민 | 상태 변경 |
진행 중 상태에서는 캠페인 수정이 불가능합니다.
✅ 업로드 완료 (UPLOADED)
콘텐츠가 업로드되어 정산을 대기하는 상태입니다.
자동 처리:
- 📋 정산 레코드 생성
- 🎫 슬롯 반환
| 사용자 | 가능한 액션 |
|---|---|
| 광고주 | 조회, 결제 (청구서 발행 후) |
| 파트너 | 정산 요청 |
| 어드민 | 정산 처리 |
업로드 완료 이후에는 취소할 수 없습니다. 정산이 진행되어야 합니다.
💰 완료 (COMPLETED)
정산까지 모두 완료된 상태입니다.
| 사용자 | 가능한 액션 |
|---|---|
| 광고주 | 조회만 |
| 파트너 | 조회만 |
| 어드민 | 조회만 |
완료된 캠페인은 수정하거나 취소할 수 없습니다.
⛔ 거절 (REJECTED)
파트너가 캠페인을 거절한 상태입니다.
자동 처리:
- 🎫 슬롯 반환
거절된 캠페인은 다시 진행할 수 없습니다. 새로운 캠페인을 등록해야 합니다.
🔴 취소 (CANCELLED)
캠페인이 취소된 상태입니다.
자동 처리:
- 🎫 슬롯 반환
취소된 캠페인은 복구할 수 없습니다.
상태 전이 규칙
(PENDING_ADVERTISER, 미사용)
┊
PENDING ──┬──→ CONFIRMED ──→ IN_PROGRESS ──→ UPLOADED ──→ COMPLETED
│ │ │
│ ▼ ▼
│ CANCELLED CANCELLED
│
└──→ REJECTED정산이
SETTLEMENT_COMPLETED가 되면 캠페인이 같은 트랜잭션으로COMPLETED로 전이됩니다(파트너는 COMPLETED로 직접 변경 불가). 종료 상태(COMPLETED/CANCELLED/REJECTED)에서 역방향 전이는 불가합니다.
전이 가능 목록
| 현재 상태 | 변경 가능 상태 |
|---|---|
| PENDING_ADVERTISER | (미사용) |
| PENDING | CONFIRMED, REJECTED, CANCELLED |
| CONFIRMED | IN_PROGRESS, CANCELLED |
| IN_PROGRESS | UPLOADED, CANCELLED |
| UPLOADED | COMPLETED |
| COMPLETED | (변경 불가) |
| REJECTED | (변경 불가) |
| CANCELLED | (변경 불가) |
사용자별 권한 요약
광고주
| 액션 | 가능한 상태 |
|---|---|
| 취소(삭제) | PENDING |
| 수정 | PENDING |
| 결제 | UPLOADED (청구서 발행 후) |
그 외 상태에서는 조회만 가능
슬롯 처리
| 시점 | 슬롯 변화 |
|---|---|
| 캠페인 생성 | +1 (예약) |
| → UPLOADED | -1 (반환) |
| → COMPLETED | -1 (반환) |
| → CANCELLED | -1 (반환) |
| → REJECTED | -1 (반환) |
슬롯 반환은 최초 1회만 발생합니다.
예: UPLOADED에서 이미 반환되었으면 COMPLETED가 되어도 다시 반환되지 않습니다.
슬롯 카운트 +1(예약)과 가용성 체크는 파트너·광고주·어드민 생성 모두 적용됩니다. 어드민 생성도 코드상 checkSlotAvailability + incrementSlotCampaignCount를 수행하므로 슬롯이 마감된 날짜에는 생성이 차단됩니다. 상태 전이 시 슬롯 -1(반환)도 파트너/어드민 공통(최초 1회)입니다.