{
  "type": "object",
  "properties": {
    "entities": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "entity_type": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "description": "시각적 외형 상세 설명 (보통명사 기반의 일반 기본 외형만)"
          },
          "visual_traits": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "핵심 시각적 특징 3~5개 (일반 기본 외형만)"
          },
          "distinctive_visual_traits": {
            "type": "array",
            "description": "본문이 그 요소에 대해 직접 묘사한 distinctive(특이) 외형 후보. source_quote 가 있어도 그것이 문자적 신체색/형태/표식 진술인지(literal_visual) 시적·인상적 비유인지(metaphorical_impression) interpretation_kind 로 분류한다. 본문 근거가 없으면 빈 배열.",
            "items": {
              "type": "object",
              "properties": {
                "trait": {
                  "type": "string",
                  "description": "특이 외형 자체 (예: 'red eyes', 'a small mark on the wrist')"
                },
                "source_quote": {
                  "type": "string",
                  "description": "본문에서 그 요소의 이 특징을 직접 묘사한 부분을 그대로 인용. 본문 직접 근거가 없으면 이 항목을 만들지 않는다."
                },
                "attribution_note": {
                  "type": "string",
                  "description": "본문이 그 요소를 다른 이름/표현으로 가리킨 경우, 이 인용이 왜 이 요소에 해당하는지 연결 근거. 동일 명칭이면 빈 문자열."
                },
                "trait_type": {
                  "type": "string",
                  "description": "특징 종류 (예: eye_color, hair_color, skin, glow, scar, tattoo, marking, other)"
                },
                "interpretation_kind": {
                  "type": "string",
                  "enum": [
                    "literal_visual",
                    "metaphorical_impression",
                    "ambiguous"
                  ],
                  "description": "source_quote 해석: literal_visual=신체 부위의 색/형태/표식을 평이하게 사실로 진술('붉은 눈','흰 머리','손목 표식'). metaphorical_impression=색·질감이 빛·움직임·정서를 빗댄 시적/인상적 이미지. ambiguous=불분명. literal_visual 만 이미지 렌더용 특질로 채택된다."
                },
                "interpretation_reason": {
                  "type": "string",
                  "description": "왜 그 interpretation_kind 로 판단했는지 짧은 근거(특히 metaphorical/ambiguous 일 때 '근거 있는데 왜 빠졌나' 추적용)."
                }
              },
              "required": [
                "trait",
                "source_quote",
                "attribution_note",
                "trait_type",
                "interpretation_kind",
                "interpretation_reason"
              ],
              "additionalProperties": false
            }
          },
          "entity_id": {
            "type": "string",
            "description": "요소 줄 맨 앞 대괄호 안의 표식을 그대로. 없으면 빈 문자열."
          },
          "build_scale": {
            "type": "array",
            "description": "이 인물의 **크기(키·덩치)를 다른 것과 견준** 기록. 절대 수치가 아니라 비교다. 본문·기획서에 근거가 없으면 **빈 배열** — 지어내지 않는다. 사람 형상이 아닌 인물(로봇·기계·동물 등)에서 특히 중요하다.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "compared_to": {
                  "type": "string",
                  "description": "무엇과 견주는가 — 이 이야기의 보통 성인, 같은 장면의 다른 인물, 곁에 있는 사물 중 **본문이 실제로 견준 것**"
                },
                "relation": {
                  "type": "string",
                  "description": "견준 결과 한 줄. 수치가 아니라 사람이 그려 볼 수 있는 말로 (예: '머리 하나만큼 작다', '어깨가 두 배로 넓다', '앉은키가 문설주에 닿는다')"
                },
                "source_quote": {
                  "type": "string",
                  "description": "본문·기획서에서 그 크기를 말한 부분을 **그대로 인용**. 직접 근거가 없으면 이 항목을 만들지 않는다."
                }
              },
              "required": [
                "compared_to",
                "relation",
                "source_quote"
              ]
            }
          }
        },
        "required": [
          "name",
          "entity_type",
          "description",
          "visual_traits",
          "distinctive_visual_traits",
          "entity_id",
          "build_scale"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "entities"
  ],
  "additionalProperties": false
}