{
  "meta": {
    "package_version": "dramart_package.v3",
    "content_policy_version": "dramart_package_scope.v1",
    "project_title": "sample_novel",
    "source_screenplay_path": "03d_screenplay.json",
    "source_entity_registry_path": "02e_entity_registry.json",
    "source_visual_cards_path": "02f_entity_visual_cards.json",
    "source_voice_cards_path": "02g_entity_voice_cards.json",
    "source_asset_bindings_path": "02h_entity_assets.json",
    "source_entity_review_state_path": "02z_entity_review_state.json",
    "episode_count": 1,
    "block_count": 1,
    "source_scene_ref_count": 1,
    "character_bio_count": 2,
    "location_asset_count": 1,
    "prop_asset_count": 0,
    "voice_suggestion_count": 2,
    "review_checklist_count": 5,
    "upload_script_char_count": 918,
    "upload_part_count": 1,
    "single_file_upload_ready": true,
    "upload_ready_status": "pass",
    "upload_ready_issue_count": 0,
    "upload_ready_fail_count": 0,
    "upload_ready_warn_count": 0,
    "source_screenplay_generation_status": "ok",
    "source_screenplay_blocked_block_count": 0,
    "source_screenplay_blocked_episode_count": 0,
    "source_screenplay_placeholder_block_count": 0,
    "asset_ready_status": "pass",
    "asset_ready_issue_count": 0,
    "asset_ready_fail_count": 0,
    "asset_ready_warn_count": 0,
    "missing_character_visual_count": 0,
    "missing_character_voice_count": 0,
    "manual_review_blocked_character_count": 0,
    "manual_review_needs_fix_character_count": 0,
    "manual_review_locked_scope_count": 0,
    "skipped_unbound_character_ref_count": 0,
    "risk_item_count": 18,
    "risk_flag_count": 4,
    "entity_review_summary": {
      "entity": {
        "total": 4,
        "applicable": 4,
        "todo": 4,
        "in_progress": 0,
        "approved": 0,
        "needs_fix": 0,
        "blocked": 0,
        "na": 0,
        "locked": 0,
        "open": 4
      },
      "visual": {
        "total": 4,
        "applicable": 4,
        "todo": 4,
        "in_progress": 0,
        "approved": 0,
        "needs_fix": 0,
        "blocked": 0,
        "na": 0,
        "locked": 0,
        "open": 4
      },
      "voice": {
        "total": 4,
        "applicable": 2,
        "todo": 2,
        "in_progress": 0,
        "approved": 0,
        "needs_fix": 0,
        "blocked": 0,
        "na": 2,
        "locked": 0,
        "open": 2
      },
      "assets": {
        "total": 4,
        "applicable": 4,
        "todo": 4,
        "in_progress": 0,
        "approved": 0,
        "needs_fix": 0,
        "blocked": 0,
        "na": 0,
        "locked": 0,
        "open": 4
      },
      "event_count": 0
    },
    "time_mode_counts": {
      "mainline": 1
    }
  },
  "content_policy": {
    "contract_version": "dramart_package_scope.v1",
    "package_roles": [
      "export_layer",
      "asset_suggestion_layer",
      "risk_reveal_layer"
    ],
    "allowed_derivations": [
      "字段兜底与格式整形",
      "episode_upload_markdown 聚合输出",
      "asset_suggestion / readiness / risk overlay 派生",
      "upload markdown 的大纲与导览拼装"
    ],
    "forbidden_repairs": [
      "改写 screenplay_text 正文主体",
      "重写 title / opening_hook / ending_hook 主文案",
      "用 package 文案覆盖 episode 主角色排序"
    ],
    "source_of_truth": {
      "screenplay": "03d_screenplay.json",
      "entity_registry": "02e_entity_registry.json",
      "visual_cards": "02f_entity_visual_cards.json",
      "voice_cards": "02g_entity_voice_cards.json",
      "asset_bindings": "02h_entity_assets.json"
    }
  },
  "outline": {
    "title": "sample_novel",
    "format": "Dramart 漫剧/短剧输入包",
    "premise": "张三走进客栈，李四抬头看他，张三触碰到铜令并感知到其不寻常的瞬间，建立场景、引入主要人物。",
    "core_hook": "张三走进客栈，李四抬头看他。",
    "episode_count": 1,
    "block_count": 1,
    "source_scene_ref_count": 1,
    "time_mode_counts": {
      "mainline": 1
    },
    "main_characters": [
      "张三",
      "李四"
    ],
    "main_locations": [
      "客栈"
    ],
    "upload_notes": [
      "上传时优先使用 03e_dramart_upload_script.md 作为正文剧本。",
      "角色设定优先参考 character_bios 中的 identity_summary、appearance_core 与 voice_profile。",
      "若存在 flashback / dream / parallel 等时间模式，需在 Dramart 项目中额外标注时态切换。"
    ]
  },
  "episode_summaries": [
    {
      "episode_id": "EP0001",
      "episode_index": 1,
      "title": "第01集 内心状态从日常转为警觉",
      "logline": "张三走进客栈，李四抬头看他，张三触碰到铜令并感知到其不寻常的瞬间，建立场景、引入主要人物。",
      "summary": "建立场景、引入主要人物，潜在的、未言明的紧张与对立（通过眼神传达），张三触碰到铜令并感知到其不寻常的瞬间。",
      "opening_hook": "张三走进客栈，李四抬头看他。",
      "ending_hook": "张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。",
      "block_count": 1,
      "block_ids": [
        "EP0001B001"
      ],
      "source_scene_ids": [
        "S0001"
      ],
      "source_group_ids": [
        "AG0001"
      ],
      "source_beat_ids": [
        "AB0001"
      ],
      "time_modes": [
        "mainline"
      ],
      "character_names": [
        "张三",
        "李四"
      ],
      "character_display_names": [
        "张三",
        "李四"
      ],
      "character_entity_uids": [
        "E000001",
        "E000002"
      ],
      "location_names": [
        "客栈"
      ],
      "location_display_names": [
        "客栈"
      ],
      "location_entity_uids": [
        "E000003"
      ],
      "episode_markdown": "# 第01集 内心状态从日常转为警觉\n\n一句话梗概：张三走进客栈，李四抬头看他，张三触碰到铜令并感知到其不寻常的瞬间，建立场景、引入主要人物。\n剧情摘要：建立场景、引入主要人物，潜在的、未言明的紧张与对立（通过眼神传达），张三触碰到铜令并感知到其不寻常的瞬间。\n开场钩子：张三走进客栈，李四抬头看他。\n结尾钩子：张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。\n\n## 张三走进客栈\n\n（客栈）\n张三走进客栈，李四抬头目光如刀，天色将暮，张三拾起铜令，李四站在人堆里，脸色一下子就绷住了。\n张三走进客栈。\n李四站在人堆里，脸色一下子就绷住了。\n李四抬头目光如刀。\n张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。\n张三走进客栈，李四抬头看他。",
      "episode_upload_markdown": "# 第01集 内心状态从日常转为警觉\n\n本集围绕张三、李四展开，主要场面落在客栈。张三走进客栈，李四抬头看他，张三触碰到铜令并感知到其不寻常的瞬间，建立场景、引入主要人物。\n建立场景、引入主要人物，潜在的、未言明的紧张与对立（通过眼神传达），张三触碰到铜令并感知到其不寻常的瞬间。\n本集看点集中在“张三走进客栈，李四抬头看他。”，并收在“张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。”。\n\n## 场次01 张三走进客栈\n\n场面落在客栈，出场人物有张三、李四。\n这一场先把张三走进客栈，李四抬头看他推到台前。\n场面里先见张三走进客栈，紧跟着把李四抬头目光如刀压出来。\n临到场尾，张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。\n本场推进：张三走进客栈，李四抬头看他，潜在的、未言明的紧张与对立（通过眼神传达），张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。\n场面目标：建立场景、引入主要人物，并通过一个充满张力的对视瞬间暗示潜在的冲突。\n必留动作：张三走进客栈；李四抬头目光如刀；天色将暮；张三拾起铜令的动作；角色不安的情绪反应。\n连续抓手：角色连续性：张三 / 李四；地点连续性：客栈；时间连续性：黄昏；时间连续性：紧接前一场的‘清晨’。\n前后承接上，要把张三 / 李四与客栈继续压在同一股气口里。\n\n（客栈）\n张三走进客栈，李四抬头目光如刀，天色将暮，张三拾起铜令，李四站在人堆里，脸色一下子就绷住了。\n张三走进客栈。\n李四站在人堆里，脸色一下子就绷住了。\n李四抬头目光如刀。\n张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。\n张三走进客栈，李四抬头看他。",
      "episode_upload_char_count": 710,
      "source_ref": {
        "episode_ids": [
          "EP0001"
        ],
        "block_ids": [],
        "source_scene_ids": [
          "S0001"
        ],
        "source_group_ids": [
          "AG0001"
        ],
        "source_beat_ids": [
          "AB0001"
        ],
        "entity_uid": "",
        "visual_card_id": "",
        "voice_card_id": "",
        "asset_binding_id": ""
      }
    }
  ],
  "episodes": [
    {
      "episode_id": "EP0001",
      "episode_index": 1,
      "title": "第01集 内心状态从日常转为警觉",
      "logline": "张三走进客栈，李四抬头看他，张三触碰到铜令并感知到其不寻常的瞬间，建立场景、引入主要人物。",
      "summary": "建立场景、引入主要人物，潜在的、未言明的紧张与对立（通过眼神传达），张三触碰到铜令并感知到其不寻常的瞬间。",
      "opening_hook": "张三走进客栈，李四抬头看他。",
      "ending_hook": "张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。",
      "block_count": 1,
      "block_ids": [
        "EP0001B001"
      ],
      "source_scene_ids": [
        "S0001"
      ],
      "source_group_ids": [
        "AG0001"
      ],
      "source_beat_ids": [
        "AB0001"
      ],
      "time_modes": [
        "mainline"
      ],
      "character_names": [
        "张三",
        "李四"
      ],
      "character_display_names": [
        "张三",
        "李四"
      ],
      "character_entity_uids": [
        "E000001",
        "E000002"
      ],
      "location_names": [
        "客栈"
      ],
      "location_display_names": [
        "客栈"
      ],
      "location_entity_uids": [
        "E000003"
      ],
      "episode_markdown": "# 第01集 内心状态从日常转为警觉\n\n一句话梗概：张三走进客栈，李四抬头看他，张三触碰到铜令并感知到其不寻常的瞬间，建立场景、引入主要人物。\n剧情摘要：建立场景、引入主要人物，潜在的、未言明的紧张与对立（通过眼神传达），张三触碰到铜令并感知到其不寻常的瞬间。\n开场钩子：张三走进客栈，李四抬头看他。\n结尾钩子：张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。\n\n## 张三走进客栈\n\n（客栈）\n张三走进客栈，李四抬头目光如刀，天色将暮，张三拾起铜令，李四站在人堆里，脸色一下子就绷住了。\n张三走进客栈。\n李四站在人堆里，脸色一下子就绷住了。\n李四抬头目光如刀。\n张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。\n张三走进客栈，李四抬头看他。",
      "episode_upload_markdown": "# 第01集 内心状态从日常转为警觉\n\n本集围绕张三、李四展开，主要场面落在客栈。张三走进客栈，李四抬头看他，张三触碰到铜令并感知到其不寻常的瞬间，建立场景、引入主要人物。\n建立场景、引入主要人物，潜在的、未言明的紧张与对立（通过眼神传达），张三触碰到铜令并感知到其不寻常的瞬间。\n本集看点集中在“张三走进客栈，李四抬头看他。”，并收在“张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。”。\n\n## 场次01 张三走进客栈\n\n场面落在客栈，出场人物有张三、李四。\n这一场先把张三走进客栈，李四抬头看他推到台前。\n场面里先见张三走进客栈，紧跟着把李四抬头目光如刀压出来。\n临到场尾，张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。\n本场推进：张三走进客栈，李四抬头看他，潜在的、未言明的紧张与对立（通过眼神传达），张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。\n场面目标：建立场景、引入主要人物，并通过一个充满张力的对视瞬间暗示潜在的冲突。\n必留动作：张三走进客栈；李四抬头目光如刀；天色将暮；张三拾起铜令的动作；角色不安的情绪反应。\n连续抓手：角色连续性：张三 / 李四；地点连续性：客栈；时间连续性：黄昏；时间连续性：紧接前一场的‘清晨’。\n前后承接上，要把张三 / 李四与客栈继续压在同一股气口里。\n\n（客栈）\n张三走进客栈，李四抬头目光如刀，天色将暮，张三拾起铜令，李四站在人堆里，脸色一下子就绷住了。\n张三走进客栈。\n李四站在人堆里，脸色一下子就绷住了。\n李四抬头目光如刀。\n张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。\n张三走进客栈，李四抬头看他。",
      "episode_upload_char_count": 710,
      "source_ref": {
        "episode_ids": [
          "EP0001"
        ],
        "block_ids": [],
        "source_scene_ids": [
          "S0001"
        ],
        "source_group_ids": [
          "AG0001"
        ],
        "source_beat_ids": [
          "AB0001"
        ],
        "entity_uid": "",
        "visual_card_id": "",
        "voice_card_id": "",
        "asset_binding_id": ""
      }
    }
  ],
  "platform_status": "pass",
  "upload_ready": true,
  "asset_ready": true,
  "storyboard_ready": "unknown",
  "character_bios": [
    {
      "entity_uid": "E000001",
      "name": "张三",
      "canonical_name": "张三",
      "display_name": "张三",
      "identity_conflict": {},
      "conflict_group_id": "",
      "aliases": [],
      "appeared_as_names": [],
      "type": "人物",
      "subtype": "",
      "importance": "minor",
      "priority": "P3",
      "role_tier": "featured",
      "episode_ids": [
        "EP0001"
      ],
      "source_scene_ids": [
        "S0001"
      ],
      "source_group_ids": [
        "AG0001"
      ],
      "source_beat_ids": [
        "AB0001"
      ],
      "block_ids": [
        "EP0001B001"
      ],
      "visual_card_id": "VC000001",
      "voice_card_id": "VO000001",
      "asset_binding_id": "AB000001",
      "merge_suspect": {},
      "resolution_overlay": {},
      "identity_summary": "张三，功能角色",
      "visual_anchor_summary": "张三，功能角色",
      "design_keywords": [
        "张三",
        "走进客栈",
        "拾起铜令",
        "张三走进客栈"
      ],
      "design_prompt_fragments": [],
      "appearance_core": [],
      "clothing_core": [],
      "prop_core": [],
      "costume_variants": [],
      "state_variants": [],
      "style_constraints": [
        "保持同一实体在跨镜头中的核心身份稳定",
        "保持角色核心外貌、服饰母题和主要随身物一致"
      ],
      "consistency_rules": [
        "后续 scene 与 shot 只能在此静态身份卡之上叠加动态状态",
        "常见关联对象：客栈",
        "已处理文本出现范围：C0001 -> C0001"
      ],
      "voice_profile": {
        "voice_role": "character",
        "gender_presentation": "unknown",
        "age_impression": "unknown",
        "voice_anchor_summary": "张三；角色 / 未知性别呈现 / 未知年龄感；自然人声",
        "timbre": [
          "自然人声",
          "保持跨场景音色稳定"
        ],
        "pitch": "unknown",
        "pace": "medium",
        "speaking_style": [
          "吐字清晰"
        ],
        "delivery_core": [
          "锁定基础音色，不因场景切换改变发声位置",
          "情绪变化优先通过力度和语速调整，不改人声底色"
        ],
        "casting_tags": [
          "角色",
          "未知性别呈现",
          "未知年龄感",
          "自然人声",
          "保持跨场景音色稳定",
          "吐字清晰"
        ],
        "voice_variants": [
          {
            "variant_id": "VO000001:default",
            "label": "常规对白",
            "pace": "medium",
            "pitch": "unknown",
            "timbre": [
              "自然人声",
              "保持跨场景音色稳定"
            ],
            "speaking_style": [
              "吐字清晰"
            ],
            "notes": "默认对白态，用于大多数正常交流场景。"
          },
          {
            "variant_id": "VO000001:low",
            "label": "低强度对白",
            "pace": "slow",
            "pitch": "unknown",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "压低力度"
            ],
            "notes": "适用于密谈、独白或收束段落。"
          },
          {
            "variant_id": "VO000001:high",
            "label": "高强度对白",
            "pace": "fast",
            "pitch": "unknown",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "提高爆发力"
            ],
            "notes": "适用于冲突、喊叫或高压时刻。"
          }
        ]
      },
      "asset_profile": {
        "asset_role": "character",
        "priority": "minor",
        "required_visual_assets": [
          "角色主设图",
          "角色半身参考图"
        ],
        "optional_visual_assets": [],
        "required_voice_assets": [
          "基础音色样例",
          "情绪扩展样例"
        ],
        "usage_hints": [],
        "owner_candidates": [
          "客栈"
        ],
        "variant_keys": [
          "VC000001:costume:default",
          "VO000001:default",
          "VO000001:low",
          "VO000001:high"
        ],
        "prompt_fragments": [
          "走进客栈；拾起铜令",
          "张三",
          "走进客栈",
          "拾起铜令",
          "张三走进客栈"
        ],
        "notes": "Dramart 资产初始化建议位；先补主设，再逐步补变体与音色。"
      },
      "asset_readiness": {
        "reference_image_count": 0,
        "reference_audio_count": 0,
        "lora_binding_count": 0,
        "voice_binding_count": 0,
        "manual_override_count": 0,
        "auto_needs_visual_reference": true,
        "auto_needs_visual_lock": true,
        "auto_needs_voice_reference": true,
        "auto_needs_voice_binding": true,
        "needs_visual_reference": true,
        "needs_visual_lock": true,
        "needs_voice_reference": true,
        "needs_voice_binding": true,
        "visual_seed_text_ready": true,
        "voice_seed_text_ready": true,
        "dramart_asset_spec_ready": true,
        "needs_visual_seed_text": false,
        "needs_voice_seed_text": false,
        "required_visual_asset_count": 2,
        "required_voice_asset_count": 2,
        "entity_needs_review": false,
        "manual_needs_fix": false,
        "manual_blocked": false,
        "manual_needs_fix_scopes": [],
        "manual_blocked_scopes": [],
        "manual_approved_scopes": [],
        "manual_locked_scopes": [],
        "manual_override_flags": {
          "entity_ok": false,
          "visual_ok": false,
          "voice_ok": false,
          "asset_ok": false
        },
        "review_overlay": {
          "scopes": {
            "entity": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "visual": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "voice": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "assets": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            }
          },
          "blocked_scopes": [],
          "needs_fix_scopes": [],
          "approved_scopes": [],
          "locked_scopes": [],
          "open_scopes": [],
          "manual_blocked": false,
          "manual_needs_fix": false
        },
        "ready_for_dramart": false,
        "ready_for_dramart_init": true
      },
      "review_overlay": {
        "scopes": {
          "entity": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "visual": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "voice": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "assets": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          }
        },
        "blocked_scopes": [],
        "needs_fix_scopes": [],
        "approved_scopes": [],
        "locked_scopes": [],
        "open_scopes": [],
        "manual_blocked": false,
        "manual_needs_fix": false
      },
      "bio_text": "张三，功能角色\n外观要点：走进客栈；拾起铜令；张三走进客栈\n声音建议：自然人声；保持跨场景音色稳定；吐字清晰\n配音约束：锁定基础音色，不因场景切换改变发声位置；情绪变化优先通过力度和语速调整，不改人声底色\n建议资产：角色主设图；角色半身参考图\n主要出现集次：EP0001\n补充：关系上下文：张三 - 前往 - 客栈",
      "review_notes": [
        "缺少参考图",
        "缺少视觉锁定绑定",
        "缺少语音参考",
        "缺少音色绑定"
      ],
      "risk_flags": [
        "visual_reference_gap",
        "voice_reference_gap",
        "voice_binding_gap",
        "visual_lock_gap"
      ],
      "risk_summary": "参考图缺口；语音参考缺口；音色绑定缺口",
      "init_action": "ready",
      "init_action_reason": "当前信息已足够直接进入 Dramart 初始化",
      "source_ref": {
        "episode_ids": [
          "EP0001"
        ],
        "block_ids": [
          "EP0001B001"
        ],
        "source_scene_ids": [
          "S0001"
        ],
        "source_group_ids": [
          "AG0001"
        ],
        "source_beat_ids": [
          "AB0001"
        ],
        "entity_uid": "E000001",
        "visual_card_id": "VC000001",
        "voice_card_id": "VO000001",
        "asset_binding_id": "AB000001"
      }
    },
    {
      "entity_uid": "E000002",
      "name": "李四",
      "canonical_name": "李四",
      "display_name": "李四",
      "identity_conflict": {},
      "conflict_group_id": "",
      "aliases": [],
      "appeared_as_names": [],
      "type": "人物",
      "subtype": "",
      "importance": "background",
      "priority": "P4",
      "role_tier": "featured",
      "episode_ids": [
        "EP0001"
      ],
      "source_scene_ids": [
        "S0001"
      ],
      "source_group_ids": [
        "AG0001"
      ],
      "source_beat_ids": [
        "AB0001"
      ],
      "block_ids": [
        "EP0001B001"
      ],
      "visual_card_id": "VC000002",
      "voice_card_id": "VO000002",
      "asset_binding_id": "AB000002",
      "merge_suspect": {},
      "resolution_overlay": {},
      "identity_summary": "李四，功能角色",
      "visual_anchor_summary": "李四，功能角色",
      "design_keywords": [
        "李四",
        "抬头看张三",
        "李四抬头看他"
      ],
      "design_prompt_fragments": [],
      "appearance_core": [],
      "clothing_core": [],
      "prop_core": [],
      "costume_variants": [],
      "state_variants": [],
      "style_constraints": [
        "保持同一实体在跨镜头中的核心身份稳定",
        "保持角色核心外貌、服饰母题和主要随身物一致"
      ],
      "consistency_rules": [
        "后续 scene 与 shot 只能在此静态身份卡之上叠加动态状态",
        "已处理文本出现范围：C0001 -> C0001"
      ],
      "voice_profile": {
        "voice_role": "character",
        "gender_presentation": "unknown",
        "age_impression": "unknown",
        "voice_anchor_summary": "李四；角色 / 未知性别呈现 / 未知年龄感；自然人声",
        "timbre": [
          "自然人声",
          "保持跨场景音色稳定"
        ],
        "pitch": "unknown",
        "pace": "medium",
        "speaking_style": [
          "吐字清晰"
        ],
        "delivery_core": [
          "锁定基础音色，不因场景切换改变发声位置",
          "情绪变化优先通过力度和语速调整，不改人声底色"
        ],
        "casting_tags": [
          "角色",
          "未知性别呈现",
          "未知年龄感",
          "自然人声",
          "保持跨场景音色稳定",
          "吐字清晰"
        ],
        "voice_variants": [
          {
            "variant_id": "VO000002:default",
            "label": "常规对白",
            "pace": "medium",
            "pitch": "unknown",
            "timbre": [
              "自然人声",
              "保持跨场景音色稳定"
            ],
            "speaking_style": [
              "吐字清晰"
            ],
            "notes": "默认对白态，用于大多数正常交流场景。"
          },
          {
            "variant_id": "VO000002:low",
            "label": "低强度对白",
            "pace": "slow",
            "pitch": "unknown",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "压低力度"
            ],
            "notes": "适用于密谈、独白或收束段落。"
          },
          {
            "variant_id": "VO000002:high",
            "label": "高强度对白",
            "pace": "fast",
            "pitch": "unknown",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "提高爆发力"
            ],
            "notes": "适用于冲突、喊叫或高压时刻。"
          }
        ]
      },
      "asset_profile": {
        "asset_role": "character",
        "priority": "background",
        "required_visual_assets": [
          "角色主设图",
          "角色半身参考图"
        ],
        "optional_visual_assets": [],
        "required_voice_assets": [
          "基础音色样例",
          "情绪扩展样例"
        ],
        "usage_hints": [],
        "owner_candidates": [],
        "variant_keys": [
          "VC000002:costume:default",
          "VO000002:default",
          "VO000002:low",
          "VO000002:high"
        ],
        "prompt_fragments": [
          "抬头看张三",
          "李四",
          "李四抬头看他"
        ],
        "notes": "Dramart 资产初始化建议位；先补主设，再逐步补变体与音色。"
      },
      "asset_readiness": {
        "reference_image_count": 0,
        "reference_audio_count": 0,
        "lora_binding_count": 0,
        "voice_binding_count": 0,
        "manual_override_count": 0,
        "auto_needs_visual_reference": true,
        "auto_needs_visual_lock": true,
        "auto_needs_voice_reference": true,
        "auto_needs_voice_binding": true,
        "needs_visual_reference": true,
        "needs_visual_lock": true,
        "needs_voice_reference": true,
        "needs_voice_binding": true,
        "visual_seed_text_ready": true,
        "voice_seed_text_ready": true,
        "dramart_asset_spec_ready": true,
        "needs_visual_seed_text": false,
        "needs_voice_seed_text": false,
        "required_visual_asset_count": 2,
        "required_voice_asset_count": 2,
        "entity_needs_review": false,
        "manual_needs_fix": false,
        "manual_blocked": false,
        "manual_needs_fix_scopes": [],
        "manual_blocked_scopes": [],
        "manual_approved_scopes": [],
        "manual_locked_scopes": [],
        "manual_override_flags": {
          "entity_ok": false,
          "visual_ok": false,
          "voice_ok": false,
          "asset_ok": false
        },
        "review_overlay": {
          "scopes": {
            "entity": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "visual": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "voice": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "assets": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            }
          },
          "blocked_scopes": [],
          "needs_fix_scopes": [],
          "approved_scopes": [],
          "locked_scopes": [],
          "open_scopes": [],
          "manual_blocked": false,
          "manual_needs_fix": false
        },
        "ready_for_dramart": false,
        "ready_for_dramart_init": true
      },
      "review_overlay": {
        "scopes": {
          "entity": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "visual": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "voice": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "assets": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          }
        },
        "blocked_scopes": [],
        "needs_fix_scopes": [],
        "approved_scopes": [],
        "locked_scopes": [],
        "open_scopes": [],
        "manual_blocked": false,
        "manual_needs_fix": false
      },
      "bio_text": "李四，功能角色\n外观要点：抬头看张三；李四抬头看他\n声音建议：自然人声；保持跨场景音色稳定；吐字清晰\n配音约束：锁定基础音色，不因场景切换改变发声位置；情绪变化优先通过力度和语速调整，不改人声底色\n建议资产：角色主设图；角色半身参考图\n主要出现集次：EP0001",
      "review_notes": [
        "缺少参考图",
        "缺少视觉锁定绑定",
        "缺少语音参考",
        "缺少音色绑定"
      ],
      "risk_flags": [
        "visual_reference_gap",
        "voice_reference_gap",
        "voice_binding_gap",
        "visual_lock_gap"
      ],
      "risk_summary": "参考图缺口；语音参考缺口；音色绑定缺口",
      "init_action": "ready",
      "init_action_reason": "当前信息已足够直接进入 Dramart 初始化",
      "source_ref": {
        "episode_ids": [
          "EP0001"
        ],
        "block_ids": [
          "EP0001B001"
        ],
        "source_scene_ids": [
          "S0001"
        ],
        "source_group_ids": [
          "AG0001"
        ],
        "source_beat_ids": [
          "AB0001"
        ],
        "entity_uid": "E000002",
        "visual_card_id": "VC000002",
        "voice_card_id": "VO000002",
        "asset_binding_id": "AB000002"
      }
    }
  ],
  "characters": [
    {
      "entity_uid": "E000001",
      "name": "张三",
      "canonical_name": "张三",
      "display_name": "张三",
      "identity_conflict": {},
      "conflict_group_id": "",
      "aliases": [],
      "appeared_as_names": [],
      "type": "人物",
      "subtype": "",
      "importance": "minor",
      "priority": "P3",
      "role_tier": "featured",
      "episode_ids": [
        "EP0001"
      ],
      "source_scene_ids": [
        "S0001"
      ],
      "source_group_ids": [
        "AG0001"
      ],
      "source_beat_ids": [
        "AB0001"
      ],
      "block_ids": [
        "EP0001B001"
      ],
      "visual_card_id": "VC000001",
      "voice_card_id": "VO000001",
      "asset_binding_id": "AB000001",
      "merge_suspect": {},
      "resolution_overlay": {},
      "identity_summary": "张三，功能角色",
      "visual_anchor_summary": "张三，功能角色",
      "design_keywords": [
        "张三",
        "走进客栈",
        "拾起铜令",
        "张三走进客栈"
      ],
      "design_prompt_fragments": [],
      "appearance_core": [],
      "clothing_core": [],
      "prop_core": [],
      "costume_variants": [],
      "state_variants": [],
      "style_constraints": [
        "保持同一实体在跨镜头中的核心身份稳定",
        "保持角色核心外貌、服饰母题和主要随身物一致"
      ],
      "consistency_rules": [
        "后续 scene 与 shot 只能在此静态身份卡之上叠加动态状态",
        "常见关联对象：客栈",
        "已处理文本出现范围：C0001 -> C0001"
      ],
      "voice_profile": {
        "voice_role": "character",
        "gender_presentation": "unknown",
        "age_impression": "unknown",
        "voice_anchor_summary": "张三；角色 / 未知性别呈现 / 未知年龄感；自然人声",
        "timbre": [
          "自然人声",
          "保持跨场景音色稳定"
        ],
        "pitch": "unknown",
        "pace": "medium",
        "speaking_style": [
          "吐字清晰"
        ],
        "delivery_core": [
          "锁定基础音色，不因场景切换改变发声位置",
          "情绪变化优先通过力度和语速调整，不改人声底色"
        ],
        "casting_tags": [
          "角色",
          "未知性别呈现",
          "未知年龄感",
          "自然人声",
          "保持跨场景音色稳定",
          "吐字清晰"
        ],
        "voice_variants": [
          {
            "variant_id": "VO000001:default",
            "label": "常规对白",
            "pace": "medium",
            "pitch": "unknown",
            "timbre": [
              "自然人声",
              "保持跨场景音色稳定"
            ],
            "speaking_style": [
              "吐字清晰"
            ],
            "notes": "默认对白态，用于大多数正常交流场景。"
          },
          {
            "variant_id": "VO000001:low",
            "label": "低强度对白",
            "pace": "slow",
            "pitch": "unknown",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "压低力度"
            ],
            "notes": "适用于密谈、独白或收束段落。"
          },
          {
            "variant_id": "VO000001:high",
            "label": "高强度对白",
            "pace": "fast",
            "pitch": "unknown",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "提高爆发力"
            ],
            "notes": "适用于冲突、喊叫或高压时刻。"
          }
        ]
      },
      "asset_profile": {
        "asset_role": "character",
        "priority": "minor",
        "required_visual_assets": [
          "角色主设图",
          "角色半身参考图"
        ],
        "optional_visual_assets": [],
        "required_voice_assets": [
          "基础音色样例",
          "情绪扩展样例"
        ],
        "usage_hints": [],
        "owner_candidates": [
          "客栈"
        ],
        "variant_keys": [
          "VC000001:costume:default",
          "VO000001:default",
          "VO000001:low",
          "VO000001:high"
        ],
        "prompt_fragments": [
          "走进客栈；拾起铜令",
          "张三",
          "走进客栈",
          "拾起铜令",
          "张三走进客栈"
        ],
        "notes": "Dramart 资产初始化建议位；先补主设，再逐步补变体与音色。"
      },
      "asset_readiness": {
        "reference_image_count": 0,
        "reference_audio_count": 0,
        "lora_binding_count": 0,
        "voice_binding_count": 0,
        "manual_override_count": 0,
        "auto_needs_visual_reference": true,
        "auto_needs_visual_lock": true,
        "auto_needs_voice_reference": true,
        "auto_needs_voice_binding": true,
        "needs_visual_reference": true,
        "needs_visual_lock": true,
        "needs_voice_reference": true,
        "needs_voice_binding": true,
        "visual_seed_text_ready": true,
        "voice_seed_text_ready": true,
        "dramart_asset_spec_ready": true,
        "needs_visual_seed_text": false,
        "needs_voice_seed_text": false,
        "required_visual_asset_count": 2,
        "required_voice_asset_count": 2,
        "entity_needs_review": false,
        "manual_needs_fix": false,
        "manual_blocked": false,
        "manual_needs_fix_scopes": [],
        "manual_blocked_scopes": [],
        "manual_approved_scopes": [],
        "manual_locked_scopes": [],
        "manual_override_flags": {
          "entity_ok": false,
          "visual_ok": false,
          "voice_ok": false,
          "asset_ok": false
        },
        "review_overlay": {
          "scopes": {
            "entity": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "visual": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "voice": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "assets": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            }
          },
          "blocked_scopes": [],
          "needs_fix_scopes": [],
          "approved_scopes": [],
          "locked_scopes": [],
          "open_scopes": [],
          "manual_blocked": false,
          "manual_needs_fix": false
        },
        "ready_for_dramart": false,
        "ready_for_dramart_init": true
      },
      "review_overlay": {
        "scopes": {
          "entity": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "visual": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "voice": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "assets": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          }
        },
        "blocked_scopes": [],
        "needs_fix_scopes": [],
        "approved_scopes": [],
        "locked_scopes": [],
        "open_scopes": [],
        "manual_blocked": false,
        "manual_needs_fix": false
      },
      "bio_text": "张三，功能角色\n外观要点：走进客栈；拾起铜令；张三走进客栈\n声音建议：自然人声；保持跨场景音色稳定；吐字清晰\n配音约束：锁定基础音色，不因场景切换改变发声位置；情绪变化优先通过力度和语速调整，不改人声底色\n建议资产：角色主设图；角色半身参考图\n主要出现集次：EP0001\n补充：关系上下文：张三 - 前往 - 客栈",
      "review_notes": [
        "缺少参考图",
        "缺少视觉锁定绑定",
        "缺少语音参考",
        "缺少音色绑定"
      ],
      "risk_flags": [
        "visual_reference_gap",
        "voice_reference_gap",
        "voice_binding_gap",
        "visual_lock_gap"
      ],
      "risk_summary": "参考图缺口；语音参考缺口；音色绑定缺口",
      "init_action": "ready",
      "init_action_reason": "当前信息已足够直接进入 Dramart 初始化",
      "source_ref": {
        "episode_ids": [
          "EP0001"
        ],
        "block_ids": [
          "EP0001B001"
        ],
        "source_scene_ids": [
          "S0001"
        ],
        "source_group_ids": [
          "AG0001"
        ],
        "source_beat_ids": [
          "AB0001"
        ],
        "entity_uid": "E000001",
        "visual_card_id": "VC000001",
        "voice_card_id": "VO000001",
        "asset_binding_id": "AB000001"
      }
    },
    {
      "entity_uid": "E000002",
      "name": "李四",
      "canonical_name": "李四",
      "display_name": "李四",
      "identity_conflict": {},
      "conflict_group_id": "",
      "aliases": [],
      "appeared_as_names": [],
      "type": "人物",
      "subtype": "",
      "importance": "background",
      "priority": "P4",
      "role_tier": "featured",
      "episode_ids": [
        "EP0001"
      ],
      "source_scene_ids": [
        "S0001"
      ],
      "source_group_ids": [
        "AG0001"
      ],
      "source_beat_ids": [
        "AB0001"
      ],
      "block_ids": [
        "EP0001B001"
      ],
      "visual_card_id": "VC000002",
      "voice_card_id": "VO000002",
      "asset_binding_id": "AB000002",
      "merge_suspect": {},
      "resolution_overlay": {},
      "identity_summary": "李四，功能角色",
      "visual_anchor_summary": "李四，功能角色",
      "design_keywords": [
        "李四",
        "抬头看张三",
        "李四抬头看他"
      ],
      "design_prompt_fragments": [],
      "appearance_core": [],
      "clothing_core": [],
      "prop_core": [],
      "costume_variants": [],
      "state_variants": [],
      "style_constraints": [
        "保持同一实体在跨镜头中的核心身份稳定",
        "保持角色核心外貌、服饰母题和主要随身物一致"
      ],
      "consistency_rules": [
        "后续 scene 与 shot 只能在此静态身份卡之上叠加动态状态",
        "已处理文本出现范围：C0001 -> C0001"
      ],
      "voice_profile": {
        "voice_role": "character",
        "gender_presentation": "unknown",
        "age_impression": "unknown",
        "voice_anchor_summary": "李四；角色 / 未知性别呈现 / 未知年龄感；自然人声",
        "timbre": [
          "自然人声",
          "保持跨场景音色稳定"
        ],
        "pitch": "unknown",
        "pace": "medium",
        "speaking_style": [
          "吐字清晰"
        ],
        "delivery_core": [
          "锁定基础音色，不因场景切换改变发声位置",
          "情绪变化优先通过力度和语速调整，不改人声底色"
        ],
        "casting_tags": [
          "角色",
          "未知性别呈现",
          "未知年龄感",
          "自然人声",
          "保持跨场景音色稳定",
          "吐字清晰"
        ],
        "voice_variants": [
          {
            "variant_id": "VO000002:default",
            "label": "常规对白",
            "pace": "medium",
            "pitch": "unknown",
            "timbre": [
              "自然人声",
              "保持跨场景音色稳定"
            ],
            "speaking_style": [
              "吐字清晰"
            ],
            "notes": "默认对白态，用于大多数正常交流场景。"
          },
          {
            "variant_id": "VO000002:low",
            "label": "低强度对白",
            "pace": "slow",
            "pitch": "unknown",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "压低力度"
            ],
            "notes": "适用于密谈、独白或收束段落。"
          },
          {
            "variant_id": "VO000002:high",
            "label": "高强度对白",
            "pace": "fast",
            "pitch": "unknown",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "提高爆发力"
            ],
            "notes": "适用于冲突、喊叫或高压时刻。"
          }
        ]
      },
      "asset_profile": {
        "asset_role": "character",
        "priority": "background",
        "required_visual_assets": [
          "角色主设图",
          "角色半身参考图"
        ],
        "optional_visual_assets": [],
        "required_voice_assets": [
          "基础音色样例",
          "情绪扩展样例"
        ],
        "usage_hints": [],
        "owner_candidates": [],
        "variant_keys": [
          "VC000002:costume:default",
          "VO000002:default",
          "VO000002:low",
          "VO000002:high"
        ],
        "prompt_fragments": [
          "抬头看张三",
          "李四",
          "李四抬头看他"
        ],
        "notes": "Dramart 资产初始化建议位；先补主设，再逐步补变体与音色。"
      },
      "asset_readiness": {
        "reference_image_count": 0,
        "reference_audio_count": 0,
        "lora_binding_count": 0,
        "voice_binding_count": 0,
        "manual_override_count": 0,
        "auto_needs_visual_reference": true,
        "auto_needs_visual_lock": true,
        "auto_needs_voice_reference": true,
        "auto_needs_voice_binding": true,
        "needs_visual_reference": true,
        "needs_visual_lock": true,
        "needs_voice_reference": true,
        "needs_voice_binding": true,
        "visual_seed_text_ready": true,
        "voice_seed_text_ready": true,
        "dramart_asset_spec_ready": true,
        "needs_visual_seed_text": false,
        "needs_voice_seed_text": false,
        "required_visual_asset_count": 2,
        "required_voice_asset_count": 2,
        "entity_needs_review": false,
        "manual_needs_fix": false,
        "manual_blocked": false,
        "manual_needs_fix_scopes": [],
        "manual_blocked_scopes": [],
        "manual_approved_scopes": [],
        "manual_locked_scopes": [],
        "manual_override_flags": {
          "entity_ok": false,
          "visual_ok": false,
          "voice_ok": false,
          "asset_ok": false
        },
        "review_overlay": {
          "scopes": {
            "entity": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "visual": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "voice": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "assets": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            }
          },
          "blocked_scopes": [],
          "needs_fix_scopes": [],
          "approved_scopes": [],
          "locked_scopes": [],
          "open_scopes": [],
          "manual_blocked": false,
          "manual_needs_fix": false
        },
        "ready_for_dramart": false,
        "ready_for_dramart_init": true
      },
      "review_overlay": {
        "scopes": {
          "entity": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "visual": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "voice": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "assets": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          }
        },
        "blocked_scopes": [],
        "needs_fix_scopes": [],
        "approved_scopes": [],
        "locked_scopes": [],
        "open_scopes": [],
        "manual_blocked": false,
        "manual_needs_fix": false
      },
      "bio_text": "李四，功能角色\n外观要点：抬头看张三；李四抬头看他\n声音建议：自然人声；保持跨场景音色稳定；吐字清晰\n配音约束：锁定基础音色，不因场景切换改变发声位置；情绪变化优先通过力度和语速调整，不改人声底色\n建议资产：角色主设图；角色半身参考图\n主要出现集次：EP0001",
      "review_notes": [
        "缺少参考图",
        "缺少视觉锁定绑定",
        "缺少语音参考",
        "缺少音色绑定"
      ],
      "risk_flags": [
        "visual_reference_gap",
        "voice_reference_gap",
        "voice_binding_gap",
        "visual_lock_gap"
      ],
      "risk_summary": "参考图缺口；语音参考缺口；音色绑定缺口",
      "init_action": "ready",
      "init_action_reason": "当前信息已足够直接进入 Dramart 初始化",
      "source_ref": {
        "episode_ids": [
          "EP0001"
        ],
        "block_ids": [
          "EP0001B001"
        ],
        "source_scene_ids": [
          "S0001"
        ],
        "source_group_ids": [
          "AG0001"
        ],
        "source_beat_ids": [
          "AB0001"
        ],
        "entity_uid": "E000002",
        "visual_card_id": "VC000002",
        "voice_card_id": "VO000002",
        "asset_binding_id": "AB000002"
      }
    }
  ],
  "asset_ready_summary": {
    "status": "pass",
    "issue_count": 0,
    "fail_count": 0,
    "warn_count": 0,
    "info_count": 0,
    "character_count": 2,
    "priority_character_count": 0,
    "character_ready_count": 2,
    "priority_character_ready_count": 0,
    "character_primary_visual_ready_count": 2,
    "character_variant_ready_count": 2,
    "character_voice_ready_count": 0,
    "missing_character_visual_count": 0,
    "missing_character_voice_count": 0,
    "priority_character_visual_gap_count": 0,
    "priority_character_voice_gap_count": 0,
    "priority_character_variant_gap_count": 0,
    "character_manual_blocked_count": 0,
    "character_manual_needs_fix_count": 0,
    "location_asset_count": 1,
    "location_ready_count": 1,
    "location_visual_gap_count": 0,
    "location_scene_mapping_gap_count": 0,
    "location_manual_blocked_count": 0,
    "prop_asset_count": 0,
    "prop_ready_count": 0,
    "prop_visual_gap_count": 0,
    "prop_usage_mapping_gap_count": 0,
    "prop_manual_blocked_count": 0,
    "voice_suggestion_count": 2,
    "voice_binding_gap_count": 2,
    "voice_reference_gap_count": 2,
    "character_asset_suggestion_count": 2
  },
  "asset_ready_issues": [],
  "upload_ready_summary": {
    "status": "pass",
    "issue_count": 0,
    "fail_count": 0,
    "warn_count": 0,
    "info_count": 0,
    "episode_count": 1,
    "block_count": 1,
    "character_bio_count": 2,
    "named_episode_count": 1,
    "episode_with_summary_count": 1,
    "episode_with_opening_hook_count": 1,
    "episode_with_ending_hook_count": 1,
    "episode_with_upload_text_count": 1,
    "recommended_upload_mode": "single_file",
    "upload_script_char_count": 918,
    "single_file_within_limit": true,
    "part_count": 1,
    "oversized_episode_count": 0,
    "oversized_part_count": 0,
    "has_global_preface": true,
    "time_layer_annotation_recommended": false,
    "source_screenplay_generation_status": "ok",
    "source_screenplay_blocked_block_count": 0,
    "source_screenplay_blocked_episode_count": 0,
    "source_screenplay_placeholder_block_count": 0
  },
  "upload_ready_issues": [],
  "skipped_unbound_character_refs": [],
  "locations": [
    {
      "entity_uid": "E000003",
      "name": "客栈",
      "canonical_name": "客栈",
      "display_name": "客栈",
      "identity_conflict": {},
      "conflict_group_id": "",
      "type": "地点",
      "subtype": "",
      "importance": "minor",
      "priority": "P3",
      "location_role": "oneoff_set",
      "episode_ids": [
        "EP0001"
      ],
      "source_scene_ids": [
        "S0001"
      ],
      "source_group_ids": [
        "AG0001"
      ],
      "source_beat_ids": [
        "AB0001"
      ],
      "block_ids": [
        "EP0001B001"
      ],
      "visual_card_id": "VC000003",
      "asset_binding_id": "AB000003",
      "identity_summary": "张三走进",
      "visual_anchor_summary": "张三走进客栈",
      "design_prompt_fragments": [
        "张三走进客栈",
        "客栈"
      ],
      "location_core": [
        "张三走进客栈"
      ],
      "landmark_core": [
        "张三走进客栈"
      ],
      "atmosphere_core": [
        "客栈"
      ],
      "style_constraints": [
        "保持同一实体在跨镜头中的核心身份稳定",
        "保持场景结构、地标和整体氛围一致"
      ],
      "main_scene_candidates": [
        {
          "episode_id": "EP0001",
          "block_id": "EP0001B001",
          "title": "张三走进客栈",
          "kind": "scene",
          "lead_scene_id": "S0001",
          "source_scene_ids": [
            "S0001"
          ],
          "source_group_ids": [
            "AG0001"
          ],
          "source_beat_ids": [
            "AB0001"
          ]
        }
      ],
      "asset_profile": {
        "asset_role": "location",
        "priority": "minor",
        "required_visual_assets": [
          "主场景参考图"
        ],
        "optional_visual_assets": [
          "关键地标补充图"
        ],
        "required_voice_assets": [],
        "usage_hints": [
          "张三走进客栈"
        ],
        "owner_candidates": [
          "张三"
        ],
        "variant_keys": [],
        "prompt_fragments": [
          "张三走进客栈",
          "客栈"
        ],
        "notes": "Dramart 资产初始化建议位；先补主设，再逐步补变体与音色。"
      },
      "asset_readiness": {
        "reference_image_count": 0,
        "reference_audio_count": 0,
        "lora_binding_count": 0,
        "voice_binding_count": 0,
        "manual_override_count": 0,
        "auto_needs_visual_reference": true,
        "auto_needs_visual_lock": true,
        "auto_needs_voice_reference": false,
        "auto_needs_voice_binding": false,
        "needs_visual_reference": true,
        "needs_visual_lock": true,
        "needs_voice_reference": false,
        "needs_voice_binding": false,
        "visual_seed_text_ready": true,
        "voice_seed_text_ready": true,
        "dramart_asset_spec_ready": true,
        "needs_visual_seed_text": false,
        "needs_voice_seed_text": false,
        "required_visual_asset_count": 1,
        "required_voice_asset_count": 0,
        "entity_needs_review": false,
        "manual_needs_fix": false,
        "manual_blocked": false,
        "manual_needs_fix_scopes": [],
        "manual_blocked_scopes": [],
        "manual_approved_scopes": [],
        "manual_locked_scopes": [],
        "manual_override_flags": {
          "entity_ok": false,
          "visual_ok": false,
          "voice_ok": true,
          "asset_ok": false
        },
        "review_overlay": {
          "scopes": {
            "entity": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "visual": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "voice": {
              "status": "na",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": true,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": false
            },
            "assets": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            }
          },
          "blocked_scopes": [],
          "needs_fix_scopes": [],
          "approved_scopes": [],
          "locked_scopes": [],
          "open_scopes": [],
          "manual_blocked": false,
          "manual_needs_fix": false
        },
        "ready_for_dramart": false,
        "ready_for_dramart_init": true
      },
      "review_overlay": {
        "scopes": {
          "entity": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "visual": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "voice": {
            "status": "na",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": true,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": false
          },
          "assets": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          }
        },
        "blocked_scopes": [],
        "needs_fix_scopes": [],
        "approved_scopes": [],
        "locked_scopes": [],
        "open_scopes": [],
        "manual_blocked": false,
        "manual_needs_fix": false
      },
      "review_notes": [
        "缺少参考图",
        "缺少视觉锁定绑定"
      ],
      "reason": "覆盖 1 集、命中 1 个剧本块，适合优先建主场景。",
      "risk_flags": [
        "visual_reference_gap",
        "visual_lock_gap"
      ],
      "risk_summary": "参考图缺口；视觉锁定缺口",
      "init_action": "ready",
      "init_action_reason": "当前信息已足够直接进入 Dramart 初始化",
      "source_ref": {
        "episode_ids": [
          "EP0001"
        ],
        "block_ids": [
          "EP0001B001"
        ],
        "source_scene_ids": [
          "S0001"
        ],
        "source_group_ids": [
          "AG0001"
        ],
        "source_beat_ids": [
          "AB0001"
        ],
        "entity_uid": "E000003",
        "visual_card_id": "VC000003",
        "voice_card_id": "",
        "asset_binding_id": "AB000003"
      }
    }
  ],
  "props": [],
  "voices": [
    {
      "entity_uid": "E000001",
      "name": "张三",
      "canonical_name": "张三",
      "display_name": "张三",
      "identity_conflict": {},
      "conflict_group_id": "",
      "priority": "P3",
      "role_tier": "featured",
      "voice_card_id": "VO000001",
      "asset_binding_id": "AB000001",
      "voice_role": "character",
      "episode_ids": [
        "EP0001"
      ],
      "source_scene_ids": [
        "S0001"
      ],
      "source_group_ids": [
        "AG0001"
      ],
      "source_beat_ids": [
        "AB0001"
      ],
      "block_ids": [
        "EP0001B001"
      ],
      "voice_anchor_summary": "张三；角色 / 未知性别呈现 / 未知年龄感；自然人声",
      "timbre": [
        "自然人声",
        "保持跨场景音色稳定"
      ],
      "pitch": "unknown",
      "pace": "medium",
      "speaking_style": [
        "吐字清晰"
      ],
      "delivery_core": [
        "锁定基础音色，不因场景切换改变发声位置",
        "情绪变化优先通过力度和语速调整，不改人声底色"
      ],
      "casting_tags": [
        "角色",
        "未知性别呈现",
        "未知年龄感",
        "自然人声",
        "保持跨场景音色稳定",
        "吐字清晰"
      ],
      "voice_variants": [
        {
          "variant_id": "VO000001:default",
          "label": "常规对白",
          "pace": "medium",
          "pitch": "unknown",
          "timbre": [
            "自然人声",
            "保持跨场景音色稳定"
          ],
          "speaking_style": [
            "吐字清晰"
          ],
          "notes": "默认对白态，用于大多数正常交流场景。"
        },
        {
          "variant_id": "VO000001:low",
          "label": "低强度对白",
          "pace": "slow",
          "pitch": "unknown",
          "timbre": [
            "自然人声"
          ],
          "speaking_style": [
            "吐字清晰",
            "压低力度"
          ],
          "notes": "适用于密谈、独白或收束段落。"
        },
        {
          "variant_id": "VO000001:high",
          "label": "高强度对白",
          "pace": "fast",
          "pitch": "unknown",
          "timbre": [
            "自然人声"
          ],
          "speaking_style": [
            "吐字清晰",
            "提高爆发力"
          ],
          "notes": "适用于冲突、喊叫或高压时刻。"
        }
      ],
      "asset_profile": {
        "asset_role": "character",
        "priority": "minor",
        "required_visual_assets": [
          "角色主设图",
          "角色半身参考图"
        ],
        "optional_visual_assets": [],
        "required_voice_assets": [
          "基础音色样例",
          "情绪扩展样例"
        ],
        "usage_hints": [],
        "owner_candidates": [
          "客栈"
        ],
        "variant_keys": [
          "VC000001:costume:default",
          "VO000001:default",
          "VO000001:low",
          "VO000001:high"
        ],
        "prompt_fragments": [
          "走进客栈；拾起铜令",
          "张三",
          "走进客栈",
          "拾起铜令",
          "张三走进客栈"
        ],
        "notes": "Dramart 资产初始化建议位；先补主设，再逐步补变体与音色。"
      },
      "asset_readiness": {
        "reference_image_count": 0,
        "reference_audio_count": 0,
        "lora_binding_count": 0,
        "voice_binding_count": 0,
        "manual_override_count": 0,
        "auto_needs_visual_reference": true,
        "auto_needs_visual_lock": true,
        "auto_needs_voice_reference": true,
        "auto_needs_voice_binding": true,
        "needs_visual_reference": true,
        "needs_visual_lock": true,
        "needs_voice_reference": true,
        "needs_voice_binding": true,
        "visual_seed_text_ready": true,
        "voice_seed_text_ready": true,
        "dramart_asset_spec_ready": true,
        "needs_visual_seed_text": false,
        "needs_voice_seed_text": false,
        "required_visual_asset_count": 2,
        "required_voice_asset_count": 2,
        "entity_needs_review": false,
        "manual_needs_fix": false,
        "manual_blocked": false,
        "manual_needs_fix_scopes": [],
        "manual_blocked_scopes": [],
        "manual_approved_scopes": [],
        "manual_locked_scopes": [],
        "manual_override_flags": {
          "entity_ok": false,
          "visual_ok": false,
          "voice_ok": false,
          "asset_ok": false
        },
        "review_overlay": {
          "scopes": {
            "entity": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "visual": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "voice": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "assets": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            }
          },
          "blocked_scopes": [],
          "needs_fix_scopes": [],
          "approved_scopes": [],
          "locked_scopes": [],
          "open_scopes": [],
          "manual_blocked": false,
          "manual_needs_fix": false
        },
        "ready_for_dramart": false,
        "ready_for_dramart_init": true
      },
      "review_overlay": {
        "scopes": {
          "entity": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "visual": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "voice": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "assets": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          }
        },
        "blocked_scopes": [],
        "needs_fix_scopes": [],
        "approved_scopes": [],
        "locked_scopes": [],
        "open_scopes": [],
        "manual_blocked": false,
        "manual_needs_fix": false
      },
      "needs": [
        "补角色语音参考",
        "补角色音色绑定"
      ],
      "risk_flags": [
        "visual_reference_gap",
        "voice_reference_gap",
        "voice_binding_gap",
        "visual_lock_gap"
      ],
      "risk_summary": "参考图缺口；语音参考缺口；音色绑定缺口",
      "init_action": "ready",
      "init_action_reason": "当前信息已足够直接进入 Dramart 初始化",
      "source_ref": {
        "episode_ids": [
          "EP0001"
        ],
        "block_ids": [
          "EP0001B001"
        ],
        "source_scene_ids": [
          "S0001"
        ],
        "source_group_ids": [
          "AG0001"
        ],
        "source_beat_ids": [
          "AB0001"
        ],
        "entity_uid": "E000001",
        "visual_card_id": "",
        "voice_card_id": "VO000001",
        "asset_binding_id": "AB000001"
      },
      "main_scene_candidates": [
        {
          "episode_id": "EP0001",
          "block_id": "EP0001B001",
          "title": "张三走进客栈",
          "kind": "scene",
          "lead_scene_id": "S0001",
          "source_scene_ids": [
            "S0001"
          ],
          "source_group_ids": [
            "AG0001"
          ],
          "source_beat_ids": [
            "AB0001"
          ]
        }
      ]
    },
    {
      "entity_uid": "E000002",
      "name": "李四",
      "canonical_name": "李四",
      "display_name": "李四",
      "identity_conflict": {},
      "conflict_group_id": "",
      "priority": "P4",
      "role_tier": "featured",
      "voice_card_id": "VO000002",
      "asset_binding_id": "AB000002",
      "voice_role": "character",
      "episode_ids": [
        "EP0001"
      ],
      "source_scene_ids": [
        "S0001"
      ],
      "source_group_ids": [
        "AG0001"
      ],
      "source_beat_ids": [
        "AB0001"
      ],
      "block_ids": [
        "EP0001B001"
      ],
      "voice_anchor_summary": "李四；角色 / 未知性别呈现 / 未知年龄感；自然人声",
      "timbre": [
        "自然人声",
        "保持跨场景音色稳定"
      ],
      "pitch": "unknown",
      "pace": "medium",
      "speaking_style": [
        "吐字清晰"
      ],
      "delivery_core": [
        "锁定基础音色，不因场景切换改变发声位置",
        "情绪变化优先通过力度和语速调整，不改人声底色"
      ],
      "casting_tags": [
        "角色",
        "未知性别呈现",
        "未知年龄感",
        "自然人声",
        "保持跨场景音色稳定",
        "吐字清晰"
      ],
      "voice_variants": [
        {
          "variant_id": "VO000002:default",
          "label": "常规对白",
          "pace": "medium",
          "pitch": "unknown",
          "timbre": [
            "自然人声",
            "保持跨场景音色稳定"
          ],
          "speaking_style": [
            "吐字清晰"
          ],
          "notes": "默认对白态，用于大多数正常交流场景。"
        },
        {
          "variant_id": "VO000002:low",
          "label": "低强度对白",
          "pace": "slow",
          "pitch": "unknown",
          "timbre": [
            "自然人声"
          ],
          "speaking_style": [
            "吐字清晰",
            "压低力度"
          ],
          "notes": "适用于密谈、独白或收束段落。"
        },
        {
          "variant_id": "VO000002:high",
          "label": "高强度对白",
          "pace": "fast",
          "pitch": "unknown",
          "timbre": [
            "自然人声"
          ],
          "speaking_style": [
            "吐字清晰",
            "提高爆发力"
          ],
          "notes": "适用于冲突、喊叫或高压时刻。"
        }
      ],
      "asset_profile": {
        "asset_role": "character",
        "priority": "background",
        "required_visual_assets": [
          "角色主设图",
          "角色半身参考图"
        ],
        "optional_visual_assets": [],
        "required_voice_assets": [
          "基础音色样例",
          "情绪扩展样例"
        ],
        "usage_hints": [],
        "owner_candidates": [],
        "variant_keys": [
          "VC000002:costume:default",
          "VO000002:default",
          "VO000002:low",
          "VO000002:high"
        ],
        "prompt_fragments": [
          "抬头看张三",
          "李四",
          "李四抬头看他"
        ],
        "notes": "Dramart 资产初始化建议位；先补主设，再逐步补变体与音色。"
      },
      "asset_readiness": {
        "reference_image_count": 0,
        "reference_audio_count": 0,
        "lora_binding_count": 0,
        "voice_binding_count": 0,
        "manual_override_count": 0,
        "auto_needs_visual_reference": true,
        "auto_needs_visual_lock": true,
        "auto_needs_voice_reference": true,
        "auto_needs_voice_binding": true,
        "needs_visual_reference": true,
        "needs_visual_lock": true,
        "needs_voice_reference": true,
        "needs_voice_binding": true,
        "visual_seed_text_ready": true,
        "voice_seed_text_ready": true,
        "dramart_asset_spec_ready": true,
        "needs_visual_seed_text": false,
        "needs_voice_seed_text": false,
        "required_visual_asset_count": 2,
        "required_voice_asset_count": 2,
        "entity_needs_review": false,
        "manual_needs_fix": false,
        "manual_blocked": false,
        "manual_needs_fix_scopes": [],
        "manual_blocked_scopes": [],
        "manual_approved_scopes": [],
        "manual_locked_scopes": [],
        "manual_override_flags": {
          "entity_ok": false,
          "visual_ok": false,
          "voice_ok": false,
          "asset_ok": false
        },
        "review_overlay": {
          "scopes": {
            "entity": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "visual": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "voice": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "assets": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            }
          },
          "blocked_scopes": [],
          "needs_fix_scopes": [],
          "approved_scopes": [],
          "locked_scopes": [],
          "open_scopes": [],
          "manual_blocked": false,
          "manual_needs_fix": false
        },
        "ready_for_dramart": false,
        "ready_for_dramart_init": true
      },
      "review_overlay": {
        "scopes": {
          "entity": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "visual": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "voice": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          },
          "assets": {
            "status": "todo",
            "locked": false,
            "reviewer": "",
            "review_note": "",
            "labels": [],
            "updated_at": "",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": true
          }
        },
        "blocked_scopes": [],
        "needs_fix_scopes": [],
        "approved_scopes": [],
        "locked_scopes": [],
        "open_scopes": [],
        "manual_blocked": false,
        "manual_needs_fix": false
      },
      "needs": [
        "补角色语音参考",
        "补角色音色绑定"
      ],
      "risk_flags": [
        "visual_reference_gap",
        "voice_reference_gap",
        "voice_binding_gap",
        "visual_lock_gap"
      ],
      "risk_summary": "参考图缺口；语音参考缺口；音色绑定缺口",
      "init_action": "ready",
      "init_action_reason": "当前信息已足够直接进入 Dramart 初始化",
      "source_ref": {
        "episode_ids": [
          "EP0001"
        ],
        "block_ids": [
          "EP0001B001"
        ],
        "source_scene_ids": [
          "S0001"
        ],
        "source_group_ids": [
          "AG0001"
        ],
        "source_beat_ids": [
          "AB0001"
        ],
        "entity_uid": "E000002",
        "visual_card_id": "",
        "voice_card_id": "VO000002",
        "asset_binding_id": "AB000002"
      },
      "main_scene_candidates": [
        {
          "episode_id": "EP0001",
          "block_id": "EP0001B001",
          "title": "张三走进客栈",
          "kind": "scene",
          "lead_scene_id": "S0001",
          "source_scene_ids": [
            "S0001"
          ],
          "source_group_ids": [
            "AG0001"
          ],
          "source_beat_ids": [
            "AB0001"
          ]
        }
      ]
    }
  ],
  "asset_suggestions": {
    "characters": [
      {
        "entity_uid": "E000001",
        "name": "张三",
        "canonical_name": "张三",
        "display_name": "张三",
        "identity_conflict": {},
        "conflict_group_id": "",
        "priority": "P3",
        "role_tier": "featured",
        "episode_ids": [
          "EP0001"
        ],
        "source_scene_ids": [
          "S0001"
        ],
        "source_group_ids": [
          "AG0001"
        ],
        "source_beat_ids": [
          "AB0001"
        ],
        "block_ids": [
          "EP0001B001"
        ],
        "visual_card_id": "VC000001",
        "voice_card_id": "VO000001",
        "asset_binding_id": "AB000001",
        "visual_anchor_summary": "张三，功能角色",
        "design_prompt_fragments": [],
        "costume_variants": [],
        "state_variants": [],
        "main_scene_candidates": [
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B001",
            "title": "张三走进客栈",
            "kind": "scene",
            "lead_scene_id": "S0001",
            "source_scene_ids": [
              "S0001"
            ],
            "source_group_ids": [
              "AG0001"
            ],
            "source_beat_ids": [
              "AB0001"
            ]
          }
        ],
        "asset_profile": {
          "asset_role": "character",
          "priority": "minor",
          "required_visual_assets": [
            "角色主设图",
            "角色半身参考图"
          ],
          "optional_visual_assets": [],
          "required_voice_assets": [
            "基础音色样例",
            "情绪扩展样例"
          ],
          "usage_hints": [],
          "owner_candidates": [
            "客栈"
          ],
          "variant_keys": [
            "VC000001:costume:default",
            "VO000001:default",
            "VO000001:low",
            "VO000001:high"
          ],
          "prompt_fragments": [
            "走进客栈；拾起铜令",
            "张三",
            "走进客栈",
            "拾起铜令",
            "张三走进客栈"
          ],
          "notes": "Dramart 资产初始化建议位；先补主设，再逐步补变体与音色。"
        },
        "asset_readiness": {
          "reference_image_count": 0,
          "reference_audio_count": 0,
          "lora_binding_count": 0,
          "voice_binding_count": 0,
          "manual_override_count": 0,
          "auto_needs_visual_reference": true,
          "auto_needs_visual_lock": true,
          "auto_needs_voice_reference": true,
          "auto_needs_voice_binding": true,
          "needs_visual_reference": true,
          "needs_visual_lock": true,
          "needs_voice_reference": true,
          "needs_voice_binding": true,
          "visual_seed_text_ready": true,
          "voice_seed_text_ready": true,
          "dramart_asset_spec_ready": true,
          "needs_visual_seed_text": false,
          "needs_voice_seed_text": false,
          "required_visual_asset_count": 2,
          "required_voice_asset_count": 2,
          "entity_needs_review": false,
          "manual_needs_fix": false,
          "manual_blocked": false,
          "manual_needs_fix_scopes": [],
          "manual_blocked_scopes": [],
          "manual_approved_scopes": [],
          "manual_locked_scopes": [],
          "manual_override_flags": {
            "entity_ok": false,
            "visual_ok": false,
            "voice_ok": false,
            "asset_ok": false
          },
          "review_overlay": {
            "scopes": {
              "entity": {
                "status": "todo",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": true
              },
              "visual": {
                "status": "todo",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": true
              },
              "voice": {
                "status": "todo",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": true
              },
              "assets": {
                "status": "todo",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": true
              }
            },
            "blocked_scopes": [],
            "needs_fix_scopes": [],
            "approved_scopes": [],
            "locked_scopes": [],
            "open_scopes": [],
            "manual_blocked": false,
            "manual_needs_fix": false
          },
          "ready_for_dramart": false,
          "ready_for_dramart_init": true
        },
        "review_overlay": {
          "scopes": {
            "entity": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "visual": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "voice": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "assets": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            }
          },
          "blocked_scopes": [],
          "needs_fix_scopes": [],
          "approved_scopes": [],
          "locked_scopes": [],
          "open_scopes": [],
          "manual_blocked": false,
          "manual_needs_fix": false
        },
        "required_visual_assets": [
          "角色主设图",
          "角色半身参考图"
        ],
        "optional_visual_assets": [],
        "required_voice_assets": [
          "基础音色样例",
          "情绪扩展样例"
        ],
        "variant_keys": [
          "VC000001:costume:default",
          "VO000001:default",
          "VO000001:low",
          "VO000001:high"
        ],
        "reason": "角色覆盖 1 集，建议优先建立稳定角色资产。",
        "needs": [
          "缺少参考图",
          "缺少视觉锁定绑定",
          "缺少语音参考",
          "缺少音色绑定"
        ],
        "risk_flags": [
          "visual_reference_gap",
          "voice_reference_gap",
          "voice_binding_gap",
          "visual_lock_gap"
        ],
        "risk_summary": "参考图缺口；语音参考缺口；音色绑定缺口",
        "init_action": "ready",
        "init_action_reason": "当前信息已足够直接进入 Dramart 初始化",
        "source_ref": {
          "episode_ids": [
            "EP0001"
          ],
          "block_ids": [
            "EP0001B001"
          ],
          "source_scene_ids": [
            "S0001"
          ],
          "source_group_ids": [
            "AG0001"
          ],
          "source_beat_ids": [
            "AB0001"
          ],
          "entity_uid": "E000001",
          "visual_card_id": "VC000001",
          "voice_card_id": "VO000001",
          "asset_binding_id": "AB000001"
        }
      },
      {
        "entity_uid": "E000002",
        "name": "李四",
        "canonical_name": "李四",
        "display_name": "李四",
        "identity_conflict": {},
        "conflict_group_id": "",
        "priority": "P4",
        "role_tier": "featured",
        "episode_ids": [
          "EP0001"
        ],
        "source_scene_ids": [
          "S0001"
        ],
        "source_group_ids": [
          "AG0001"
        ],
        "source_beat_ids": [
          "AB0001"
        ],
        "block_ids": [
          "EP0001B001"
        ],
        "visual_card_id": "VC000002",
        "voice_card_id": "VO000002",
        "asset_binding_id": "AB000002",
        "visual_anchor_summary": "李四，功能角色",
        "design_prompt_fragments": [],
        "costume_variants": [],
        "state_variants": [],
        "main_scene_candidates": [
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B001",
            "title": "张三走进客栈",
            "kind": "scene",
            "lead_scene_id": "S0001",
            "source_scene_ids": [
              "S0001"
            ],
            "source_group_ids": [
              "AG0001"
            ],
            "source_beat_ids": [
              "AB0001"
            ]
          }
        ],
        "asset_profile": {
          "asset_role": "character",
          "priority": "background",
          "required_visual_assets": [
            "角色主设图",
            "角色半身参考图"
          ],
          "optional_visual_assets": [],
          "required_voice_assets": [
            "基础音色样例",
            "情绪扩展样例"
          ],
          "usage_hints": [],
          "owner_candidates": [],
          "variant_keys": [
            "VC000002:costume:default",
            "VO000002:default",
            "VO000002:low",
            "VO000002:high"
          ],
          "prompt_fragments": [
            "抬头看张三",
            "李四",
            "李四抬头看他"
          ],
          "notes": "Dramart 资产初始化建议位；先补主设，再逐步补变体与音色。"
        },
        "asset_readiness": {
          "reference_image_count": 0,
          "reference_audio_count": 0,
          "lora_binding_count": 0,
          "voice_binding_count": 0,
          "manual_override_count": 0,
          "auto_needs_visual_reference": true,
          "auto_needs_visual_lock": true,
          "auto_needs_voice_reference": true,
          "auto_needs_voice_binding": true,
          "needs_visual_reference": true,
          "needs_visual_lock": true,
          "needs_voice_reference": true,
          "needs_voice_binding": true,
          "visual_seed_text_ready": true,
          "voice_seed_text_ready": true,
          "dramart_asset_spec_ready": true,
          "needs_visual_seed_text": false,
          "needs_voice_seed_text": false,
          "required_visual_asset_count": 2,
          "required_voice_asset_count": 2,
          "entity_needs_review": false,
          "manual_needs_fix": false,
          "manual_blocked": false,
          "manual_needs_fix_scopes": [],
          "manual_blocked_scopes": [],
          "manual_approved_scopes": [],
          "manual_locked_scopes": [],
          "manual_override_flags": {
            "entity_ok": false,
            "visual_ok": false,
            "voice_ok": false,
            "asset_ok": false
          },
          "review_overlay": {
            "scopes": {
              "entity": {
                "status": "todo",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": true
              },
              "visual": {
                "status": "todo",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": true
              },
              "voice": {
                "status": "todo",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": true
              },
              "assets": {
                "status": "todo",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": true
              }
            },
            "blocked_scopes": [],
            "needs_fix_scopes": [],
            "approved_scopes": [],
            "locked_scopes": [],
            "open_scopes": [],
            "manual_blocked": false,
            "manual_needs_fix": false
          },
          "ready_for_dramart": false,
          "ready_for_dramart_init": true
        },
        "review_overlay": {
          "scopes": {
            "entity": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "visual": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "voice": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "assets": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            }
          },
          "blocked_scopes": [],
          "needs_fix_scopes": [],
          "approved_scopes": [],
          "locked_scopes": [],
          "open_scopes": [],
          "manual_blocked": false,
          "manual_needs_fix": false
        },
        "required_visual_assets": [
          "角色主设图",
          "角色半身参考图"
        ],
        "optional_visual_assets": [],
        "required_voice_assets": [
          "基础音色样例",
          "情绪扩展样例"
        ],
        "variant_keys": [
          "VC000002:costume:default",
          "VO000002:default",
          "VO000002:low",
          "VO000002:high"
        ],
        "reason": "角色覆盖 1 集，建议优先建立稳定角色资产。",
        "needs": [
          "缺少参考图",
          "缺少视觉锁定绑定",
          "缺少语音参考",
          "缺少音色绑定"
        ],
        "risk_flags": [
          "visual_reference_gap",
          "voice_reference_gap",
          "voice_binding_gap",
          "visual_lock_gap"
        ],
        "risk_summary": "参考图缺口；语音参考缺口；音色绑定缺口",
        "init_action": "ready",
        "init_action_reason": "当前信息已足够直接进入 Dramart 初始化",
        "source_ref": {
          "episode_ids": [
            "EP0001"
          ],
          "block_ids": [
            "EP0001B001"
          ],
          "source_scene_ids": [
            "S0001"
          ],
          "source_group_ids": [
            "AG0001"
          ],
          "source_beat_ids": [
            "AB0001"
          ],
          "entity_uid": "E000002",
          "visual_card_id": "VC000002",
          "voice_card_id": "VO000002",
          "asset_binding_id": "AB000002"
        }
      }
    ],
    "locations": [
      {
        "entity_uid": "E000003",
        "name": "客栈",
        "canonical_name": "客栈",
        "display_name": "客栈",
        "identity_conflict": {},
        "conflict_group_id": "",
        "type": "地点",
        "subtype": "",
        "importance": "minor",
        "priority": "P3",
        "location_role": "oneoff_set",
        "episode_ids": [
          "EP0001"
        ],
        "source_scene_ids": [
          "S0001"
        ],
        "source_group_ids": [
          "AG0001"
        ],
        "source_beat_ids": [
          "AB0001"
        ],
        "block_ids": [
          "EP0001B001"
        ],
        "visual_card_id": "VC000003",
        "asset_binding_id": "AB000003",
        "identity_summary": "张三走进",
        "visual_anchor_summary": "张三走进客栈",
        "design_prompt_fragments": [
          "张三走进客栈",
          "客栈"
        ],
        "location_core": [
          "张三走进客栈"
        ],
        "landmark_core": [
          "张三走进客栈"
        ],
        "atmosphere_core": [
          "客栈"
        ],
        "style_constraints": [
          "保持同一实体在跨镜头中的核心身份稳定",
          "保持场景结构、地标和整体氛围一致"
        ],
        "main_scene_candidates": [
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B001",
            "title": "张三走进客栈",
            "kind": "scene",
            "lead_scene_id": "S0001",
            "source_scene_ids": [
              "S0001"
            ],
            "source_group_ids": [
              "AG0001"
            ],
            "source_beat_ids": [
              "AB0001"
            ]
          }
        ],
        "asset_profile": {
          "asset_role": "location",
          "priority": "minor",
          "required_visual_assets": [
            "主场景参考图"
          ],
          "optional_visual_assets": [
            "关键地标补充图"
          ],
          "required_voice_assets": [],
          "usage_hints": [
            "张三走进客栈"
          ],
          "owner_candidates": [
            "张三"
          ],
          "variant_keys": [],
          "prompt_fragments": [
            "张三走进客栈",
            "客栈"
          ],
          "notes": "Dramart 资产初始化建议位；先补主设，再逐步补变体与音色。"
        },
        "asset_readiness": {
          "reference_image_count": 0,
          "reference_audio_count": 0,
          "lora_binding_count": 0,
          "voice_binding_count": 0,
          "manual_override_count": 0,
          "auto_needs_visual_reference": true,
          "auto_needs_visual_lock": true,
          "auto_needs_voice_reference": false,
          "auto_needs_voice_binding": false,
          "needs_visual_reference": true,
          "needs_visual_lock": true,
          "needs_voice_reference": false,
          "needs_voice_binding": false,
          "visual_seed_text_ready": true,
          "voice_seed_text_ready": true,
          "dramart_asset_spec_ready": true,
          "needs_visual_seed_text": false,
          "needs_voice_seed_text": false,
          "required_visual_asset_count": 1,
          "required_voice_asset_count": 0,
          "entity_needs_review": false,
          "manual_needs_fix": false,
          "manual_blocked": false,
          "manual_needs_fix_scopes": [],
          "manual_blocked_scopes": [],
          "manual_approved_scopes": [],
          "manual_locked_scopes": [],
          "manual_override_flags": {
            "entity_ok": false,
            "visual_ok": false,
            "voice_ok": true,
            "asset_ok": false
          },
          "review_overlay": {
            "scopes": {
              "entity": {
                "status": "todo",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": true
              },
              "visual": {
                "status": "todo",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": true
              },
              "voice": {
                "status": "na",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": true,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": false
              },
              "assets": {
                "status": "todo",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": true
              }
            },
            "blocked_scopes": [],
            "needs_fix_scopes": [],
            "approved_scopes": [],
            "locked_scopes": [],
            "open_scopes": [],
            "manual_blocked": false,
            "manual_needs_fix": false
          },
          "ready_for_dramart": false,
          "ready_for_dramart_init": true
        },
        "review_overlay": {
          "scopes": {
            "entity": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "visual": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "voice": {
              "status": "na",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": true,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": false
            },
            "assets": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            }
          },
          "blocked_scopes": [],
          "needs_fix_scopes": [],
          "approved_scopes": [],
          "locked_scopes": [],
          "open_scopes": [],
          "manual_blocked": false,
          "manual_needs_fix": false
        },
        "review_notes": [
          "缺少参考图",
          "缺少视觉锁定绑定"
        ],
        "reason": "覆盖 1 集、命中 1 个剧本块，适合优先建主场景。",
        "risk_flags": [
          "visual_reference_gap",
          "visual_lock_gap"
        ],
        "risk_summary": "参考图缺口；视觉锁定缺口",
        "init_action": "ready",
        "init_action_reason": "当前信息已足够直接进入 Dramart 初始化",
        "source_ref": {
          "episode_ids": [
            "EP0001"
          ],
          "block_ids": [
            "EP0001B001"
          ],
          "source_scene_ids": [
            "S0001"
          ],
          "source_group_ids": [
            "AG0001"
          ],
          "source_beat_ids": [
            "AB0001"
          ],
          "entity_uid": "E000003",
          "visual_card_id": "VC000003",
          "voice_card_id": "",
          "asset_binding_id": "AB000003"
        }
      }
    ],
    "props": [],
    "voices": [
      {
        "entity_uid": "E000001",
        "name": "张三",
        "canonical_name": "张三",
        "display_name": "张三",
        "identity_conflict": {},
        "conflict_group_id": "",
        "priority": "P3",
        "role_tier": "featured",
        "voice_card_id": "VO000001",
        "asset_binding_id": "AB000001",
        "voice_role": "character",
        "episode_ids": [
          "EP0001"
        ],
        "source_scene_ids": [
          "S0001"
        ],
        "source_group_ids": [
          "AG0001"
        ],
        "source_beat_ids": [
          "AB0001"
        ],
        "block_ids": [
          "EP0001B001"
        ],
        "voice_anchor_summary": "张三；角色 / 未知性别呈现 / 未知年龄感；自然人声",
        "timbre": [
          "自然人声",
          "保持跨场景音色稳定"
        ],
        "pitch": "unknown",
        "pace": "medium",
        "speaking_style": [
          "吐字清晰"
        ],
        "delivery_core": [
          "锁定基础音色，不因场景切换改变发声位置",
          "情绪变化优先通过力度和语速调整，不改人声底色"
        ],
        "casting_tags": [
          "角色",
          "未知性别呈现",
          "未知年龄感",
          "自然人声",
          "保持跨场景音色稳定",
          "吐字清晰"
        ],
        "voice_variants": [
          {
            "variant_id": "VO000001:default",
            "label": "常规对白",
            "pace": "medium",
            "pitch": "unknown",
            "timbre": [
              "自然人声",
              "保持跨场景音色稳定"
            ],
            "speaking_style": [
              "吐字清晰"
            ],
            "notes": "默认对白态，用于大多数正常交流场景。"
          },
          {
            "variant_id": "VO000001:low",
            "label": "低强度对白",
            "pace": "slow",
            "pitch": "unknown",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "压低力度"
            ],
            "notes": "适用于密谈、独白或收束段落。"
          },
          {
            "variant_id": "VO000001:high",
            "label": "高强度对白",
            "pace": "fast",
            "pitch": "unknown",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "提高爆发力"
            ],
            "notes": "适用于冲突、喊叫或高压时刻。"
          }
        ],
        "asset_profile": {
          "asset_role": "character",
          "priority": "minor",
          "required_visual_assets": [
            "角色主设图",
            "角色半身参考图"
          ],
          "optional_visual_assets": [],
          "required_voice_assets": [
            "基础音色样例",
            "情绪扩展样例"
          ],
          "usage_hints": [],
          "owner_candidates": [
            "客栈"
          ],
          "variant_keys": [
            "VC000001:costume:default",
            "VO000001:default",
            "VO000001:low",
            "VO000001:high"
          ],
          "prompt_fragments": [
            "走进客栈；拾起铜令",
            "张三",
            "走进客栈",
            "拾起铜令",
            "张三走进客栈"
          ],
          "notes": "Dramart 资产初始化建议位；先补主设，再逐步补变体与音色。"
        },
        "asset_readiness": {
          "reference_image_count": 0,
          "reference_audio_count": 0,
          "lora_binding_count": 0,
          "voice_binding_count": 0,
          "manual_override_count": 0,
          "auto_needs_visual_reference": true,
          "auto_needs_visual_lock": true,
          "auto_needs_voice_reference": true,
          "auto_needs_voice_binding": true,
          "needs_visual_reference": true,
          "needs_visual_lock": true,
          "needs_voice_reference": true,
          "needs_voice_binding": true,
          "visual_seed_text_ready": true,
          "voice_seed_text_ready": true,
          "dramart_asset_spec_ready": true,
          "needs_visual_seed_text": false,
          "needs_voice_seed_text": false,
          "required_visual_asset_count": 2,
          "required_voice_asset_count": 2,
          "entity_needs_review": false,
          "manual_needs_fix": false,
          "manual_blocked": false,
          "manual_needs_fix_scopes": [],
          "manual_blocked_scopes": [],
          "manual_approved_scopes": [],
          "manual_locked_scopes": [],
          "manual_override_flags": {
            "entity_ok": false,
            "visual_ok": false,
            "voice_ok": false,
            "asset_ok": false
          },
          "review_overlay": {
            "scopes": {
              "entity": {
                "status": "todo",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": true
              },
              "visual": {
                "status": "todo",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": true
              },
              "voice": {
                "status": "todo",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": true
              },
              "assets": {
                "status": "todo",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": true
              }
            },
            "blocked_scopes": [],
            "needs_fix_scopes": [],
            "approved_scopes": [],
            "locked_scopes": [],
            "open_scopes": [],
            "manual_blocked": false,
            "manual_needs_fix": false
          },
          "ready_for_dramart": false,
          "ready_for_dramart_init": true
        },
        "review_overlay": {
          "scopes": {
            "entity": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "visual": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "voice": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "assets": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            }
          },
          "blocked_scopes": [],
          "needs_fix_scopes": [],
          "approved_scopes": [],
          "locked_scopes": [],
          "open_scopes": [],
          "manual_blocked": false,
          "manual_needs_fix": false
        },
        "needs": [
          "补角色语音参考",
          "补角色音色绑定"
        ],
        "risk_flags": [
          "visual_reference_gap",
          "voice_reference_gap",
          "voice_binding_gap",
          "visual_lock_gap"
        ],
        "risk_summary": "参考图缺口；语音参考缺口；音色绑定缺口",
        "init_action": "ready",
        "init_action_reason": "当前信息已足够直接进入 Dramart 初始化",
        "source_ref": {
          "episode_ids": [
            "EP0001"
          ],
          "block_ids": [
            "EP0001B001"
          ],
          "source_scene_ids": [
            "S0001"
          ],
          "source_group_ids": [
            "AG0001"
          ],
          "source_beat_ids": [
            "AB0001"
          ],
          "entity_uid": "E000001",
          "visual_card_id": "",
          "voice_card_id": "VO000001",
          "asset_binding_id": "AB000001"
        },
        "main_scene_candidates": [
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B001",
            "title": "张三走进客栈",
            "kind": "scene",
            "lead_scene_id": "S0001",
            "source_scene_ids": [
              "S0001"
            ],
            "source_group_ids": [
              "AG0001"
            ],
            "source_beat_ids": [
              "AB0001"
            ]
          }
        ]
      },
      {
        "entity_uid": "E000002",
        "name": "李四",
        "canonical_name": "李四",
        "display_name": "李四",
        "identity_conflict": {},
        "conflict_group_id": "",
        "priority": "P4",
        "role_tier": "featured",
        "voice_card_id": "VO000002",
        "asset_binding_id": "AB000002",
        "voice_role": "character",
        "episode_ids": [
          "EP0001"
        ],
        "source_scene_ids": [
          "S0001"
        ],
        "source_group_ids": [
          "AG0001"
        ],
        "source_beat_ids": [
          "AB0001"
        ],
        "block_ids": [
          "EP0001B001"
        ],
        "voice_anchor_summary": "李四；角色 / 未知性别呈现 / 未知年龄感；自然人声",
        "timbre": [
          "自然人声",
          "保持跨场景音色稳定"
        ],
        "pitch": "unknown",
        "pace": "medium",
        "speaking_style": [
          "吐字清晰"
        ],
        "delivery_core": [
          "锁定基础音色，不因场景切换改变发声位置",
          "情绪变化优先通过力度和语速调整，不改人声底色"
        ],
        "casting_tags": [
          "角色",
          "未知性别呈现",
          "未知年龄感",
          "自然人声",
          "保持跨场景音色稳定",
          "吐字清晰"
        ],
        "voice_variants": [
          {
            "variant_id": "VO000002:default",
            "label": "常规对白",
            "pace": "medium",
            "pitch": "unknown",
            "timbre": [
              "自然人声",
              "保持跨场景音色稳定"
            ],
            "speaking_style": [
              "吐字清晰"
            ],
            "notes": "默认对白态，用于大多数正常交流场景。"
          },
          {
            "variant_id": "VO000002:low",
            "label": "低强度对白",
            "pace": "slow",
            "pitch": "unknown",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "压低力度"
            ],
            "notes": "适用于密谈、独白或收束段落。"
          },
          {
            "variant_id": "VO000002:high",
            "label": "高强度对白",
            "pace": "fast",
            "pitch": "unknown",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "提高爆发力"
            ],
            "notes": "适用于冲突、喊叫或高压时刻。"
          }
        ],
        "asset_profile": {
          "asset_role": "character",
          "priority": "background",
          "required_visual_assets": [
            "角色主设图",
            "角色半身参考图"
          ],
          "optional_visual_assets": [],
          "required_voice_assets": [
            "基础音色样例",
            "情绪扩展样例"
          ],
          "usage_hints": [],
          "owner_candidates": [],
          "variant_keys": [
            "VC000002:costume:default",
            "VO000002:default",
            "VO000002:low",
            "VO000002:high"
          ],
          "prompt_fragments": [
            "抬头看张三",
            "李四",
            "李四抬头看他"
          ],
          "notes": "Dramart 资产初始化建议位；先补主设，再逐步补变体与音色。"
        },
        "asset_readiness": {
          "reference_image_count": 0,
          "reference_audio_count": 0,
          "lora_binding_count": 0,
          "voice_binding_count": 0,
          "manual_override_count": 0,
          "auto_needs_visual_reference": true,
          "auto_needs_visual_lock": true,
          "auto_needs_voice_reference": true,
          "auto_needs_voice_binding": true,
          "needs_visual_reference": true,
          "needs_visual_lock": true,
          "needs_voice_reference": true,
          "needs_voice_binding": true,
          "visual_seed_text_ready": true,
          "voice_seed_text_ready": true,
          "dramart_asset_spec_ready": true,
          "needs_visual_seed_text": false,
          "needs_voice_seed_text": false,
          "required_visual_asset_count": 2,
          "required_voice_asset_count": 2,
          "entity_needs_review": false,
          "manual_needs_fix": false,
          "manual_blocked": false,
          "manual_needs_fix_scopes": [],
          "manual_blocked_scopes": [],
          "manual_approved_scopes": [],
          "manual_locked_scopes": [],
          "manual_override_flags": {
            "entity_ok": false,
            "visual_ok": false,
            "voice_ok": false,
            "asset_ok": false
          },
          "review_overlay": {
            "scopes": {
              "entity": {
                "status": "todo",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": true
              },
              "visual": {
                "status": "todo",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": true
              },
              "voice": {
                "status": "todo",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": true
              },
              "assets": {
                "status": "todo",
                "locked": false,
                "reviewer": "",
                "review_note": "",
                "labels": [],
                "updated_at": "",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": true
              }
            },
            "blocked_scopes": [],
            "needs_fix_scopes": [],
            "approved_scopes": [],
            "locked_scopes": [],
            "open_scopes": [],
            "manual_blocked": false,
            "manual_needs_fix": false
          },
          "ready_for_dramart": false,
          "ready_for_dramart_init": true
        },
        "review_overlay": {
          "scopes": {
            "entity": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "visual": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "voice": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            },
            "assets": {
              "status": "todo",
              "locked": false,
              "reviewer": "",
              "review_note": "",
              "labels": [],
              "updated_at": "",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": true
            }
          },
          "blocked_scopes": [],
          "needs_fix_scopes": [],
          "approved_scopes": [],
          "locked_scopes": [],
          "open_scopes": [],
          "manual_blocked": false,
          "manual_needs_fix": false
        },
        "needs": [
          "补角色语音参考",
          "补角色音色绑定"
        ],
        "risk_flags": [
          "visual_reference_gap",
          "voice_reference_gap",
          "voice_binding_gap",
          "visual_lock_gap"
        ],
        "risk_summary": "参考图缺口；语音参考缺口；音色绑定缺口",
        "init_action": "ready",
        "init_action_reason": "当前信息已足够直接进入 Dramart 初始化",
        "source_ref": {
          "episode_ids": [
            "EP0001"
          ],
          "block_ids": [
            "EP0001B001"
          ],
          "source_scene_ids": [
            "S0001"
          ],
          "source_group_ids": [
            "AG0001"
          ],
          "source_beat_ids": [
            "AB0001"
          ],
          "entity_uid": "E000002",
          "visual_card_id": "",
          "voice_card_id": "VO000002",
          "asset_binding_id": "AB000002"
        },
        "main_scene_candidates": [
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B001",
            "title": "张三走进客栈",
            "kind": "scene",
            "lead_scene_id": "S0001",
            "source_scene_ids": [
              "S0001"
            ],
            "source_group_ids": [
              "AG0001"
            ],
            "source_beat_ids": [
              "AB0001"
            ]
          }
        ]
      }
    ]
  },
  "asset_action_summary": {
    "characters": {
      "review_required": 0,
      "must_build": 0,
      "should_build": 0,
      "ready": 2
    },
    "locations": {
      "review_required": 0,
      "must_build": 0,
      "should_build": 0,
      "ready": 1
    },
    "props": {
      "review_required": 0,
      "must_build": 0,
      "should_build": 0,
      "ready": 0
    },
    "voices": {
      "review_required": 0,
      "must_build": 0,
      "should_build": 0,
      "ready": 2
    }
  },
  "risk_summary": {
    "total_risk_item_count": 18,
    "risk_flag_count": 4,
    "flags": [
      {
        "flag": "visual_lock_gap",
        "count": 5,
        "asset_types": [
          "character",
          "location",
          "voice"
        ],
        "examples": [
          "张三",
          "李四",
          "客栈"
        ]
      },
      {
        "flag": "visual_reference_gap",
        "count": 5,
        "asset_types": [
          "character",
          "location",
          "voice"
        ],
        "examples": [
          "张三",
          "李四",
          "客栈"
        ]
      },
      {
        "flag": "voice_binding_gap",
        "count": 4,
        "asset_types": [
          "character",
          "voice"
        ],
        "examples": [
          "张三",
          "李四"
        ]
      },
      {
        "flag": "voice_reference_gap",
        "count": 4,
        "asset_types": [
          "character",
          "voice"
        ],
        "examples": [
          "张三",
          "李四"
        ]
      }
    ]
  },
  "review_checklist": [
    {
      "check_id": "CHK0001",
      "category": "character_asset",
      "severity": "warning",
      "status": "todo",
      "title": "角色缺参考图：张三",
      "detail": "该角色尚未提供 reference_images，Dramart 项目初始化时容易出现形象漂移。",
      "target_type": "character",
      "target_id": "E000001",
      "source_refs": [
        "EP0001"
      ],
      "recommended_action": "先补主形象图，再决定是否做 LoRA 或角色锁定。"
    },
    {
      "check_id": "CHK0002",
      "category": "voice_binding",
      "severity": "warning",
      "status": "todo",
      "title": "角色缺音色绑定：张三",
      "detail": "该角色已有声音卡或语音角色设定，但还没有 provider voice 绑定。",
      "target_type": "character",
      "target_id": "E000001",
      "source_refs": [
        "EP0001"
      ],
      "recommended_action": "在 Dramart 或配音侧先绑定稳定音色。"
    },
    {
      "check_id": "CHK0003",
      "category": "character_asset",
      "severity": "warning",
      "status": "todo",
      "title": "角色缺参考图：李四",
      "detail": "该角色尚未提供 reference_images，Dramart 项目初始化时容易出现形象漂移。",
      "target_type": "character",
      "target_id": "E000002",
      "source_refs": [
        "EP0001"
      ],
      "recommended_action": "先补主形象图，再决定是否做 LoRA 或角色锁定。"
    },
    {
      "check_id": "CHK0004",
      "category": "voice_binding",
      "severity": "warning",
      "status": "todo",
      "title": "角色缺音色绑定：李四",
      "detail": "该角色已有声音卡或语音角色设定，但还没有 provider voice 绑定。",
      "target_type": "character",
      "target_id": "E000002",
      "source_refs": [
        "EP0001"
      ],
      "recommended_action": "在 Dramart 或配音侧先绑定稳定音色。"
    },
    {
      "check_id": "CHK0005",
      "category": "location_asset",
      "severity": "info",
      "status": "todo",
      "title": "场景建议补参考：客栈",
      "detail": "主场景尚未准备参考图，后续搭建分镜时可能缺乏统一视觉锚点。",
      "target_type": "location",
      "target_id": "E000003",
      "source_refs": [
        "EP0001"
      ],
      "recommended_action": "优先补一张主场景参考图或情绪板。"
    }
  ],
  "upload_bundle": {
    "contract_version": "dramart_upload_bundle.v3",
    "content_policy": {
      "contract_version": "dramart_package_scope.v1",
      "package_roles": [
        "export_layer",
        "asset_suggestion_layer",
        "risk_reveal_layer"
      ],
      "allowed_derivations": [
        "字段兜底与格式整形",
        "episode_upload_markdown 聚合输出",
        "asset_suggestion / readiness / risk overlay 派生",
        "upload markdown 的大纲与导览拼装"
      ],
      "forbidden_repairs": [
        "改写 screenplay_text 正文主体",
        "重写 title / opening_hook / ending_hook 主文案",
        "用 package 文案覆盖 episode 主角色排序"
      ],
      "source_of_truth": {
        "screenplay": "03d_screenplay.json",
        "entity_registry": "02e_entity_registry.json",
        "visual_cards": "02f_entity_visual_cards.json",
        "voice_cards": "02g_entity_voice_cards.json",
        "asset_bindings": "02h_entity_assets.json"
      }
    },
    "upload_script_filename": "03e_dramart_upload_script.md",
    "upload_script_markdown": "# sample_novel\n\n## 故事大纲\n故事核心：张三走进客栈，李四抬头看他，张三触碰到铜令并感知到其不寻常的瞬间，建立场景、引入主要人物。\n核心钩子：张三走进客栈，李四抬头看他。\n\n## 主要人物\n- 张三：功能角色\n- 李四：功能角色\n\n## 分集导览\n- 第01集 内心状态从日常转为警觉：张三走进客栈，李四抬头看他，张三触碰到铜令并感知到其不寻常的瞬间，建立场景、引入主要人物。\n\n## 正文剧本\n\n# 第01集 内心状态从日常转为警觉\n\n本集围绕张三、李四展开，主要场面落在客栈。张三走进客栈，李四抬头看他，张三触碰到铜令并感知到其不寻常的瞬间，建立场景、引入主要人物。\n建立场景、引入主要人物，潜在的、未言明的紧张与对立（通过眼神传达），张三触碰到铜令并感知到其不寻常的瞬间。\n本集看点集中在“张三走进客栈，李四抬头看他。”，并收在“张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。”。\n\n## 场次01 张三走进客栈\n\n场面落在客栈，出场人物有张三、李四。\n这一场先把张三走进客栈，李四抬头看他推到台前。\n场面里先见张三走进客栈，紧跟着把李四抬头目光如刀压出来。\n临到场尾，张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。\n本场推进：张三走进客栈，李四抬头看他，潜在的、未言明的紧张与对立（通过眼神传达），张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。\n场面目标：建立场景、引入主要人物，并通过一个充满张力的对视瞬间暗示潜在的冲突。\n必留动作：张三走进客栈；李四抬头目光如刀；天色将暮；张三拾起铜令的动作；角色不安的情绪反应。\n连续抓手：角色连续性：张三 / 李四；地点连续性：客栈；时间连续性：黄昏；时间连续性：紧接前一场的‘清晨’。\n前后承接上，要把张三 / 李四与客栈继续压在同一股气口里。\n\n（客栈）\n张三走进客栈，李四抬头目光如刀，天色将暮，张三拾起铜令，李四站在人堆里，脸色一下子就绷住了。\n张三走进客栈。\n李四站在人堆里，脸色一下子就绷住了。\n李四抬头目光如刀。\n张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。\n张三走进客栈，李四抬头看他。",
    "upload_ready": true,
    "recommended_upload_mode": "single_file",
    "validation": {
      "max_chars_per_upload": 100000,
      "single_file_char_count": 918,
      "single_file_within_limit": true,
      "episode_count": 1,
      "part_count": 1,
      "oversized_episode_count": 0,
      "oversized_part_count": 0,
      "source_screenplay_generation_status": "ok",
      "source_screenplay_blocked_block_count": 0,
      "source_screenplay_blocked_episode_count": 0,
      "source_screenplay_placeholder_block_count": 0
    },
    "source_screenplay_generation": {
      "generation_status": "ok",
      "blocked_block_count": 0,
      "blocked_episode_count": 0,
      "placeholder_block_count": 0,
      "generation_error_kinds": []
    },
    "episode_uploads": [
      {
        "episode_id": "EP0001",
        "title": "第01集 内心状态从日常转为警觉",
        "filename": "03e_dramart_upload_EP0001.md",
        "char_count": 710,
        "block_count": 1,
        "time_modes": [
          "mainline"
        ],
        "source_scene_ids": [
          "S0001"
        ],
        "source_group_ids": [
          "AG0001"
        ],
        "source_beat_ids": [
          "AB0001"
        ],
        "markdown": "# 第01集 内心状态从日常转为警觉\n\n本集围绕张三、李四展开，主要场面落在客栈。张三走进客栈，李四抬头看他，张三触碰到铜令并感知到其不寻常的瞬间，建立场景、引入主要人物。\n建立场景、引入主要人物，潜在的、未言明的紧张与对立（通过眼神传达），张三触碰到铜令并感知到其不寻常的瞬间。\n本集看点集中在“张三走进客栈，李四抬头看他。”，并收在“张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。”。\n\n## 场次01 张三走进客栈\n\n场面落在客栈，出场人物有张三、李四。\n这一场先把张三走进客栈，李四抬头看他推到台前。\n场面里先见张三走进客栈，紧跟着把李四抬头目光如刀压出来。\n临到场尾，张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。\n本场推进：张三走进客栈，李四抬头看他，潜在的、未言明的紧张与对立（通过眼神传达），张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。\n场面目标：建立场景、引入主要人物，并通过一个充满张力的对视瞬间暗示潜在的冲突。\n必留动作：张三走进客栈；李四抬头目光如刀；天色将暮；张三拾起铜令的动作；角色不安的情绪反应。\n连续抓手：角色连续性：张三 / 李四；地点连续性：客栈；时间连续性：黄昏；时间连续性：紧接前一场的‘清晨’。\n前后承接上，要把张三 / 李四与客栈继续压在同一股气口里。\n\n（客栈）\n张三走进客栈，李四抬头目光如刀，天色将暮，张三拾起铜令，李四站在人堆里，脸色一下子就绷住了。\n张三走进客栈。\n李四站在人堆里，脸色一下子就绷住了。\n李四抬头目光如刀。\n张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。\n张三走进客栈，李四抬头看他。",
        "source_ref": {
          "episode_ids": [
            "EP0001"
          ],
          "block_ids": [],
          "source_scene_ids": [
            "S0001"
          ],
          "source_group_ids": [
            "AG0001"
          ],
          "source_beat_ids": [
            "AB0001"
          ],
          "entity_uid": "",
          "visual_card_id": "",
          "voice_card_id": "",
          "asset_binding_id": ""
        }
      }
    ],
    "upload_parts": [
      {
        "part_id": "UP001",
        "filename": "03e_dramart_upload_part_01_EP0001_EP0001.md",
        "start_episode_id": "EP0001",
        "end_episode_id": "EP0001",
        "episode_ids": [
          "EP0001"
        ],
        "char_count": 710,
        "within_limit": true,
        "markdown": "# 第01集 内心状态从日常转为警觉\n\n本集围绕张三、李四展开，主要场面落在客栈。张三走进客栈，李四抬头看他，张三触碰到铜令并感知到其不寻常的瞬间，建立场景、引入主要人物。\n建立场景、引入主要人物，潜在的、未言明的紧张与对立（通过眼神传达），张三触碰到铜令并感知到其不寻常的瞬间。\n本集看点集中在“张三走进客栈，李四抬头看他。”，并收在“张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。”。\n\n## 场次01 张三走进客栈\n\n场面落在客栈，出场人物有张三、李四。\n这一场先把张三走进客栈，李四抬头看他推到台前。\n场面里先见张三走进客栈，紧跟着把李四抬头目光如刀压出来。\n临到场尾，张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。\n本场推进：张三走进客栈，李四抬头看他，潜在的、未言明的紧张与对立（通过眼神传达），张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。\n场面目标：建立场景、引入主要人物，并通过一个充满张力的对视瞬间暗示潜在的冲突。\n必留动作：张三走进客栈；李四抬头目光如刀；天色将暮；张三拾起铜令的动作；角色不安的情绪反应。\n连续抓手：角色连续性：张三 / 李四；地点连续性：客栈；时间连续性：黄昏；时间连续性：紧接前一场的‘清晨’。\n前后承接上，要把张三 / 李四与客栈继续压在同一股气口里。\n\n（客栈）\n张三走进客栈，李四抬头目光如刀，天色将暮，张三拾起铜令，李四站在人堆里，脸色一下子就绷住了。\n张三走进客栈。\n李四站在人堆里，脸色一下子就绷住了。\n李四抬头目光如刀。\n张三触碰到铜令并感知到其不寻常的瞬间，内心状态从日常转为警觉。\n张三走进客栈，李四抬头看他。",
        "source_ref": {
          "episode_ids": [
            "EP0001"
          ],
          "block_ids": [],
          "source_scene_ids": [
            "S0001"
          ],
          "source_group_ids": [
            "AG0001"
          ],
          "source_beat_ids": [
            "AB0001"
          ],
          "entity_uid": "",
          "visual_card_id": "",
          "voice_card_id": "",
          "asset_binding_id": ""
        }
      }
    ],
    "warnings": [],
    "notes": [
      "上传正文建议使用 upload_bundle 中的上传版正文，不混入 checklist 或资产说明。",
      "若 recommended_upload_mode=split_parts，请按 upload_parts 顺序逐段上传。",
      "其余角色、场景、道具与音色信息请从 dramart_package.json 中读取。"
    ],
    "source_ref": {
      "episode_ids": [
        "EP0001"
      ],
      "block_ids": [],
      "source_scene_ids": [
        "S0001"
      ],
      "source_group_ids": [
        "AG0001"
      ],
      "source_beat_ids": [
        "AB0001"
      ],
      "entity_uid": "",
      "visual_card_id": "",
      "voice_card_id": "",
      "asset_binding_id": ""
    },
    "readiness_summary": {
      "status": "pass",
      "issue_count": 0,
      "fail_count": 0,
      "warn_count": 0,
      "info_count": 0,
      "episode_count": 1,
      "block_count": 1,
      "character_bio_count": 2,
      "named_episode_count": 1,
      "episode_with_summary_count": 1,
      "episode_with_opening_hook_count": 1,
      "episode_with_ending_hook_count": 1,
      "episode_with_upload_text_count": 1,
      "recommended_upload_mode": "single_file",
      "upload_script_char_count": 918,
      "single_file_within_limit": true,
      "part_count": 1,
      "oversized_episode_count": 0,
      "oversized_part_count": 0,
      "has_global_preface": true,
      "time_layer_annotation_recommended": false,
      "source_screenplay_generation_status": "ok",
      "source_screenplay_blocked_block_count": 0,
      "source_screenplay_blocked_episode_count": 0,
      "source_screenplay_placeholder_block_count": 0
    },
    "readiness_issues": []
  }
}