{
 "no": 142,
 "version": "2026-10-08.1",
 "id": "RC-142",
 "role": "유튜브 협찬 캠페인 관리",
 "task": "유튜브 채널 협찬 캠페인을 채널 선정부터 성과 정리까지 빠짐없이 관리하고 싶어요",
 "deliverables": [
  "채널 후보 비교표",
  "협찬 기획·제안서 초안",
  "제작·게시 일정표",
  "콘텐츠 검수 체크리스트",
  "성과 모음 보고서"
 ],
 "tier": "processor",
 "tierLabel": "역할 전용 계산(서버 실행)",
 "processorTitle": "채널 CPV·적합도·예산 배분",
 "slots": [
  {
   "key": "d1",
   "name": "채널 지표(검증)",
   "required": true,
   "fields": [
    {
     "header": "채널 ID",
     "type": "id",
     "required": true,
     "rule": "식별자: 비어 있지 않은 값"
    },
    {
     "header": "구독자",
     "type": "number",
     "required": true,
     "rule": "숫자"
    },
    {
     "header": "최근 10개 평균 조회수",
     "type": "number",
     "required": true,
     "rule": "숫자"
    },
    {
     "header": "주제",
     "type": "text",
     "required": true,
     "rule": "글자"
    },
    {
     "header": "시청자 국가·연령",
     "type": "text",
     "required": true,
     "rule": "글자"
    },
    {
     "header": "확인 출처",
     "type": "text",
     "required": true,
     "rule": "글자"
    },
    {
     "header": "확인일",
     "type": "date",
     "required": true,
     "rule": "날짜 YYYY-MM-DD"
    }
   ],
   "primary": "채널 ID",
   "dupPolicy": "block",
   "purpose": "핵심 데이터"
  },
  {
   "key": "d2",
   "name": "캠페인 비용",
   "required": true,
   "fields": [
    {
     "header": "채널 ID",
     "type": "id",
     "required": true,
     "rule": "식별자: 비어 있지 않은 값"
    },
    {
     "header": "견적",
     "type": "money",
     "required": true,
     "rule": "금액: 숫자(쉼표·\"원\" 허용), 통화는 별도 열"
    },
    {
     "header": "통화",
     "type": "text",
     "required": true,
     "rule": "글자"
    },
    {
     "header": "제공물",
     "type": "text",
     "required": true,
     "rule": "글자"
    },
    {
     "header": "계약 조건",
     "type": "text",
     "required": true,
     "rule": "글자"
    }
   ],
   "primary": "채널 ID",
   "dupPolicy": "block",
   "purpose": "보조 데이터(연결하면 관계·근거가 늘어남)"
  },
  {
   "key": "d3",
   "name": "게시·성과 이력",
   "required": false,
   "fields": [
    {
     "header": "채널 ID",
     "type": "id",
     "required": true,
     "rule": "식별자: 비어 있지 않은 값"
    },
    {
     "header": "게시일",
     "type": "date",
     "required": true,
     "rule": "날짜 YYYY-MM-DD"
    },
    {
     "header": "URL",
     "type": "url",
     "required": true,
     "rule": "http(s):// 주소"
    },
    {
     "header": "7일 조회수",
     "type": "number",
     "required": true,
     "rule": "숫자"
    },
    {
     "header": "클릭",
     "type": "number",
     "required": true,
     "rule": "숫자"
    },
    {
     "header": "쿠폰 사용",
     "type": "text",
     "required": true,
     "rule": "글자"
    }
   ],
   "primary": null,
   "dupPolicy": "block",
   "purpose": "보조 데이터(연결하면 관계·근거가 늘어남)"
  },
  {
   "key": "d4",
   "name": "브랜드 기준",
   "required": true,
   "fields": [
    {
     "header": "필수 메시지",
     "type": "text",
     "required": true,
     "rule": "글자"
    },
    {
     "header": "금지 표현",
     "type": "text",
     "required": true,
     "rule": "글자"
    },
    {
     "header": "타깃 주제",
     "type": "text",
     "required": true,
     "rule": "글자"
    },
    {
     "header": "타깃 시청자",
     "type": "text",
     "required": true,
     "rule": "글자"
    },
    {
     "header": "예산",
     "type": "money",
     "required": true,
     "rule": "금액: 숫자(쉼표·\"원\" 허용), 통화는 별도 열"
    }
   ],
   "primary": null,
   "dupPolicy": "block",
   "purpose": "보조 데이터(연결하면 관계·근거가 늘어남)"
  },
  {
   "key": "d5",
   "name": "실집행·귀속 매출(검증)",
   "required": false,
   "fields": [
    {
     "header": "집행 ID",
     "type": "id",
     "required": true,
     "rule": "식별자: 비어 있지 않은 값"
    },
    {
     "header": "채널 ID",
     "type": "id",
     "required": true,
     "soft": true,
     "rule": "식별자: 비어 있지 않은 값"
    },
    {
     "header": "집행일",
     "type": "date",
     "required": true,
     "soft": true,
     "rule": "날짜 YYYY-MM-DD"
    },
    {
     "header": "게시 URL",
     "type": "url",
     "required": true,
     "soft": true,
     "rule": "http(s):// 주소"
    },
    {
     "header": "실집행 비용",
     "type": "money",
     "required": true,
     "soft": true,
     "rule": "금액: 숫자(쉼표·\"원\" 허용), 통화는 별도 열"
    },
    {
     "header": "통화",
     "type": "text",
     "required": true,
     "soft": true,
     "rule": "글자"
    },
    {
     "header": "귀속 총매출",
     "type": "money",
     "required": true,
     "soft": true,
     "rule": "금액: 숫자(쉼표·\"원\" 허용), 통화는 별도 열"
    },
    {
     "header": "귀속 취소·환불 금액",
     "type": "money",
     "required": true,
     "soft": true,
     "rule": "금액: 숫자(쉼표·\"원\" 허용), 통화는 별도 열"
    },
    {
     "header": "귀속 기준",
     "type": "text",
     "required": true,
     "soft": true,
     "rule": "글자"
    },
    {
     "header": "정산일",
     "type": "date",
     "required": true,
     "soft": true,
     "rule": "날짜 YYYY-MM-DD"
    },
    {
     "header": "검증 출처",
     "type": "text",
     "required": true,
     "soft": true,
     "rule": "글자"
    }
   ],
   "primary": "집행 ID",
   "dupPolicy": "warn",
   "purpose": "보조 데이터(연결하면 관계·근거가 늘어남)"
  }
 ],
 "relationships": [
  {
   "from": {
    "slot": "d2",
    "field": "채널 ID"
   },
   "to": {
    "slot": "d1",
    "field": "채널 ID"
   }
  },
  {
   "from": {
    "slot": "d3",
    "field": "채널 ID"
   },
   "to": {
    "slot": "d1",
    "field": "채널 ID"
   }
  },
  {
   "from": {
    "slot": "d5",
    "field": "채널 ID"
   },
   "to": {
    "slot": "d1",
    "field": "채널 ID"
   }
  }
 ],
 "params": [
  {
   "key": "as_of",
   "label": "기준일",
   "type": "date",
   "required": true,
   "description": "경과일·최신성 계산의 기준일(YYYY-MM-DD). 서버가 오늘 날짜를 임의로 쓰지 않습니다."
  },
  {
   "key": "campaign_start",
   "label": "첫 게시 예정일",
   "type": "date",
   "required": true,
   "description": "선정 채널을 이 날부터 간격대로 배치합니다."
  },
  {
   "key": "currency",
   "label": "비교 통화",
   "type": "text",
   "required": false,
   "default": "KRW",
   "description": "다른 통화 견적은 환산하지 않고 제외합니다."
  },
  {
   "key": "max_metric_age_days",
   "label": "지표 최대 경과일",
   "type": "number",
   "required": false,
   "default": 90,
   "description": "확인일이 기준일보다 이 일수 넘게 오래되면 제외"
  },
  {
   "key": "posting_interval_days",
   "label": "게시 간격(일)",
   "type": "number",
   "required": false,
   "default": 7,
   "description": ""
  },
  {
   "key": "weights",
   "label": "점수 가중치",
   "type": "weights",
   "required": false,
   "default": {
    "cpv": 50,
    "fit": 30,
    "history": 20
   },
   "description": "cpv(최저 CPV ÷ CPV)·fit(주제 0.5 + 시청자 0.5)·history(과거 7일 조회수 ÷ 평균 조회수, 최댓값 대비)"
  }
 ],
 "inputs": [
  {
   "key": "campaign",
   "label": "캠페인 목표·제품·예산·기간",
   "required": false
  },
  {
   "key": "channels",
   "label": "채널 후보 정보(사용자가 확인한 수치)",
   "required": false
  },
  {
   "key": "results",
   "label": "진행 상황·성과 자료(있으면)",
   "required": false
  }
 ],
 "checks": {
  "server": [
   "확인 출처·확인일 없는 지표, 기준일 대비 오래된 지표, 다른 통화 견적은 제외(환산 안 함)",
   "CPV = 견적 ÷ 최근 10개 평균 조회수",
   "적합도 = 주제 일치 0.5 + 시청자 일치 0.5, 이력 = 과거 7일 조회수 ÷ 평균 조회수",
   "점수 순으로 예산 안에서 선정, 게시 일정 배치",
   "보고서 표 구조·광고 표시 점검 목록, 제출 결과의 금지 표현 검사",
   "(선택) 실집행·귀속 매출: 순 귀속 매출(취소·환불 한 번만 차감)·순 ROAS·실제 CPV·견적 대비 차이, 귀속 기준이 없거나 섞이면 비교 보류(인과 아님)"
  ],
  "client": [
   "협찬 제안서·브리프 문안",
   "캠페인 결과 보고서 문장"
  ],
  "professional": [
   "계약·발송(사용자)",
   "표시·광고 법 해석(전문가) — 점검 목록은 법적 보장이 아님"
  ]
 },
 "outputs": [
  {
   "key": "channel_plan",
   "label": "채널 후보 비교표(점수 근거)",
   "kind": "table",
   "columns": [
    "채널 ID",
    "선정 여부",
    "근거"
   ],
   "min": 1,
   "evidence": "required",
   "ref": {
    "column": "채널 ID",
    "set": "channel"
   }
  },
  {
   "key": "report",
   "label": "제작·게시 일정과 성과 모음 보고서",
   "kind": "text",
   "evidence": "required"
  }
 ],
 "acceptance": [
  "판단 기준 반영: 조회당 비용",
  "판단 기준 반영: 주제·시청자 적합도",
  "판단 기준 반영: 과거 협찬 성과",
  "판단 기준 반영: 금지 표현 리스크",
  "비교표의 숫자가 입력값과 같은지, 입력에 없는 수치를 지어내지 않았는지 확인",
  "조회 1회당 비용 등 계산값의 식과 결과가 맞는지 확인",
  "유료 광고 표시 항목이 검수 체크리스트에 있는지 확인",
  "모든 결과 항목에 근거 source_id(이 작업의 스냅샷 안) 표시",
  "확인 필요 사항과 다음 행동을 분리"
 ],
 "handoff": {
  "reviewer": "요청자 본인",
  "note": "요청자가 검토·승인합니다. 승인은 사용자의 검토 기록이며 전문가 승인이 아닙니다."
 },
 "followup": [
  {
   "id": "review",
   "label": "후보·예산 배분 검토",
   "owner": "요청자"
  },
  {
   "id": "contact",
   "label": "채널 연락·견적 확정(사용자)",
   "owner": "요청자"
  },
  {
   "id": "disclosure",
   "label": "유료 광고 표시 점검",
   "owner": "요청자"
  },
  {
   "id": "report",
   "label": "게시 후 7일 성과 입력",
   "owner": "요청자"
  }
 ],
 "sampleNotice": "예시 데이터입니다. 실존하는 사람·회사·거래가 아니며 체험과 형식 확인용입니다.",
 "sample_params": {
  "as_of": "2026-10-08",
  "campaign_start": "2026-10-20",
  "currency": "KRW",
  "max_metric_age_days": 90,
  "posting_interval_days": 7,
  "weights": {
   "cpv": 50,
   "fit": 30,
   "history": 20
  }
 }
}
