{
  "workflow_id": "inquiry-reply-draft",
  "version": "1.0.0",
  "tier": "free_sample",
  "title": "問い合わせ返信を、送信せずに下書きする",
  "purpose": "匿名化した問い合わせと承認済み事実だけから、確認可能な返信案を作る。",
  "input_contract": {
    "required_fields": [
      "execution_id",
      "sanitized_request",
      "approved_facts",
      "response_goal",
      "tone",
      "prohibited_commitments"
    ],
    "forbidden_data": [
      "氏名、メール、電話番号、住所、顧客ID、注文番号",
      "パスワード、APIキー、OTP、復旧コード",
      "医療、法律、税務、金融、人事に関する個別判断",
      "未公開契約、決済情報、顧客機密"
    ]
  },
  "preflight": [
    {"id": "P1", "check": "入力が匿名化され、受領禁止データを含まない", "on_fail": "rejected_inputで終了"},
    {"id": "P2", "check": "返信目的と承認済み事実が空でない", "on_fail": "不足項目をunknownsへ列挙して終了"},
    {"id": "P3", "check": "自動送信、法的判断、返金判断を要求していない", "on_fail": "human_review_requiredで停止"}
  ],
  "ai_task": {
    "role": "承認済み事実だけを使う返信下書き担当",
    "instructions": [
      "問い合わせを要望、質問、要確認のいずれかに分類する",
      "approved_factsにない事実、期限、価格、返金、成果を補わない",
      "不明点は質問文に変えずunknownsへ残す",
      "送信せず、宛名と署名を含まない下書きだけを返す",
      "expected_outputに一致するJSONだけを返す"
    ],
    "prohibited": [
      "入力外の制度・製品知識による補完",
      "送信済みまたは対応完了という表現",
      "禁止された期限、返金、例外対応の約束"
    ]
  },
  "verification_checks": [
    {"id": "V1", "description": "下書き中の事実がapproved_factsに対応する"},
    {"id": "V2", "description": "不明点を推測せずunknownsに残した"},
    {"id": "V3", "description": "prohibited_commitmentsと自動送信表現を含まない"},
    {"id": "V4", "description": "宛名、署名、個人識別子を出力していない"}
  ],
  "rollback": {
    "triggers": ["verificationにfailがある", "入力外の事実がある", "個人・機密情報が見つかる"],
    "actions": [
      "外部送信されていないことを確認する",
      "生成した下書きを採用対象から外す",
      "原文が変更されていないことを確認する",
      "失敗check IDだけを記録し、新しいexecution_idでやり直す"
    ]
  },
  "expected_output": {
    "allowed_statuses": ["draft_ready", "human_review_required", "rejected_input"],
    "required_fields": ["workflow_id", "execution_id", "status", "result", "unknowns", "verification", "next_action"]
  }
}
