{
 "no": 89,
 "version": "2026-10-08.1",
 "id": "RC-089",
 "role": "해지 방어 담당",
 "task": "해지하려는 고객을 붙잡고 싶어요",
 "deliverables": [
  "사유별 제안",
  "상담 멘트"
 ],
 "tier": "checked_packet",
 "tierLabel": "데이터 점검 + 근거 묶음(작성은 연결한 AI)",
 "processorTitle": null,
 "slots": [
  {
   "key": "d1",
   "name": "해지 요청",
   "required": true,
   "fields": [
    {
     "header": "요청 ID",
     "type": "id",
     "required": true,
     "rule": "식별자: 비어 있지 않은 값"
    },
    {
     "header": "사유",
     "type": "text",
     "required": false,
     "rule": "글자"
    },
    {
     "header": "이용 기간",
     "type": "text",
     "required": false,
     "rule": "글자"
    },
    {
     "header": "요금제",
     "type": "text",
     "required": false,
     "rule": "글자"
    }
   ],
   "primary": "요청 ID",
   "dupPolicy": "block",
   "purpose": "핵심 데이터"
  },
  {
   "key": "d2",
   "name": "혜택 정책",
   "required": false,
   "fields": [
    {
     "header": "조건",
     "type": "text",
     "required": true,
     "rule": "글자"
    },
    {
     "header": "혜택",
     "type": "text",
     "required": false,
     "rule": "글자"
    },
    {
     "header": "한도",
     "type": "money",
     "required": true,
     "rule": "금액: 숫자(쉼표·\"원\" 허용), 통화는 별도 열"
    }
   ],
   "primary": null,
   "dupPolicy": "block",
   "purpose": "보조 데이터(연결하면 관계·근거가 늘어남)"
  }
 ],
 "relationships": [],
 "params": [
  {
   "key": "as_of",
   "label": "기준일",
   "type": "date",
   "required": true,
   "description": "최신성·미래 날짜 점검의 기준일(YYYY-MM-DD). 서버가 오늘 날짜를 임의로 쓰지 않습니다."
  }
 ],
 "inputs": [
  {
   "key": "situation",
   "label": "상황 설명",
   "required": true
  },
  {
   "key": "conditions",
   "label": "원하는 조건",
   "required": false
  }
 ],
 "checks": {
  "server": [
   "필수 열 연결 여부(열 1개를 여러 항목에 겹쳐 쓸 수 없음)",
   "값 형식: 날짜·일시·금액·숫자·백분율·예/아니오·허용 값·URL",
   "빈 값·기본 키 중복",
   "데이터셋 사이 ID 관계(연결 안 되는 값)",
   "기준일 이후 날짜·1년 넘은 확인일",
   "숫자 열 합계·최소·최대, 날짜 범위(기초 집계)"
  ],
  "client": [
   "사유별 제안 작성(근거 source_id 인용)",
   "상담 멘트 작성(근거 source_id 인용)",
   "해지 사유를 가격, 시간, 효과 불만 등으로 나누고 사유별 고객 심리를 정리합니다",
   "허용된 혜택 목록을 사유에 맞게 짝지어 1순위·2순위 제안을 정합니다"
  ],
  "professional": [
   "외부 발송·제출·계약(사용자)"
  ]
 },
 "outputs": [
  {
   "key": "o1",
   "label": "사유별 제안",
   "kind": "text",
   "evidence": "when_data"
  },
  {
   "key": "o2",
   "label": "상담 멘트",
   "kind": "text",
   "evidence": "when_data"
  }
 ],
 "acceptance": [
  "판단 기준 반영: 사유-혜택 매칭",
  "판단 기준 반영: 정책 한도",
  "제안 혜택이 사용자가 준 상한(할인율, 기간) 안에 있는지 확인합니다",
  "같은 고객에게 제안을 두 번 넘게 반복하지 않도록 설계했는지 봅니다",
  "해지 의사를 밝힌 고객에게 해지 방법을 숨기거나 늦추는 문장이 없는지 점검합니다",
  "모든 결과 항목에 근거 source_id(이 작업의 스냅샷 안) 표시",
  "확인 필요 사항과 다음 행동을 분리"
 ],
 "handoff": {
  "reviewer": "요청자 본인",
  "note": "요청자가 검토·승인합니다. 승인은 사용자의 검토 기록이며 전문가 승인이 아닙니다."
 },
 "followup": [
  {
   "id": "review",
   "label": "결과 검토",
   "owner": "요청자"
  },
  {
   "id": "gaps",
   "label": "확인 필요 사항 해결",
   "owner": "요청자"
  },
  {
   "id": "act",
   "label": "후속 실행(사용자가 직접)",
   "owner": "요청자"
  }
 ],
 "sampleNotice": "예시 데이터입니다. 실존하는 사람·회사·거래가 아니며 체험과 형식 확인용입니다.",
 "sample_params": {
  "as_of": "2026-10-08"
 }
}
