{
 "no": 47,
 "version": "2026-10-08.1",
 "id": "RC-047",
 "role": "공동구매 제안관리 담당",
 "task": "인플루언서 공동구매를 하고 싶어요",
 "deliverables": [
  "인플루언서 매칭",
  "맞춤 제안문",
  "협상 대응",
  "진행 관리"
 ],
 "tier": "processor",
 "tierLabel": "역할 전용 계산(서버 실행)",
 "processorTitle": "공동구매 후보 적합도·수익 비교",
 "slots": [
  {
   "key": "d1",
   "name": "인플루언서 계정",
   "required": true,
   "fields": [
    {
     "header": "계정 ID",
     "type": "id",
     "required": true,
     "rule": "식별자: 비어 있지 않은 값"
    },
    {
     "header": "플랫폼",
     "type": "text",
     "required": true,
     "rule": "글자"
    },
    {
     "header": "카테고리",
     "type": "text",
     "required": true,
     "rule": "글자"
    },
    {
     "header": "팔로워",
     "type": "number",
     "required": true,
     "rule": "숫자"
    },
    {
     "header": "평균 반응률",
     "type": "percent",
     "required": true,
     "rule": "백분율 숫자(예: 15 또는 15%)"
    },
    {
     "header": "연락 동의 여부",
     "type": "bool",
     "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": "text",
     "required": true,
     "rule": "글자"
    },
    {
     "header": "기간",
     "type": "text",
     "required": true,
     "rule": "글자"
    },
    {
     "header": "판매 수량",
     "type": "number",
     "required": true,
     "rule": "숫자"
    },
    {
     "header": "매출",
     "type": "money",
     "required": true,
     "rule": "금액: 숫자(쉼표·\"원\" 허용), 통화는 별도 열"
    },
    {
     "header": "검증 출처",
     "type": "text",
     "required": true,
     "rule": "글자"
    }
   ],
   "primary": null,
   "dupPolicy": "block",
   "purpose": "보조 데이터(연결하면 관계·근거가 늘어남)"
  },
  {
   "key": "d3",
   "name": "수수료·조건",
   "required": true,
   "fields": [
    {
     "header": "계정 ID",
     "type": "id",
     "required": true,
     "rule": "식별자: 비어 있지 않은 값"
    },
    {
     "header": "수수료율",
     "type": "percent",
     "required": true,
     "rule": "백분율 숫자(예: 15 또는 15%)"
    },
    {
     "header": "최소 보장",
     "type": "money",
     "required": true,
     "rule": "금액: 숫자(쉼표·\"원\" 허용), 통화는 별도 열"
    },
    {
     "header": "가능 일정",
     "type": "text",
     "required": true,
     "rule": "글자"
    }
   ],
   "primary": "계정 ID",
   "dupPolicy": "block",
   "purpose": "보조 데이터(연결하면 관계·근거가 늘어남)"
  },
  {
   "key": "d4",
   "name": "상품·마진",
   "required": true,
   "fields": [
    {
     "header": "상품",
     "type": "text",
     "required": true,
     "rule": "글자"
    },
    {
     "header": "판매가",
     "type": "money",
     "required": true,
     "rule": "금액: 숫자(쉼표·\"원\" 허용), 통화는 별도 열"
    },
    {
     "header": "원가",
     "type": "money",
     "required": true,
     "rule": "금액: 숫자(쉼표·\"원\" 허용), 통화는 별도 열"
    },
    {
     "header": "목표 마진",
     "type": "percent",
     "required": true,
     "rule": "백분율 숫자(예: 15 또는 15%)"
    },
    {
     "header": "재고",
     "type": "number",
     "required": true,
     "rule": "숫자"
    },
    {
     "header": "출시 일정",
     "type": "text",
     "required": true,
     "rule": "글자"
    }
   ],
   "primary": "상품",
   "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": "text",
     "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": "number",
     "required": true,
     "soft": true,
     "rule": "숫자"
    },
    {
     "header": "결제 금액",
     "type": "money",
     "required": true,
     "soft": true,
     "rule": "금액: 숫자(쉼표·\"원\" 허용), 통화는 별도 열"
    },
    {
     "header": "통화",
     "type": "text",
     "required": true,
     "soft": true,
     "rule": "글자"
    },
    {
     "header": "주문 상태",
     "type": "enum",
     "required": true,
     "values": [
      "결제완료",
      "전체취소"
     ],
     "soft": true,
     "rule": "허용 값 중 하나: 결제완료, 전체취소"
    },
    {
     "header": "검증 출처",
     "type": "text",
     "required": true,
     "soft": true,
     "rule": "글자"
    }
   ],
   "primary": "주문 ID",
   "dupPolicy": "warn",
   "purpose": "보조 데이터(연결하면 관계·근거가 늘어남)"
  },
  {
   "key": "d6",
   "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": "환불 수량",
     "type": "number",
     "required": true,
     "soft": true,
     "rule": "숫자"
    },
    {
     "header": "환불 금액",
     "type": "money",
     "required": true,
     "soft": true,
     "rule": "금액: 숫자(쉼표·\"원\" 허용), 통화는 별도 열"
    },
    {
     "header": "통화",
     "type": "text",
     "required": true,
     "soft": true,
     "rule": "글자"
    },
    {
     "header": "구분",
     "type": "enum",
     "required": true,
     "values": [
      "부분 반품",
      "전체 환불"
     ],
     "soft": true,
     "rule": "허용 값 중 하나: 부분 반품, 전체 환불"
    },
    {
     "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"
   }
  },
  {
   "from": {
    "slot": "d6",
    "field": "주문 ID"
   },
   "to": {
    "slot": "d5",
    "field": "주문 ID"
   }
  }
 ],
 "params": [
  {
   "key": "product",
   "label": "상품",
   "type": "text",
   "required": true,
   "description": "상품·마진 데이터의 상품명과 정확히 같아야 합니다."
  },
  {
   "key": "category",
   "label": "카테고리",
   "type": "text",
   "required": true,
   "description": "후보 계정의 카테고리가 이 값과 같아야 합니다."
  },
  {
   "key": "campaign_start",
   "label": "공구 시작일",
   "type": "date",
   "required": true,
   "description": "가능 일정이 이 기간을 모두 포함해야 합니다."
  },
  {
   "key": "campaign_end",
   "label": "공구 종료일",
   "type": "date",
   "required": true,
   "description": ""
  },
  {
   "key": "min_followers",
   "label": "최소 팔로워",
   "type": "number",
   "required": false,
   "default": 0,
   "description": ""
  },
  {
   "key": "weights",
   "label": "점수 가중치",
   "type": "weights",
   "required": false,
   "default": {
    "sales": 50,
    "margin": 30,
    "engagement": 20
   },
   "description": "sales(예상 판매 수량)·margin(수수료 반영 마진)·engagement(평균 반응률). 각 값 ÷ 후보 중 최댓값 × 가중치"
  },
  {
   "key": "settlement_as_of",
   "label": "정산 기준일(선택)",
   "type": "date",
   "required": false,
   "description": "공구 주문·환불 원장을 연결했을 때만 사용. 이 날 이후 주문·환불은 실현 성과에서 제외"
  },
  {
   "key": "currency",
   "label": "비교 통화",
   "type": "text",
   "required": false,
   "default": "KRW",
   "description": "주문·환불 통화가 다르면 환산하지 않고 제외"
  },
  {
   "key": "returned_stock",
   "label": "반품 재고 회수(선택)",
   "type": "text",
   "required": false,
   "default": "미확인",
   "description": "회수·미회수·미확인. 반품이 있는데 미확인이면 기여 마진을 확정하지 않음"
  }
 ],
 "inputs": [
  {
   "key": "situation",
   "label": "상황 설명",
   "required": false
  },
  {
   "key": "material",
   "label": "붙여넣을 자료",
   "required": false
  },
  {
   "key": "conditions",
   "label": "원하는 조건",
   "required": false
  }
 ],
 "checks": {
  "server": [
   "연락 동의(예+동의 일자)·카테고리·검증 출처 있는 판매 실적·수수료 조건·가능 일정·최소 팔로워 충족 여부(탈락 사유 공개)",
   "예상 판매 수량 = 검증 실적 평균(내림), 지급 예상액 = max(매출×수수료율, 최소 보장)",
   "브랜드 이익 = 예상 매출 − 수량×원가 − 지급 예상액, 수수료 반영 마진 ≥ 목표 마진",
   "재고 대비 예상 수량 확인",
   "점수 = Σ(값 ÷ 후보 최댓값 × 가중치), 구성 요소 공개",
   "(선택) 검증 주문·환불 원장: 총매출·취소·환불·순매출·기여 마진을 분리 계산, 취소 주문의 환불은 이중 차감하지 않음, 출처·통화·금액·날짜·중복 문제가 있으면 관련된 모든 묶음 계산 보류, 반품 재고 회수 여부가 미확인이거나 최소 보장 배분이 불명확하면 기여 마진 확정 안 함"
  ],
  "client": [
   "후보별 제안서·협상 대응 문안(근거 source_id 인용)"
  ],
  "professional": [
   "계약 조건 확정·연락·발송(사용자)",
   "표시·광고 관련 법 해석(전문가)"
  ]
 },
 "outputs": [
  {
   "key": "shortlist",
   "label": "적합도 순 후보표(점수 근거 열)",
   "kind": "table",
   "columns": [
    "계정 ID",
    "제안 조건",
    "선정 이유"
   ],
   "min": 1,
   "evidence": "required",
   "ref": {
    "column": "계정 ID",
    "set": "eligible"
   }
  },
  {
   "key": "proposal",
   "label": "후보별 맞춤 제안 조건·협상 대응",
   "kind": "text",
   "evidence": "required"
  }
 ],
 "acceptance": [
  "판단 기준 반영: 검증된 과거 판매 실적",
  "판단 기준 반영: 카테고리 일치",
  "판단 기준 반영: 수수료 반영 후 브랜드 마진 충족",
  "판단 기준 반영: 일정 가능 여부",
  "판단 기준 반영: 연락 동의 있는 계정만",
  "후보는 실제 계정명이 아닌 유형으로 제시하고 실제 섭외 대상은 사용자가 확인합니다.",
  "협상 수용 범위는 사용자가 정한 마진 하한선 안에서만 제시합니다.",
  "제안문에 광고 표기 의무 안내가 포함됐는지 확인합니다.",
  "모든 결과 항목에 근거 source_id(이 작업의 스냅샷 안) 표시",
  "확인 필요 사항과 다음 행동을 분리"
 ],
 "handoff": {
  "reviewer": "요청자 본인",
  "note": "요청자가 검토·승인합니다. 승인은 사용자의 검토 기록이며 전문가 승인이 아닙니다."
 },
 "followup": [
  {
   "id": "review",
   "label": "후보표 검토",
   "owner": "요청자"
  },
  {
   "id": "contact",
   "label": "동의한 채널로 사용자가 직접 연락",
   "owner": "요청자"
  },
  {
   "id": "terms",
   "label": "조건 합의",
   "owner": "요청자"
  },
  {
   "id": "contract",
   "label": "계약(사용자)",
   "owner": "요청자"
  },
  {
   "id": "result",
   "label": "판매 결과 기록",
   "owner": "요청자"
  }
 ],
 "sampleNotice": "예시 데이터입니다. 실존하는 사람·회사·거래가 아니며 체험과 형식 확인용입니다.",
 "sample_params": {
  "product": "예시 수분 크림",
  "category": "뷰티",
  "campaign_start": "2026-11-10",
  "campaign_end": "2026-11-20",
  "min_followers": 0,
  "weights": {
   "sales": 50,
   "margin": 30,
   "engagement": 20
  },
  "settlement_as_of": "2026-11-30",
  "currency": "KRW",
  "returned_stock": "회수"
 }
}
