{
 "no": 1,
 "version": "2026-10-08.1",
 "id": "RC-001",
 "role": "미수금 회수 담당",
 "task": "거래처가 대금을 안 줘요",
 "deliverables": [
  "독촉 문구",
  "내용증명",
  "지급명령 신청서 초안",
  "회수 일정"
 ],
 "tier": "processor",
 "tierLabel": "역할 전용 계산(서버 실행)",
 "processorTitle": "미수금 회수 우선순위 계산",
 "slots": [
  {
   "key": "d1",
   "name": "채권 대장",
   "required": true,
   "fields": [
    {
     "header": "청구서번호",
     "type": "id",
     "required": true,
     "rule": "식별자: 비어 있지 않은 값"
    },
    {
     "header": "거래처",
     "type": "text",
     "required": true,
     "rule": "글자"
    },
    {
     "header": "청구금액",
     "type": "money",
     "required": true,
     "rule": "금액: 숫자(쉼표·\"원\" 허용), 통화는 별도 열"
    },
    {
     "header": "발행일",
     "type": "date",
     "required": true,
     "rule": "날짜 YYYY-MM-DD"
    },
    {
     "header": "지급기한",
     "type": "date",
     "required": true,
     "rule": "날짜 YYYY-MM-DD"
    },
    {
     "header": "분쟁 여부",
     "type": "bool",
     "required": true,
     "rule": "예/아니오"
    }
   ],
   "primary": "청구서번호",
   "dupPolicy": "block",
   "purpose": "핵심 데이터"
  },
  {
   "key": "d2",
   "name": "입금 내역",
   "required": true,
   "fields": [
    {
     "header": "입금 ID",
     "type": "id",
     "required": true,
     "rule": "식별자: 비어 있지 않은 값"
    },
    {
     "header": "청구서번호",
     "type": "id",
     "required": true,
     "rule": "식별자: 비어 있지 않은 값"
    },
    {
     "header": "입금액",
     "type": "money",
     "required": true,
     "rule": "금액: 숫자(쉼표·\"원\" 허용), 통화는 별도 열"
    },
    {
     "header": "입금일",
     "type": "date",
     "required": true,
     "rule": "날짜 YYYY-MM-DD"
    }
   ],
   "primary": "입금 ID",
   "dupPolicy": "warn",
   "purpose": "보조 데이터(연결하면 관계·근거가 늘어남)"
  },
  {
   "key": "d3",
   "name": "증빙 목록",
   "required": false,
   "fields": [
    {
     "header": "청구서번호",
     "type": "id",
     "required": true,
     "rule": "식별자: 비어 있지 않은 값"
    },
    {
     "header": "증빙 종류",
     "type": "enum",
     "required": true,
     "values": [
      "계약서",
      "세금계산서",
      "납품확인"
     ],
     "rule": "허용 값 중 하나: 계약서, 세금계산서, 납품확인"
    },
    {
     "header": "보관 위치",
     "type": "text",
     "required": true,
     "rule": "글자"
    },
    {
     "header": "상대방 확인 여부",
     "type": "bool",
     "required": true,
     "rule": "예/아니오"
    }
   ],
   "primary": null,
   "dupPolicy": "block",
   "purpose": "보조 데이터(연결하면 관계·근거가 늘어남)"
  },
  {
   "key": "d4",
   "name": "연락 이력",
   "required": false,
   "fields": [
    {
     "header": "청구서번호",
     "type": "id",
     "required": true,
     "rule": "식별자: 비어 있지 않은 값"
    },
    {
     "header": "일자",
     "type": "date",
     "required": true,
     "rule": "날짜 YYYY-MM-DD"
    },
    {
     "header": "채널",
     "type": "text",
     "required": true,
     "rule": "글자"
    },
    {
     "header": "내용 요약",
     "type": "text",
     "required": true,
     "rule": "글자"
    },
    {
     "header": "약속한 지급일",
     "type": "date",
     "required": true,
     "rule": "날짜 YYYY-MM-DD"
    }
   ],
   "primary": null,
   "dupPolicy": "block",
   "purpose": "보조 데이터(연결하면 관계·근거가 늘어남)"
  }
 ],
 "relationships": [
  {
   "from": {
    "slot": "d2",
    "field": "청구서번호"
   },
   "to": {
    "slot": "d1",
    "field": "청구서번호"
   }
  },
  {
   "from": {
    "slot": "d3",
    "field": "청구서번호"
   },
   "to": {
    "slot": "d1",
    "field": "청구서번호"
   }
  },
  {
   "from": {
    "slot": "d4",
    "field": "청구서번호"
   },
   "to": {
    "slot": "d1",
    "field": "청구서번호"
   }
  }
 ],
 "params": [
  {
   "key": "as_of",
   "label": "기준일",
   "type": "date",
   "required": true,
   "description": "경과일·최신성 계산의 기준일(YYYY-MM-DD). 서버가 오늘 날짜를 임의로 쓰지 않습니다."
  }
 ],
 "inputs": [
  {
   "key": "situation",
   "label": "상황 설명",
   "required": false
  },
  {
   "key": "material",
   "label": "붙여넣을 자료",
   "required": false
  },
  {
   "key": "conditions",
   "label": "원하는 조건",
   "required": false
  }
 ],
 "checks": {
  "server": [
   "청구서번호로 대장·입금·증빙·연락 이력 연결",
   "미수금 = 청구금액 − 반영 입금액(기준일 이후 입금·충돌·고아 입금 제외)",
   "기준일 기준 경과일과 구간(기한 전·1–30·31–60·61–90·90일 초과)",
   "중복·충돌 입금, 과입금, 증빙 3종 누락·상대방 미확인, 약속 지급일 위반 횟수 표시",
   "분쟁 건은 예측하지 않고 별도 목록",
   "점수 = 구간 + 금액 + 약속 위반 + 증빙 완결(구성 요소 공개)",
   "거래 기록 타임라인·지급 약속 이행 여부·다음 조치 제안일·리마인드 메일 초안·변호사 인계 묶음 정리(예약·발송 없음)"
  ],
  "client": [
   "단계별 독촉 문구·내용증명 초안(근거 source_id 인용)",
   "거래처별 연락 계획"
  ],
  "professional": [
   "소멸시효·지연이자·법적 절차 판단(변호사)",
   "실제 발송(사용자)"
  ]
 },
 "outputs": [
  {
   "key": "priority_table",
   "label": "거래처별 회수 우선순위 표(근거 열 포함)",
   "kind": "table",
   "columns": [
    "청구서번호",
    "제안 조치",
    "근거 요약"
   ],
   "min": 1,
   "evidence": "required",
   "ref": {
    "column": "청구서번호",
    "set": "invoice"
   }
  },
  {
   "key": "demand_drafts",
   "label": "단계별 독촉·내용증명 초안과 첨부 증빙 목록",
   "kind": "text",
   "evidence": "required"
  }
 ],
 "acceptance": [
  "판단 기준 반영: 지급기한 경과일 구간(30·60·90일+)",
  "판단 기준 반영: 증빙 3종 완결 여부",
  "판단 기준 반영: 분쟁 표시·약속 지급일 위반 횟수",
  "판단 기준 반영: 금액 규모",
  "채권 금액·발행일·약속일이 증빙끼리 일치하는지 확인하고 어긋나면 진행을 멈추고 사용자에게 질문",
  "소멸시효 기산점과 만료 시점은 [소멸시효 기한: 변호사 확인 필요]로 표시하고 임의로 계산하지 않음",
  "거래 관계 유지 여부에 따라 문구 강도를 조절하고, 협박·명예훼손으로 읽힐 표현은 제외",
  "모든 결과 항목에 근거 source_id(이 작업의 스냅샷 안) 표시",
  "확인 필요 사항과 다음 행동을 분리"
 ],
 "handoff": {
  "reviewer": "변호사",
  "note": "변호사 검토 전까지 초안입니다. Recrua와 AI는 전문가 승인을 하지 않습니다."
 },
 "followup": [
  {
   "id": "review",
   "label": "우선순위 표 검토",
   "owner": "요청자"
  },
  {
   "id": "proof",
   "label": "부족 증빙 보완",
   "owner": "요청자"
  },
  {
   "id": "contact",
   "label": "1순위 거래처 연락(사용자가 직접)",
   "owner": "요청자"
  },
  {
   "id": "promise",
   "label": "지급 약속일 다음 날 입금 확인",
   "owner": "요청자"
  },
  {
   "id": "legal",
   "label": "90일 초과 건 변호사 상담 여부 결정",
   "owner": "요청자"
  }
 ],
 "sampleNotice": "예시 데이터입니다. 실존하는 사람·회사·거래가 아니며 체험과 형식 확인용입니다.",
 "sample_params": {
  "as_of": "2026-10-08"
 }
}
