캠페인 라이프사이클
캠페인 상태 전이
Section titled “캠페인 상태 전이”캠페인(Collab)은 campaignSubStep 필드로 현재 단계를 관리합니다.
레거시 vs SaaS 구조
Section titled “레거시 vs SaaS 구조”캠페인 도메인은 레거시와 SaaS 두 가지 구조가 공존합니다. Collab.isLegacy 필드로 구분됩니다.
| 구분 | 레거시 | SaaS (현재) |
|---|---|---|
| 핵심 엔티티 | ProgressTable | CampaignApplication |
| 컨트롤러 | ProgressTableController (/ai/progress-table) | InfluenceSaasController (/ai/influence) + CollabController (/ai/collab) |
| 지원 관리 | ProgressTable에 직접 크리에이터 정보 저장 | CampaignApplication → ApplicationContract, ApplicationMatching, ApplicationDelivery |
| 상태 추적 | matchingStatus, deliveryStatus 등 단일 레코드 | selectionStatus, phase, subStep 으로 세분화 |
| 계약 | 없음 | ApplicationContract (전자 계약서, 서명, PDF) |
| 단가 협상 | bidPrice 필드 하나 | PriceNegotiation 이력 관리 (1:N) |
| 배송 | trackingNumber 필드 | ApplicationDelivery (별도 엔티티, 상태 머신) |
| 검수 | aiCheck, personCheck 필드 | phase 기반 (FIRST_REVIEW → SECOND_REVIEW) + 검수 타입(firstReviewTypes, secondReviewTypes) |
단계별 상세 흐름
Section titled “단계별 상세 흐름”1. 캠페인 등록 (CAMPAIGN_REGISTER)
Section titled “1. 캠페인 등록 (CAMPAIGN_REGISTER)”비즈니스가 새 캠페인을 생성합니다.
| 항목 | 설명 |
|---|---|
| 주체 | 비즈니스 (ROLE_BUSINESS) |
| 입력 | 캠페인 기본 정보, 상품 정보, 모집 조건 |
| 저장 | TB_COLLAB 레코드 생성 |
| 다음 조건 | 결제 완료 |
2. 캠페인 결제 → 가이드라인 (CAMPAIGN_GUIDELINE)
Section titled “2. 캠페인 결제 → 가이드라인 (CAMPAIGN_GUIDELINE)”크레딧 차감 또는 CandyPay 결제 후 가이드라인 작성 단계로 진입합니다.
- 크레딧 결제:
CandyPaymentService.payCollabWithCredit()→Business.remainCredit차감 - CandyPay 결제:
CandyPaymentService.confirmCollabPayment()→ 외부 API 호출 →CampaignPayment생성
3. 크리에이터 모집 (CREATOR_RECRUIT)
Section titled “3. 크리에이터 모집 (CREATOR_RECRUIT)”크리에이터가 캠페인에 지원합니다.
컨트롤러: InfluenceSaasController (POST /ai/influence/campaign/application)
- 크리에이터가 캠페인 상세 페이지에서 지원
CampaignApplication레코드 생성 (sourceType = SELF_APPLIED)selectionStatus = WAITING으로 초기화- AI 매칭 시
ApplicationMatching생성 (코사인 유사도 점수, 추천 사유) - 관리자 추가 시
sourceType = ADMIN_ADDED
지원 시 생성되는 데이터:
CampaignApplication: 지원 기본 정보ApplicationMatching: AI 매칭 점수 (선택적)ApplicationContract: 계약서 (DRAFT 상태)
컨트롤러: ProgressTableController (POST /ai/progress-table/items/admin)
- 관리자 또는 시스템이
ProgressTable레코드 직접 생성 matchingStatus = WAITING으로 초기화- 크리에이터 정보(creator, creatorTel, creatorLink)를 ProgressTable에 직접 저장
4. 크리에이터 선발 (CREATOR_SELECT)
Section titled “4. 크리에이터 선발 (CREATOR_SELECT)”비즈니스가 지원자 중 크리에이터를 선발합니다.
CampaignApplication.selectionStatus 상태 전이:
선발 시 ApplicationContract 발송 → 크리에이터 계약서 서명 → phase = APPLICATION_CONTRACT
ProgressTable.matchingStatus 상태 전이:
5. 콘텐츠 제작 및 검수 (CONTENT_CREATE → CONTENT_SUBMIT)
Section titled “5. 콘텐츠 제작 및 검수 (CONTENT_CREATE → CONTENT_SUBMIT)”크리에이터가 콘텐츠를 제작하고, AI 및 담당자가 검수합니다.
컨트롤러: InfluenceSaasController (POST /ai/influence/campaigns/applications/{applicationId}/content)
캠페인의 firstReviewTypes, secondReviewTypes 설정에 따라 검수 단계가 결정됩니다.
검수 처리: ProgressTableController (PUT /ai/progress-table/reviews/bulk)
- 1차/2차 검수 승인 또는 반려를 벌크로 처리
컨트롤러: ProgressTableController
주요 필드:
| 필드 | 설명 | 값 |
|---|---|---|
ProgressTable.aiCheck | AI 리뷰 결과 | GOOD, REJECT2, WAITING |
ProgressTable.personCheck | 담당자 수동 확인 | COMPLETE, WAITING |
ProgressTable.uploadStatus | 업로드 상태 | CREATING, VERIFYING, RECREATING |
6. 배송 관리
Section titled “6. 배송 관리”컨트롤러: ProgressTableController
PUT /ai/progress-table/application/delivery/tracking— 운송장 번호 저장PUT /ai/progress-table/application/delivery/status/bulk— 배송 상태 벌크 변경
ApplicationDelivery.deliveryStatus 상태:
| 상태 | 설명 |
|---|---|
| BEFORE_DELIVERY | 배송 전 |
| SHIPPING | 배송 중 |
| DELIVERED | 배송 완료 |
ProgressTable 내 deliveryStatus, trackingNumber 필드로 직접 관리
7. 정산 (SETTLEMENT)
Section titled “7. 정산 (SETTLEMENT)”캠페인 완료 후 크리에이터에게 대금을 지급합니다.
settlementReady플래그로 정산 준비 여부 관리SettlementExportService: Google Sheets 내보내기SettlementMailScheduler: 정산 메일 자동 발송
컨트롤러 매핑 요약
Section titled “컨트롤러 매핑 요약”| 기능 | SaaS 컨트롤러 | 레거시 컨트롤러 |
|---|---|---|
| 캠페인 생성/조회 | CollabController (/ai/collab) | CollabController (동일) |
| 크리에이터 지원 | InfluenceSaasController (/ai/influence/campaign/application) | CollabController (/ai/collab/application/insert) |
| 크리에이터 선발/매칭 | ProgressTableController (벌크 상태 변경) | ProgressTableController (동일) |
| 콘텐츠 업로드 | InfluenceSaasController (/ai/influence/campaigns/applications/{id}/content) | - |
| 검수 (1차/2차) | ProgressTableController (/ai/progress-table/reviews/bulk) | ProgressTableController (aiCheck, personCheck) |
| 계약서 관리 | InfluenceSaasController (계약 열람/서명) | 없음 |
| 단가 협상 | InfluenceSaasController (/ai/influence/price-negotiations/{id}/respond) | 없음 |
| 배송 관리 | ProgressTableController (ApplicationDelivery 기반) | ProgressTableController (ProgressTable 필드) |
| 마이페이지 | InfluenceSaasController (/ai/influence/mypage) | - |