[
  {
    "case_id": "Q-001",
    "question": "서버 응답에 제목이 아예 안 나오는 상품 페이지를 모아 주세요",
    "kind": "filter",
    "expected_filter": "section = 'product' AND render IN ('CSR','SPA') AND title IS NULL",
    "expected_urls": [
      "https://shop.example.com/p/1002"
    ],
    "note": "렌더 방식과 제목 결측을 함께 봐야 맞는 조건입니다."
  },
  {
    "case_id": "Q-002",
    "question": "노출은 꽤 되는데 클릭이 하나도 없는 페이지를 알려 주세요",
    "kind": "filter",
    "expected_filter": "impressions_30d >= 1000 AND clicks_30d = 0",
    "expected_urls": [
      "https://shop.example.com/p/1006"
    ],
    "note": "'꽤'의 기준은 술어 사전에 1000 으로 못 박아 두어 되묻지 않습니다."
  },
  {
    "case_id": "Q-003",
    "question": "구조화 데이터가 깨졌거나 이름이 비어 있는 페이지를 찾아 주세요",
    "kind": "filter",
    "expected_filter": "structured_data IS INVALID_JSON OR structured_data.name = ''",
    "expected_urls": [
      "https://shop.example.com/p/1003",
      "https://shop.example.com/p/1008"
    ],
    "note": "값 파싱 실패와 빈 속성을 다른 술어로 나눠야 둘 다 걸립니다."
  },
  {
    "case_id": "Q-004",
    "question": "정규 주소가 자기 자신을 가리키지 않는 페이지를 보여 주세요",
    "kind": "filter",
    "expected_filter": "canonical IS NOT NULL AND canonical != url",
    "expected_urls": [
      "https://shop.example.com/p/1004",
      "https://shop.example.com/e/summer"
    ],
    "note": "canonical 이 null 인 행은 충돌이 아니라 결측이라 빠집니다."
  },
  {
    "case_id": "Q-005",
    "question": "메타 설명이 비어 있는 카테고리 페이지가 있나요",
    "kind": "filter",
    "expected_filter": "section = 'category' AND (meta_description IS NULL OR meta_description = '')",
    "expected_urls": [
      "https://shop.example.com/c/bags"
    ],
    "note": "null 과 빈 문자열을 함께 묶어야 합니다."
  },
  {
    "case_id": "Q-006",
    "question": "이번 크롤에서 수치가 아예 안 잡힌 페이지를 뽑아 주세요",
    "kind": "filter",
    "expected_filter": "last_crawled_at IS NULL",
    "expected_urls": [
      "https://shop.example.com/p/1005"
    ],
    "note": "성과가 나쁜 것과 수집이 실패한 것을 섞지 않아야 합니다."
  },
  {
    "case_id": "Q-007",
    "question": "렌더 방식별로 페이지가 몇 개씩인지 세어 주세요",
    "kind": "aggregate",
    "expected_filter": "GROUP BY render SELECT count(*)",
    "expected_urls": [],
    "note": "집계 질문이라 URL 목록 대신 그룹별 건수를 냅니다."
  },
  {
    "case_id": "Q-008",
    "question": "블로그 글의 최근 30일 클릭 합계를 알려 주세요",
    "kind": "aggregate",
    "expected_filter": "section = 'blog' SELECT sum(clicks_30d)",
    "expected_urls": [],
    "note": "null 값은 합계에서 제외하고 제외 건수를 함께 적습니다."
  },
  {
    "case_id": "Q-009",
    "question": "성과가 안 좋은 페이지를 정리해 주세요",
    "kind": "ambiguous",
    "expected_filter": null,
    "expected_urls": [],
    "note": "성과의 기준 컬럼이 지목되지 않아 노출인지 클릭인지 되물어야 합니다."
  },
  {
    "case_id": "Q-010",
    "question": "요즘 문제 있는 페이지를 다 뽑아 주세요",
    "kind": "ambiguous",
    "expected_filter": null,
    "expected_urls": [],
    "note": "기간과 문제의 정의가 모두 비어 있어 되묻기로 떨어져야 합니다."
  },
  {
    "case_id": "Q-011",
    "question": "경쟁사보다 순위가 밀린 페이지를 알려 주세요",
    "kind": "unsupported",
    "expected_filter": null,
    "expected_urls": [],
    "note": "인벤토리에 경쟁사 순위 컬럼이 없으므로 조건을 지어내지 않고 지원 불가로 끝냅니다."
  },
  {
    "case_id": "Q-012",
    "question": "AI 답변에 몇 번 인용됐는지 페이지별로 보여 주세요",
    "kind": "unsupported",
    "expected_filter": null,
    "expected_urls": [],
    "note": "인용 횟수 컬럼이 파일에 없어 지원 불가로 끝내고 필요한 컬럼 이름을 안내합니다."
  }
]