{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://open-verify-data.github.io/toto-report-data-methodology/schema/report.schema.json",
  "title": "Report",
  "description": "정규화된 개별 제보 레코드. 특정 업체를 사기로 단정하지 않으며, 공개 커뮤니티에서 관측된 제보를 데이터 처리 관점에서 표현한다. 값은 검증되지 않은 작성자 진술이다.",
  "type": "object",
  "additionalProperties": false,
  "required": ["source", "site_domain", "report_type", "reported_at"],
  "properties": {
    "source": {
      "type": "string",
      "description": "제보가 관측된 공개 커뮤니티 식별자(익명화 라벨)",
      "examples": ["community-a", "community-b"]
    },
    "site_domain": {
      "type": "string",
      "description": "정규화된 도메인 키. 소문자화, http(s)/www/m 접두 제거, 추적 파라미터·경로 절단 후 값. 정규화 규칙은 docs/normalization.md 참고.",
      "examples": ["example-site.com"]
    },
    "site_name": {
      "type": "string",
      "description": "게시글에 적힌 상호/사이트명(정규화). 식별 보조용."
    },
    "report_type": {
      "type": "string",
      "enum": ["withdrawal_delay", "withdrawal_refusal", "account_suspension", "bonus_condition", "domain_change", "other"],
      "description": "규칙기반 분류 태그. 사실 판정이 아니라 제보 텍스트의 맥락 분류다."
    },
    "reported_at": {
      "type": "string",
      "format": "date",
      "description": "제보가 관측된 시점(YYYY-MM-DD)"
    },
    "content_excerpt": {
      "type": "string",
      "description": "확인용 짧은 맥락. 원문 전체를 복제하지 않으며 개인정보는 제외한다.",
      "maxLength": 280
    }
  }
}
