[
  {
    "rule_no": "RR-1001",
    "signal_name": "고객사 이름 하드코딩",
    "operator_raw": "PythonOperator",
    "match_kind": "regex",
    "pattern": "(gamecorp|medcenter|fincorp)",
    "blocking": true,
    "owner_name": "솔루션 아키텍트"
  },
  {
    "rule_no": "RR-1002",
    "signal_name": "계정 프로필 지정",
    "operator_raw": "PythonOperator",
    "match_kind": "literal",
    "pattern": "--profile",
    "blocking": true,
    "owner_name": "플랫폼"
  },
  {
    "rule_no": "RR-1003",
    "signal_name": "버킷 경로 고정",
    "operator_raw": "PythonOperator",
    "match_kind": "regex",
    "pattern": "s3://[a-z0-9-]+-prod",
    "blocking": true,
    "owner_name": "플랫폼"
  },
  {
    "rule_no": "RR-1004",
    "signal_name": "고객사 도메인 호출",
    "operator_raw": "HttpOperator",
    "match_kind": "regex",
    "pattern": "https://api\\.[a-z]+\\.co\\.kr",
    "blocking": true,
    "owner_name": "연동 담당"
  },
  {
    "rule_no": "RR-1005",
    "signal_name": "테넌트 식별자",
    "operator_raw": "HttpOperator",
    "match_kind": "literal",
    "pattern": "tenant=",
    "blocking": false,
    "owner_name": "연동 담당"
  },
  {
    "rule_no": "RR-1006",
    "signal_name": "날짜 상수",
    "operator_raw": "PythonOperator",
    "match_kind": "regex",
    "pattern": "20[0-9]{2}-[01][0-9]",
    "blocking": false,
    "owner_name": "데이터 엔지니어"
  },
  {
    "rule_no": "RR-1007",
    "signal_name": "계약 계수 상수",
    "operator_raw": "PythonOperator",
    "match_kind": "regex",
    "pattern": "\\* 1\\.[0-9]{3,}",
    "blocking": false,
    "owner_name": "데이터 엔지니어"
  },
  {
    "rule_no": "RR-1008",
    "signal_name": "인코딩 고정",
    "operator_raw": "PythonOperator",
    "match_kind": "literal",
    "pattern": "encoding='cp949'",
    "blocking": false,
    "owner_name": "데이터 엔지니어"
  },
  {
    "rule_no": "RR-1009",
    "signal_name": "스키마 접두 고정",
    "operator_raw": "PythonOperator",
    "match_kind": "regex",
    "pattern": "FROM (raw|stg)\\.",
    "blocking": false,
    "owner_name": "데이터 엔지니어"
  },
  {
    "rule_no": "RR-1010",
    "signal_name": "실행일 치환자",
    "operator_raw": "PythonOperator",
    "match_kind": "literal",
    "pattern": "{{ ds }}",
    "blocking": false,
    "owner_name": "데이터 엔지니어"
  },
  {
    "rule_no": "RR-1011",
    "signal_name": "수신자 목록 고정",
    "operator_raw": "EmailOperator",
    "match_kind": "literal",
    "pattern": "@",
    "blocking": true,
    "owner_name": "연동 담당"
  },
  {
    "rule_no": "RR-1012",
    "signal_name": "개인정보 열 지목",
    "operator_raw": "PythonOperator",
    "match_kind": "regex",
    "pattern": "(email|phone|ssn)",
    "blocking": false,
    "owner_name": "보안 담당"
  }
]