[
  {
    "req_no": "RQ-001",
    "usecase_id": "churn_predict",
    "usecase_name": "이탈 예측",
    "required_role": "customer_key",
    "min_history_months": 12,
    "max_null_ratio": 0.05,
    "is_optional": false,
    "source_domain": "sales"
  },
  {
    "req_no": "RQ-002",
    "usecase_id": "churn_predict",
    "usecase_name": "이탈 예측",
    "required_role": "event_time",
    "min_history_months": 12,
    "max_null_ratio": 0,
    "is_optional": false,
    "source_domain": "sales"
  },
  {
    "req_no": "RQ-003",
    "usecase_id": "churn_predict",
    "usecase_name": "이탈 예측",
    "required_role": "amount",
    "min_history_months": 12,
    "max_null_ratio": 0.1,
    "is_optional": false,
    "source_domain": "sales"
  },
  {
    "req_no": "RQ-004",
    "usecase_id": "churn_predict",
    "usecase_name": "이탈 예측",
    "required_role": "channel",
    "min_history_months": 12,
    "max_null_ratio": 0.2,
    "is_optional": true,
    "source_domain": "sales"
  },
  {
    "req_no": "RQ-005",
    "usecase_id": "ticket_triage",
    "usecase_name": "문의 자동 분류",
    "required_role": "free_text",
    "min_history_months": 6,
    "max_null_ratio": 0.1,
    "is_optional": false,
    "source_domain": "support"
  },
  {
    "req_no": "RQ-006",
    "usecase_id": "ticket_triage",
    "usecase_name": "문의 자동 분류",
    "required_role": "event_time",
    "min_history_months": 6,
    "max_null_ratio": 0,
    "is_optional": false,
    "source_domain": "support"
  },
  {
    "req_no": "RQ-007",
    "usecase_id": "ticket_triage",
    "usecase_name": "문의 자동 분류",
    "required_role": "customer_key",
    "min_history_months": 24,
    "max_null_ratio": 0,
    "is_optional": false,
    "source_domain": "support"
  },
  {
    "req_no": "RQ-008",
    "usecase_id": "predictive_maint",
    "usecase_name": "설비 예지보전",
    "required_role": "device_key",
    "min_history_months": 12,
    "max_null_ratio": 0,
    "is_optional": false,
    "source_domain": "iot"
  },
  {
    "req_no": "RQ-009",
    "usecase_id": "predictive_maint",
    "usecase_name": "설비 예지보전",
    "required_role": "metric",
    "min_history_months": 12,
    "max_null_ratio": 0.05,
    "is_optional": false,
    "source_domain": "iot"
  },
  {
    "req_no": "RQ-010",
    "usecase_id": "credit_risk",
    "usecase_name": "여신 위험 평가",
    "required_role": "customer_key",
    "min_history_months": 24,
    "max_null_ratio": 0,
    "is_optional": false,
    "source_domain": "finance"
  },
  {
    "req_no": "RQ-011",
    "usecase_id": "credit_risk",
    "usecase_name": "여신 위험 평가",
    "required_role": "amount",
    "min_history_months": 24,
    "max_null_ratio": 0,
    "is_optional": false,
    "source_domain": "finance"
  },
  {
    "req_no": "RQ-012",
    "usecase_id": "credit_risk",
    "usecase_name": "여신 위험 평가",
    "required_role": "collateral_value",
    "min_history_months": 24,
    "max_null_ratio": 0,
    "is_optional": false,
    "source_domain": "finance"
  },
  {
    "req_no": "RQ-013",
    "usecase_id": "demand_forecast",
    "usecase_name": "수요 예측",
    "required_role": "item_key",
    "min_history_months": 36,
    "max_null_ratio": 0,
    "is_optional": false,
    "source_domain": "sales"
  },
  {
    "req_no": "RQ-014",
    "usecase_id": "demand_forecast",
    "usecase_name": "수요 예측",
    "required_role": "channel",
    "min_history_months": 36,
    "max_null_ratio": null,
    "is_optional": true,
    "source_domain": "sales"
  },
  {
    "req_no": "RQ-015",
    "usecase_id": "demand_forecast",
    "usecase_name": "수요 예측",
    "required_role": "promo_flag",
    "min_history_months": 36,
    "max_null_ratio": 0,
    "is_optional": true,
    "source_domain": "sales"
  }
]