{
  "rulesetVersion": "compliance-v1.1",
  "effectiveDate": "2026-07-12",
  "source": "PLANNING.md v1.2 §7-1 규정 룰셋 / 참가업체·전시주최자 매뉴얼",
  "disclaimer": "본 룰셋은 사전 필터이며 최종 승인은 킨텍스 및 구조기술사의 판단에 따른다.",
  "rules": [
    {
      "code": "HEIGHT_MAX",
      "group": "height",
      "label": "장치물 높이 5m 이하",
      "module": ["M2", "M3"],
      "severity": "block",
      "metric": "booth.height_m",
      "operator": "lte",
      "threshold": 5.0,
      "unit": "m"
    },
    {
      "code": "RIGGING_RANGE",
      "group": "rigging",
      "label": "리깅 천장 6.5~8.5m — 구조계산서 D-7 제출 필요",
      "module": ["M3"],
      "severity": "warn",
      "metric": "rigging.height_m",
      "operator": "between",
      "min": 6.5,
      "max": 8.5,
      "unit": "m",
      "requiresDocument": "STRUCTURAL_CALC_D7"
    },
    {
      "code": "MEZZANINE_RATIO",
      "group": "mezzanine",
      "label": "복층부스 바닥면적 1/2 이내",
      "module": ["M2", "M3"],
      "severity": "block",
      "metric": "mezzanine.area_ratio",
      "operator": "lte",
      "threshold": 0.5
    },
    {
      "code": "FIRE_RETARDANT",
      "group": "fire",
      "label": "전 자재 방염(A급) 필수",
      "module": ["M3"],
      "severity": "block",
      "metric": "materials.all_fire_retardant",
      "operator": "isTrue"
    },
    {
      "code": "FLOOR_LOAD",
      "group": "structure",
      "label": "홀별 바닥하중 초과 금지(홀6 2t/㎡ · 홀7~10 5t/㎡)",
      "module": ["M2"],
      "severity": "block",
      "metric": "booth.floor_load_t_per_m2",
      "operator": "lteHall",
      "hallLimits": { "H6": 2.0, "H7": 5.0, "H8": 5.0, "H9": 5.0, "H10": 5.0, "default": 5.0 },
      "unit": "t/㎡"
    },
    {
      "code": "AISLE_WIDTH_MIN",
      "group": "egress",
      "label": "피난 통로 폭 최소 3m",
      "module": ["M2"],
      "severity": "block",
      "metric": "layout.min_aisle_width_m",
      "operator": "gte",
      "threshold": 3.0,
      "unit": "m",
      "note": "PostGIS ST_Buffer/ST_Distance 기반 서버 산출값과 대조"
    },
    {
      "code": "EXIT_ACCESS",
      "group": "egress",
      "label": "비상구 접근성 확보(부스가 비상구 차단 금지)",
      "module": ["M2"],
      "severity": "block",
      "metric": "layout.exits_blocked_count",
      "operator": "eq",
      "threshold": 0
    },
    {
      "code": "BOOTH_OVERLAP",
      "group": "layout",
      "label": "부스 간 겹침 금지(배치 무결성)",
      "module": ["M2"],
      "severity": "block",
      "metric": "layout.overlap_count",
      "operator": "eq",
      "threshold": 0,
      "note": "PostGIS ST_Intersects AND NOT ST_Touches(내부 교차) 기반 서버 산출값"
    },
    {
      "code": "CLEARANCE_WALL",
      "group": "clearance",
      "label": "인접 벽 이격 30cm 이상",
      "module": ["M2", "M3"],
      "severity": "warn",
      "metric": "booth.clearance_wall_m",
      "operator": "gte",
      "threshold": 0.3,
      "unit": "m"
    },
    {
      "code": "CLEARANCE_CEILING",
      "group": "clearance",
      "label": "천장 이격 60cm 이상",
      "module": ["M3"],
      "severity": "warn",
      "metric": "booth.clearance_ceiling_m",
      "operator": "gte",
      "threshold": 0.6,
      "unit": "m"
    },
    {
      "code": "NOISE_LIMIT",
      "group": "onsite",
      "label": "장내 소음 70~75dB 이하",
      "module": ["M3"],
      "severity": "warn",
      "metric": "onsite.noise_db",
      "operator": "lte",
      "threshold": 75.0,
      "unit": "dB"
    },
    {
      "code": "PROHIBITED_WORK",
      "group": "onsite",
      "label": "장내 금지작업(전기톱·용접·페인트) 미포함",
      "module": ["M3"],
      "severity": "warn",
      "metric": "onsite.prohibited_works",
      "operator": "excludesAll",
      "forbidden": ["chainsaw", "welding", "painting"]
    },
    {
      "code": "LIGHTING_BRING_IN",
      "group": "onsite",
      "label": "조명 반입 금지(지정 조명만 사용)",
      "module": ["M3", "M4"],
      "severity": "warn",
      "metric": "lighting.uses_designated_only",
      "operator": "isTrue"
    }
  ]
}
