Glowb Dev Docs
SaaS API캠페인 제공 옵션 (V4)

캠페인 제공 옵션 개요

가이드라인 V4 의 "캠페인 제공 제품 옵션" 기능 — 광고주가 정의하고 크리에이터가 선택하는 RDB 단일 진실 데이터.

캠페인 제공 옵션 (V4)

광고주가 가이드라인 V4 작성 마지막 단계에서 입력하는 "크리에이터가 선택해야 할 제품 옵션" (예: 색상 / 사이즈 / 향) 을 다룬다.

[광고주 — 가이드라인 작성]
   옵션 그룹 N개 정의 ("색상" / "사이즈" …)
     └ 그룹 당 선택지 N개 ("아이보리" / "그레이" …)
   → PUT /ai/guideline/v4/{collabNo} body 에 providedOptions 동봉
   → 백엔드가 RDB 와 diff sync (PROPOSAL 신청자 있으면 거부)

[크리에이터 — PROPOSAL 상태]
   GET /ai/influence/campaigns/applications 응답의
     applications[].providedOptions 에 [정의 + 본인 선택 여부] 동봉
   → PUT /ai/application/{applicationId}/provided-options 로 선택 저장

[광고주 / 관리자 — 대시보드]
   기존 대시보드 응답 row 의 selectedOptions 필드에 신청자별 선택값 동봉

데이터 모델

3 테이블 — Mongo 가이드라인 도큐먼트에는 저장하지 않는다. RDB 단일 진실.

TB_CAMPAIGN_PROVIDED_OPTION
  id, collab_no, title, selection_type (SINGLE|MULTI), sort_order, deleted_at, ...

TB_CAMPAIGN_PROVIDED_OPTION_CHOICE
  id, option_id (FK), value, sort_order, deleted_at, ...

TB_APPLICATION_PROVIDED_OPTION_SELECTION
  id, application_id (FK), choice_id (FK), selected_at
  UNIQUE (application_id, choice_id)

핵심 규칙

  • 저장 트리거: 가이드라인 V4 저장(임시저장 / DRAFT / COMPLETED) 모든 경로에서 body 의 providedOptions 를 RDB 와 diff sync. body 에 키가 없으면 sync 스킵.
  • Sync 동작: 입력에 새로 등장한 옵션/choice → insert. 기존 → title/value/sort 만 갱신. 입력에서 빠진 row → soft delete (FK 잡고 있는 선택 row 가 있을 수 있어 hard delete 안 함).
  • Lock: 캠페인에 selectionStatus == PROPOSAL 신청자 1건이라도 있으면 sync 전체 거부 (PROVIDED_OPTION_LOCKED).
  • 크리에이터 선택 시점: selectionStatus == PROPOSAL 에서만 PUT 허용. 그 외 상태에서 호출 → PROVIDED_OPTION_INVALID_STATE.
  • SINGLE 그룹: 그룹당 1개 선택만 허용 (서비스 레이어 검증). MULTI 는 그룹당 N개 허용.
  • 확장성: selection_type 으로 SINGLE/MULTI 양쪽 모두 지원. 향후 min_count / max_count 같은 컬럼 추가만으로 수량 옵션 등 확장 가능.

옵션 정의는 광고주가 직접 입력하는 데이터다. Python AI 응답에서 파싱하지 않는다. (addon-fee sync 와 다른 점)

엔드포인트 요약

MethodPath역할
GET/ai/campaign/{collabNo}/provided-options옵션 정의 조회 (광고주/관리자/크리에이터 공통)
PUT/ai/application/{applicationId}/provided-options크리에이터 옵션 선택 저장 (PROPOSAL only)

크리에이터 본인 선택값은 별도 엔드포인트 없이 GET /ai/influence/campaigns/applications 응답의 applications[].providedOptions 에 정의 + 본인 선택 여부가 같이 내려온다.

광고주/관리자 대시보드도 별도 엔드포인트 없이 기존 dashboard 응답 row 의 selectedOptions 필드로 내려온다.

On this page