{
  "meta": {
    "package_version": "dramart_package.v3",
    "content_policy_version": "dramart_package_scope.v1",
    "project_title": "道祖是克苏鲁",
    "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": 3,
    "source_scene_ref_count": 4,
    "character_bio_count": 4,
    "location_asset_count": 3,
    "prop_asset_count": 1,
    "voice_suggestion_count": 4,
    "review_checklist_count": 15,
    "upload_script_char_count": 1794,
    "upload_part_count": 1,
    "single_file_upload_ready": true,
    "upload_ready_status": "pass",
    "upload_ready_issue_count": 1,
    "upload_ready_fail_count": 0,
    "upload_ready_warn_count": 0,
    "asset_ready_status": "warn",
    "asset_ready_issue_count": 1,
    "asset_ready_fail_count": 0,
    "asset_ready_warn_count": 1,
    "missing_character_visual_count": 0,
    "missing_character_voice_count": 0,
    "manual_review_blocked_character_count": 0,
    "manual_review_needs_fix_character_count": 1,
    "manual_review_locked_scope_count": 1,
    "skipped_unbound_character_ref_count": 0,
    "risk_item_count": 44,
    "risk_flag_count": 6,
    "entity_review_summary": {
      "entity": {
        "total": 17,
        "applicable": 17,
        "todo": 16,
        "in_progress": 0,
        "approved": 1,
        "needs_fix": 0,
        "blocked": 0,
        "na": 0,
        "locked": 1,
        "open": 16
      },
      "visual": {
        "total": 17,
        "applicable": 17,
        "todo": 17,
        "in_progress": 0,
        "approved": 0,
        "needs_fix": 0,
        "blocked": 0,
        "na": 0,
        "locked": 0,
        "open": 17
      },
      "voice": {
        "total": 17,
        "applicable": 7,
        "todo": 6,
        "in_progress": 0,
        "approved": 0,
        "needs_fix": 1,
        "blocked": 0,
        "na": 10,
        "locked": 0,
        "open": 7
      },
      "assets": {
        "total": 17,
        "applicable": 17,
        "todo": 17,
        "in_progress": 0,
        "approved": 0,
        "needs_fix": 0,
        "blocked": 0,
        "na": 0,
        "locked": 0,
        "open": 17
      },
      "event_count": 2
    },
    "time_mode_counts": {
      "unknown": 1,
      "mainline": 2,
      "flashback": 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": "道祖是克苏鲁",
    "format": "Dramart 漫剧/短剧输入包",
    "premise": "穿越者李凡在险恶的墨竹山醒来，被迫接受残酷的修仙法则，并激活了一个看似无用、甚至反噬的“心理健康维护系统”。",
    "core_hook": "险峻山峦，墨色竹海翻涌，毒瘴弥漫。镜头推进，一片人力开凿的平地上，一尊八臂六首的诡异魔尊法相森然矗立——谁在此建坛？为何建坛？",
    "episode_count": 1,
    "block_count": 3,
    "source_scene_ref_count": 4,
    "time_mode_counts": {
      "unknown": 1,
      "mainline": 2,
      "flashback": 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": "冰冷的系统提示音在李凡脑中响起：“心情下降1点。”他握着老道扔来的芝麻饼，愣在原地，第一次意识到这个伴随穿越而来的“金手指”，似乎并非祝福。",
      "block_count": 3,
      "block_ids": [
        "EP0001B001",
        "EP0001B002",
        "EP0001B003"
      ],
      "source_scene_ids": [
        "S0001",
        "S0002",
        "S0003",
        "S0004"
      ],
      "source_group_ids": [
        "AG0001",
        "AG0002",
        "AG0003"
      ],
      "source_beat_ids": [
        "AB0001",
        "AB0002",
        "AB0003"
      ],
      "time_modes": [
        "unknown",
        "mainline",
        "flashback"
      ],
      "character_names": [
        "老道",
        "修士",
        "童子",
        "李凡"
      ],
      "character_display_names": [
        "老道",
        "修士",
        "童子",
        "李凡"
      ],
      "character_entity_uids": [
        "E000001",
        "E000011",
        "E000012",
        "E000002"
      ],
      "location_names": [
        "墨竹山",
        "瑶光洞",
        "墨竹山法坛"
      ],
      "location_display_names": [
        "墨竹山",
        "瑶光洞",
        "墨竹山法坛"
      ],
      "location_entity_uids": [
        "E000003",
        "E000008"
      ],
      "episode_markdown": "# 第01集 魔尊法坛\n\n一句话梗概：穿越者李凡在险恶的墨竹山醒来，被迫接受残酷的修仙法则，并激活了一个看似无用、甚至反噬的“心理健康维护系统”。\n剧情摘要：墨竹山深处，一座诡异的魔尊法坛矗立在毒瘴竹海之中。三名修士将一群童子送至瑶光洞，交给一位神秘老道。童子李凡是一名穿越者，他被迫接受现实，并尝试呼唤系统。系统终于出现，却是一个“心理健康维护系统”，在李凡烦躁咆哮时，老道有所察觉。李凡无奈选择了一项先天气运，系统随即宣布其心情下降，让他初次尝到这个“金手指”的代价。\n开场钩子：险峻山峦，墨色竹海翻涌，毒瘴弥漫。镜头推进，一片人力开凿的平地上，一尊八臂六首的诡异魔尊法相森然矗立——谁在此建坛？为何建坛？\n结尾钩子：冰冷的系统提示音在李凡脑中响起：“心情下降1点。”他握着老道扔来的芝麻饼，愣在原地，第一次意识到这个伴随穿越而来的“金手指”，似乎并非祝福。\n\n## 险山魔坛\n\n【墨竹山 外 日】\n\n△ 远景，两山十四峰如獠牙刺天，墨色的竹海在林间翻涌，毒瘴如纱，隐约传来妖兽的低吼。\n\n△ 镜头穿过险峻的山峦与密林，最终落在一片突兀的平地上。地面有明显的人力开凿痕迹。\n\n△ 平地中央，矗立着一座石制法坛。法坛之上，是一尊造型诡异、生有八臂六首的魔尊石像，面目狰狞，俯瞰着这片蛮荒之地。\n\n（氛围：危险，神秘，充满未解之谜）\n\n转场提示：转场至瑶光洞，时间稍早。\n\n## 童子入门\n\n【瑶光洞 外 日】\n\n△ 三名修士打扮的男子，领着七八个面色惶恐的童子（约十岁左右）走来。其中一人正是李凡，眼神迷茫中带着震惊。\n\n△ 一名邋遢老道蹲在洞口，抬眼看了看。\n\n修士甲（对老道拱手）：人送来了。都是按规矩挑的，有灵根的，有道心的，还有……疑似身怀魔胎的。\n\n修士乙（低声补充）：玉蟾婆那老妖最近吃人凶，这些童子是从她嘴边抢下来的。\n\n△ 老道点点头，没说话，只是用手里的木棍在地上画了一个大圈。\n\n老道（声音沙哑）：入夜后，待在圈里。出圈者，生死自负。\n\n△ 童子们吓得缩了缩。李凡（内心OS）：穿越？修仙世界？开什么玩笑！这老道看起来就不像好人……系统！系统你在吗？！\n\n△ 李凡观察着老道，心中评估着威胁，最终深吸一口气。（内心OS）：算了，既来之则安之。系统，给我出来！\n\n转场提示：李凡的呼唤得到了回应，系统界面在他眼前浮现。\n\n## 系统初现\n\n【瑶光洞 外 日】\n\n△ 李凡眼前突然浮现出一片半透明的蓝色光幕，伴有轻微的电子音效。\n\n△ 光幕上显示文字：“欢迎使用‘心理健康维护系统’。检测到宿主处于高压环境，请选择一项先天气运，以辅助心态调整。”\n\n△ 下方列出几个选项：【镇静一点】、【乐观些许】、【麻木三分】等。\n\n李凡（愣住，内心咆哮）：心理健康维护系统？！我要的是修仙功法！是金手指！不是心理辅导！\n\n△ 李凡因烦躁和失望，不自觉地低吼出声。\n\n△ 蹲在洞口的老道忽然转过头，浑浊的眼睛瞪了李凡一眼。\n\n△ 老道手一扬，一块干硬的芝麻饼扔到李凡脚边。\n\n李凡（吓了一跳，赶紧低头）：对、对不起……\n\n△ 李凡看着地上的饼，有些发愣。\n\n△ 系统光幕上，“镇静一点”的选项被自动高亮选中。\n\n系统提示音（在李凡脑中响起）：先天气运【镇静一点】已确认绑定。温馨提示：检测到宿主产生剧烈情绪波动，心情下降1点。\n\n△ 李凡握着芝麻饼，表情僵住，一股莫名的低落感涌上心头。",
      "episode_upload_markdown": "# 第01集 魔尊法坛\n\n主要人物：老道、修士、童子、李凡\n主要场景：墨竹山、瑶光洞、墨竹山法坛\n一句话梗概：穿越者李凡在险恶的墨竹山醒来，被迫接受残酷的修仙法则，并激活了一个看似无用、甚至反噬的“心理健康维护系统”。\n剧情摘要：墨竹山深处，一座诡异的魔尊法坛矗立在毒瘴竹海之中。三名修士将一群童子送至瑶光洞，交给一位神秘老道。童子李凡是一名穿越者，他被迫接受现实，并尝试呼唤系统。系统终于出现，却是一个“心理健康维护系统”，在李凡烦躁咆哮时，老道有所察觉。李凡无奈选择了一项先天气运，系统随即宣布其心情下降，让他初次尝到这个“金手指”的代价。\n开场钩子：险峻山峦，墨色竹海翻涌，毒瘴弥漫。镜头推进，一片人力开凿的平地上，一尊八臂六首的诡异魔尊法相森然矗立——谁在此建坛？为何建坛？\n结尾钩子：冰冷的系统提示音在李凡脑中响起：“心情下降1点。”他握着老道扔来的芝麻饼，愣在原地，第一次意识到这个伴随穿越而来的“金手指”，似乎并非祝福。\n\n## 场次01 险山魔坛\n\n场景：墨竹山\n\n【墨竹山 外 日】\n\n△ 远景，两山十四峰如獠牙刺天，墨色的竹海在林间翻涌，毒瘴如纱，隐约传来妖兽的低吼。\n\n△ 镜头穿过险峻的山峦与密林，最终落在一片突兀的平地上。地面有明显的人力开凿痕迹。\n\n△ 平地中央，矗立着一座石制法坛。法坛之上，是一尊造型诡异、生有八臂六首的魔尊石像，面目狰狞，俯瞰着这片蛮荒之地。\n\n（氛围：危险，神秘，充满未解之谜）\n\n转场：转场至瑶光洞，时间稍早。\n\n## 场次02 童子入门\n\n时间层：flashback\n人物：老道、修士、童子、李凡\n场景：瑶光洞、墨竹山法坛\n\n【瑶光洞 外 日】\n\n△ 三名修士打扮的男子，领着七八个面色惶恐的童子（约十岁左右）走来。其中一人正是李凡，眼神迷茫中带着震惊。\n\n△ 一名邋遢老道蹲在洞口，抬眼看了看。\n\n修士甲（对老道拱手）：人送来了。都是按规矩挑的，有灵根的，有道心的，还有……疑似身怀魔胎的。\n\n修士乙（低声补充）：玉蟾婆那老妖最近吃人凶，这些童子是从她嘴边抢下来的。\n\n△ 老道点点头，没说话，只是用手里的木棍在地上画了一个大圈。\n\n老道（声音沙哑）：入夜后，待在圈里。出圈者，生死自负。\n\n△ 童子们吓得缩了缩。李凡（内心OS）：穿越？修仙世界？开什么玩笑！这老道看起来就不像好人……系统！系统你在吗？！\n\n△ 李凡观察着老道，心中评估着威胁，最终深吸一口气。（内心OS）：算了，既来之则安之。系统，给我出来！\n\n转场：李凡的呼唤得到了回应，系统界面在他眼前浮现。\n\n## 场次03 系统初现\n\n人物：李凡、老道\n\n【瑶光洞 外 日】\n\n△ 李凡眼前突然浮现出一片半透明的蓝色光幕，伴有轻微的电子音效。\n\n△ 光幕上显示文字：“欢迎使用‘心理健康维护系统’。检测到宿主处于高压环境，请选择一项先天气运，以辅助心态调整。”\n\n△ 下方列出几个选项：【镇静一点】、【乐观些许】、【麻木三分】等。\n\n李凡（愣住，内心咆哮）：心理健康维护系统？！我要的是修仙功法！是金手指！不是心理辅导！\n\n△ 李凡因烦躁和失望，不自觉地低吼出声。\n\n△ 蹲在洞口的老道忽然转过头，浑浊的眼睛瞪了李凡一眼。\n\n△ 老道手一扬，一块干硬的芝麻饼扔到李凡脚边。\n\n李凡（吓了一跳，赶紧低头）：对、对不起……\n\n△ 李凡看着地上的饼，有些发愣。\n\n△ 系统光幕上，“镇静一点”的选项被自动高亮选中。\n\n系统提示音（在李凡脑中响起）：先天气运【镇静一点】已确认绑定。温馨提示：检测到宿主产生剧烈情绪波动，心情下降1点。\n\n△ 李凡握着芝麻饼，表情僵住，一股莫名的低落感涌上心头。",
      "episode_upload_char_count": 1503,
      "source_ref": {
        "episode_ids": [
          "EP0001"
        ],
        "block_ids": [],
        "source_scene_ids": [
          "S0001",
          "S0002",
          "S0003",
          "S0004"
        ],
        "source_group_ids": [
          "AG0001",
          "AG0002",
          "AG0003"
        ],
        "source_beat_ids": [
          "AB0001",
          "AB0002",
          "AB0003"
        ],
        "entity_uid": "",
        "visual_card_id": "",
        "voice_card_id": "",
        "asset_binding_id": ""
      }
    }
  ],
  "character_bios": [
    {
      "entity_uid": "E000002",
      "name": "李凡",
      "canonical_name": "李凡",
      "display_name": "李凡",
      "identity_conflict": {},
      "conflict_group_id": "",
      "type": "人物",
      "subtype": "",
      "importance": "supporting",
      "priority": "P2",
      "role_tier": "supporting",
      "episode_ids": [
        "EP0001"
      ],
      "source_scene_ids": [
        "S0001",
        "S0002",
        "S0003",
        "S0004"
      ],
      "source_group_ids": [
        "AG0001",
        "AG0002",
        "AG0003"
      ],
      "source_beat_ids": [
        "AB0001",
        "AB0002",
        "AB0003"
      ],
      "block_ids": [
        "EP0001B002",
        "EP0001B003"
      ],
      "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": [
        {
          "variant_id": "VC000002:state:age",
          "label": "幼年感",
          "variant_type": "age",
          "signals": [
            "幼年感"
          ],
          "evidence": [
            "二十一童子之一"
          ],
          "notes": "年龄感属于静态主设约束，可直接用于角色资产初始化。"
        }
      ],
      "style_constraints": [
        "保持同一实体在跨镜头中的核心身份稳定",
        "保持角色核心外貌、服饰母题和主要随身物一致"
      ],
      "consistency_rules": [
        "后续 scene 与 shot 只能在此静态身份卡之上叠加动态状态",
        "别名与本名指向同一实体：李凡 / 穿越者",
        "常见关联对象：穿越者心理健康维护系统、老道、芝麻饼",
        "已处理文本出现范围：C0001 -> C0002"
      ],
      "voice_profile": {
        "voice_role": "character",
        "gender_presentation": "unknown",
        "age_impression": "child",
        "voice_anchor_summary": "李凡；角色 / 未知性别呈现 / 幼年感；自然人声",
        "timbre": [
          "自然人声",
          "保持跨场景音色稳定",
          "带年轻感"
        ],
        "pitch": "high",
        "pace": "fast",
        "speaking_style": [
          "吐字清晰",
          "语流更轻快"
        ],
        "delivery_core": [
          "锁定基础音色，不因场景切换改变发声位置",
          "情绪变化优先通过力度和语速调整，不改人声底色",
          "保持幼年感，不在不同段落间来回漂移"
        ],
        "casting_tags": [
          "角色",
          "未知性别呈现",
          "幼年感",
          "自然人声",
          "保持跨场景音色稳定",
          "吐字清晰",
          "语流更轻快"
        ],
        "voice_variants": [
          {
            "variant_id": "VO000002:default",
            "label": "常规对白",
            "pace": "fast",
            "pitch": "high",
            "timbre": [
              "自然人声",
              "保持跨场景音色稳定"
            ],
            "speaking_style": [
              "吐字清晰",
              "语流更轻快"
            ],
            "notes": "默认对白态，用于大多数正常交流场景。"
          },
          {
            "variant_id": "VO000002:low",
            "label": "低强度对白",
            "pace": "slow",
            "pitch": "high",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "压低力度"
            ],
            "notes": "适用于密谈、独白或收束段落。"
          },
          {
            "variant_id": "VO000002:high",
            "label": "高强度对白",
            "pace": "fast",
            "pitch": "high",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "提高爆发力"
            ],
            "notes": "适用于冲突、喊叫或高压时刻。"
          }
        ]
      },
      "asset_profile": {
        "asset_role": "character",
        "priority": "supporting",
        "required_visual_assets": [
          "角色主设图",
          "角色半身参考图"
        ],
        "optional_visual_assets": [
          "状态变体图"
        ],
        "required_voice_assets": [
          "基础音色样例",
          "情绪扩展样例"
        ],
        "usage_hints": [
          "李凡流着冷汗"
        ],
        "owner_candidates": [
          "穿越者心理健康维护系统",
          "老道",
          "芝麻饼",
          "墨竹山"
        ],
        "variant_keys": [
          "VC000002:costume:default",
          "VC000002:state:age",
          "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": true,
        "manual_blocked": false,
        "manual_needs_fix_scopes": [
          "声音设定"
        ],
        "manual_blocked_scopes": [],
        "manual_approved_scopes": [
          "实体主档"
        ],
        "manual_locked_scopes": [
          "实体主档"
        ],
        "manual_override_flags": {
          "entity_ok": true,
          "visual_ok": false,
          "voice_ok": false,
          "asset_ok": false
        },
        "review_overlay": {
          "scopes": {
            "entity": {
              "status": "approved",
              "locked": true,
              "reviewer": "codex",
              "review_note": "smoke: 主档已确认",
              "labels": [
                "smoke",
                "主档"
              ],
              "updated_at": "2026-03-28T21:04:40Z",
              "is_approved": true,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": false
            },
            "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": "needs_fix",
              "locked": false,
              "reviewer": "codex",
              "review_note": "smoke: 待补 voice binding",
              "labels": [
                "smoke",
                "待补绑定"
              ],
              "updated_at": "2026-03-28T21:04:40Z",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": true,
              "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": true
        },
        "ready_for_dramart": false,
        "ready_for_dramart_init": false
      },
      "review_overlay": {
        "scopes": {
          "entity": {
            "status": "approved",
            "locked": true,
            "reviewer": "codex",
            "review_note": "smoke: 主档已确认",
            "labels": [
              "smoke",
              "主档"
            ],
            "updated_at": "2026-03-28T21:04:40Z",
            "is_approved": true,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": false,
            "is_open": false
          },
          "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": "needs_fix",
            "locked": false,
            "reviewer": "codex",
            "review_note": "smoke: 待补 voice binding",
            "labels": [
              "smoke",
              "待补绑定"
            ],
            "updated_at": "2026-03-28T21:04:40Z",
            "is_approved": false,
            "is_na": false,
            "is_blocked": false,
            "is_needs_fix": true,
            "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": true
      },
      "bio_text": "李凡，主要角色\n外观要点：二十一童子之一；现代穿越者；拥有心理健康系统\n状态候选：幼年感\n声音建议：自然人声；保持跨场景音色稳定；吐字清晰；语流更轻快\n配音约束：锁定基础音色，不因场景切换改变发声位置；情绪变化优先通过力度和语速调整，不改人声底色\n建议资产：角色主设图；角色半身参考图\n主要出现集次：EP0001\n补充：关系上下文：李凡 - 拥有 - 穿越者心理健康维护系统；老道 - 告知 - 李凡；芝麻饼 - 影响 - 李凡",
      "review_notes": [
        "缺少参考图",
        "缺少视觉锁定绑定",
        "缺少语音参考",
        "缺少音色绑定",
        "人工待修：声音设定",
        "声音设定备注：smoke: 待补 voice binding"
      ],
      "risk_flags": [
        "manual_needs_fix",
        "visual_reference_gap",
        "voice_reference_gap",
        "voice_binding_gap",
        "visual_lock_gap"
      ],
      "risk_summary": "人工待修；参考图缺口；语音参考缺口",
      "init_action": "review_required",
      "init_action_reason": "人工待修；参考图缺口；语音参考缺口",
      "source_ref": {
        "episode_ids": [
          "EP0001"
        ],
        "block_ids": [
          "EP0001B002",
          "EP0001B003"
        ],
        "source_scene_ids": [
          "S0001",
          "S0002",
          "S0003",
          "S0004"
        ],
        "source_group_ids": [
          "AG0001",
          "AG0002",
          "AG0003"
        ],
        "source_beat_ids": [
          "AB0001",
          "AB0002",
          "AB0003"
        ],
        "entity_uid": "E000002",
        "visual_card_id": "VC000002",
        "voice_card_id": "VO000002",
        "asset_binding_id": "AB000002"
      }
    },
    {
      "entity_uid": "E000001",
      "name": "老道",
      "canonical_name": "老道",
      "display_name": "老道",
      "identity_conflict": {},
      "conflict_group_id": "",
      "type": "人物",
      "subtype": "",
      "importance": "supporting",
      "priority": "P2",
      "role_tier": "supporting",
      "episode_ids": [
        "EP0001"
      ],
      "source_scene_ids": [
        "S0001",
        "S0002",
        "S0003",
        "S0004"
      ],
      "source_group_ids": [
        "AG0001",
        "AG0002",
        "AG0003"
      ],
      "source_beat_ids": [
        "AB0001",
        "AB0002",
        "AB0003"
      ],
      "block_ids": [
        "EP0001B002",
        "EP0001B003"
      ],
      "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": [
        {
          "variant_id": "VC000001:costume:default",
          "label": "基础造型",
          "variant_type": "default",
          "appearance": [
            "老道士突然爆发出一声怪笑"
          ],
          "clothing": [
            "法坛前只有个墨帻法褐的老道"
          ],
          "props": [],
          "source_mode": "static_core",
          "notes": "默认角色主设；后续镜头只在此基础上叠加情绪、动作和状态。"
        }
      ],
      "state_variants": [
        {
          "variant_id": "VC000001:state:age",
          "label": "年长感",
          "variant_type": "age",
          "signals": [
            "年长感"
          ],
          "evidence": [
            "墨竹山法坛前的老道",
            "墨竹山法坛前老道"
          ],
          "notes": "年龄感属于静态主设约束，可直接用于角色资产初始化。"
        }
      ],
      "style_constraints": [
        "保持同一实体在跨镜头中的核心身份稳定",
        "保持角色核心外貌、服饰母题和主要随身物一致"
      ],
      "consistency_rules": [
        "后续 scene 与 shot 只能在此静态身份卡之上叠加动态状态",
        "别名与本名指向同一实体：老道 / 老道士",
        "常见关联对象：朱木剑、修士、童子",
        "已处理文本出现范围：C0001 -> C0002"
      ],
      "voice_profile": {
        "voice_role": "character",
        "gender_presentation": "masculine",
        "age_impression": "elder",
        "voice_anchor_summary": "老道；角色 / 男性向 / 年长感；自然人声",
        "timbre": [
          "自然人声",
          "保持跨场景音色稳定",
          "带年长感"
        ],
        "pitch": "low",
        "pace": "slow",
        "speaking_style": [
          "吐字清晰",
          "语气沉稳"
        ],
        "delivery_core": [
          "锁定基础音色，不因场景切换改变发声位置",
          "情绪变化优先通过力度和语速调整，不改人声底色",
          "保持年长感，不在不同段落间来回漂移"
        ],
        "casting_tags": [
          "角色",
          "男性向",
          "年长感",
          "自然人声",
          "保持跨场景音色稳定",
          "吐字清晰",
          "语气沉稳"
        ],
        "voice_variants": [
          {
            "variant_id": "VO000001:default",
            "label": "常规对白",
            "pace": "slow",
            "pitch": "low",
            "timbre": [
              "自然人声",
              "保持跨场景音色稳定"
            ],
            "speaking_style": [
              "吐字清晰",
              "语气沉稳"
            ],
            "notes": "默认对白态，用于大多数正常交流场景。"
          },
          {
            "variant_id": "VO000001:low",
            "label": "低强度对白",
            "pace": "slow",
            "pitch": "low",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "压低力度"
            ],
            "notes": "适用于密谈、独白或收束段落。"
          },
          {
            "variant_id": "VO000001:high",
            "label": "高强度对白",
            "pace": "fast",
            "pitch": "low",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "提高爆发力"
            ],
            "notes": "适用于冲突、喊叫或高压时刻。"
          }
        ]
      },
      "asset_profile": {
        "asset_role": "character",
        "priority": "supporting",
        "required_visual_assets": [
          "角色主设图",
          "角色半身参考图"
        ],
        "optional_visual_assets": [
          "状态变体图"
        ],
        "required_voice_assets": [
          "基础音色样例",
          "情绪扩展样例"
        ],
        "usage_hints": [
          "墨竹山法坛前老道",
          "墨竹山法坛前的老道",
          "老道士已经阴沉着脸走过来"
        ],
        "owner_candidates": [
          "朱木剑",
          "修士",
          "童子",
          "李凡"
        ],
        "variant_keys": [
          "VC000001:costume:default",
          "VC000001:state:age",
          "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配音约束：锁定基础音色，不因场景切换改变发声位置；情绪变化优先通过力度和语速调整，不改人声底色\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": [
          "EP0001B002",
          "EP0001B003"
        ],
        "source_scene_ids": [
          "S0001",
          "S0002",
          "S0003",
          "S0004"
        ],
        "source_group_ids": [
          "AG0001",
          "AG0002",
          "AG0003"
        ],
        "source_beat_ids": [
          "AB0001",
          "AB0002",
          "AB0003"
        ],
        "entity_uid": "E000001",
        "visual_card_id": "VC000001",
        "voice_card_id": "VO000001",
        "asset_binding_id": "AB000001"
      }
    },
    {
      "entity_uid": "E000011",
      "name": "修士",
      "canonical_name": "修士",
      "display_name": "修士",
      "identity_conflict": {},
      "conflict_group_id": "",
      "type": "人物",
      "subtype": "角色姓名",
      "importance": "minor",
      "priority": "P3",
      "role_tier": "featured",
      "episode_ids": [
        "EP0001"
      ],
      "source_scene_ids": [
        "S0001",
        "S0002",
        "S0003",
        "S0004"
      ],
      "source_group_ids": [
        "AG0001",
        "AG0002",
        "AG0003"
      ],
      "source_beat_ids": [
        "AB0001",
        "AB0002",
        "AB0003"
      ],
      "block_ids": [
        "EP0001B002"
      ],
      "visual_card_id": "VC000011",
      "voice_card_id": "VO000011",
      "asset_binding_id": "AB000011",
      "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 只能在此静态身份卡之上叠加动态状态",
        "常见关联对象：铜钱剑、金钟银铃、老道"
      ],
      "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": "VO000011:default",
            "label": "常规对白",
            "pace": "medium",
            "pitch": "unknown",
            "timbre": [
              "自然人声",
              "保持跨场景音色稳定"
            ],
            "speaking_style": [
              "吐字清晰"
            ],
            "notes": "默认对白态，用于大多数正常交流场景。"
          },
          {
            "variant_id": "VO000011:low",
            "label": "低强度对白",
            "pace": "slow",
            "pitch": "unknown",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "压低力度"
            ],
            "notes": "适用于密谈、独白或收束段落。"
          },
          {
            "variant_id": "VO000011: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": [
          "VO000011:default",
          "VO000011:low",
          "VO000011: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主要出现集次：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": [
          "EP0001B002"
        ],
        "source_scene_ids": [
          "S0001",
          "S0002",
          "S0003",
          "S0004"
        ],
        "source_group_ids": [
          "AG0001",
          "AG0002",
          "AG0003"
        ],
        "source_beat_ids": [
          "AB0001",
          "AB0002",
          "AB0003"
        ],
        "entity_uid": "E000011",
        "visual_card_id": "VC000011",
        "voice_card_id": "VO000011",
        "asset_binding_id": "AB000011"
      }
    },
    {
      "entity_uid": "E000012",
      "name": "童子",
      "canonical_name": "童子",
      "display_name": "童子",
      "identity_conflict": {},
      "conflict_group_id": "",
      "type": "人物",
      "subtype": "",
      "importance": "background",
      "priority": "P4",
      "role_tier": "featured",
      "episode_ids": [
        "EP0001"
      ],
      "source_scene_ids": [
        "S0001",
        "S0002",
        "S0003",
        "S0004"
      ],
      "source_group_ids": [
        "AG0001",
        "AG0002",
        "AG0003"
      ],
      "source_beat_ids": [
        "AB0001",
        "AB0002",
        "AB0003"
      ],
      "block_ids": [
        "EP0001B002"
      ],
      "visual_card_id": "VC000012",
      "voice_card_id": "VO000012",
      "asset_binding_id": "AB000012",
      "merge_suspect": {},
      "resolution_overlay": {},
      "identity_summary": "童子，功能角色",
      "visual_anchor_summary": "童子，功能角色",
      "design_keywords": [
        "童子"
      ],
      "design_prompt_fragments": [],
      "appearance_core": [],
      "clothing_core": [],
      "prop_core": [],
      "costume_variants": [],
      "state_variants": [
        {
          "variant_id": "VC000012:state:age",
          "label": "幼年感",
          "variant_type": "age",
          "signals": [
            "幼年感"
          ],
          "evidence": [],
          "notes": "年龄感属于静态主设约束，可直接用于角色资产初始化。"
        }
      ],
      "style_constraints": [
        "保持同一实体在跨镜头中的核心身份稳定",
        "保持角色核心外貌、服饰母题和主要随身物一致"
      ],
      "consistency_rules": [
        "后续 scene 与 shot 只能在此静态身份卡之上叠加动态状态",
        "常见关联对象：老道"
      ],
      "voice_profile": {
        "voice_role": "character",
        "gender_presentation": "unknown",
        "age_impression": "child",
        "voice_anchor_summary": "童子；角色 / 未知性别呈现 / 幼年感；自然人声",
        "timbre": [
          "自然人声",
          "保持跨场景音色稳定",
          "带年轻感"
        ],
        "pitch": "high",
        "pace": "fast",
        "speaking_style": [
          "吐字清晰",
          "语流更轻快"
        ],
        "delivery_core": [
          "锁定基础音色，不因场景切换改变发声位置",
          "情绪变化优先通过力度和语速调整，不改人声底色",
          "保持幼年感，不在不同段落间来回漂移"
        ],
        "casting_tags": [
          "角色",
          "未知性别呈现",
          "幼年感",
          "自然人声",
          "保持跨场景音色稳定",
          "吐字清晰",
          "语流更轻快"
        ],
        "voice_variants": [
          {
            "variant_id": "VO000012:default",
            "label": "常规对白",
            "pace": "fast",
            "pitch": "high",
            "timbre": [
              "自然人声",
              "保持跨场景音色稳定"
            ],
            "speaking_style": [
              "吐字清晰",
              "语流更轻快"
            ],
            "notes": "默认对白态，用于大多数正常交流场景。"
          },
          {
            "variant_id": "VO000012:low",
            "label": "低强度对白",
            "pace": "slow",
            "pitch": "high",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "压低力度"
            ],
            "notes": "适用于密谈、独白或收束段落。"
          },
          {
            "variant_id": "VO000012:high",
            "label": "高强度对白",
            "pace": "fast",
            "pitch": "high",
            "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": [
          "VC000012:state:age",
          "VO000012:default",
          "VO000012:low",
          "VO000012: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": true,
        "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": 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
      },
      "bio_text": "童子，功能角色\n状态候选：幼年感\n声音建议：自然人声；保持跨场景音色稳定；吐字清晰；语流更轻快\n配音约束：锁定基础音色，不因场景切换改变发声位置；情绪变化优先通过力度和语速调整，不改人声底色\n建议资产：角色主设图；角色半身参考图\n主要出现集次：EP0001\n补充：KG 中该实体仍为弱证据或占位实体，建议人工复审；关系上下文：老道 - 告知 - 童子",
      "review_notes": [
        "缺少参考图",
        "缺少视觉锁定绑定",
        "缺少语音参考",
        "缺少音色绑定",
        "实体主档待复核"
      ],
      "risk_flags": [
        "entity_review",
        "visual_reference_gap",
        "voice_reference_gap",
        "voice_binding_gap",
        "visual_lock_gap"
      ],
      "risk_summary": "实体主档待复核；参考图缺口；语音参考缺口",
      "init_action": "review_required",
      "init_action_reason": "实体主档待复核；参考图缺口；语音参考缺口",
      "source_ref": {
        "episode_ids": [
          "EP0001"
        ],
        "block_ids": [
          "EP0001B002"
        ],
        "source_scene_ids": [
          "S0001",
          "S0002",
          "S0003",
          "S0004"
        ],
        "source_group_ids": [
          "AG0001",
          "AG0002",
          "AG0003"
        ],
        "source_beat_ids": [
          "AB0001",
          "AB0002",
          "AB0003"
        ],
        "entity_uid": "E000012",
        "visual_card_id": "VC000012",
        "voice_card_id": "VO000012",
        "asset_binding_id": "AB000012"
      }
    }
  ],
  "asset_ready_summary": {
    "status": "warn",
    "issue_count": 1,
    "fail_count": 0,
    "warn_count": 1,
    "info_count": 0,
    "character_count": 4,
    "priority_character_count": 0,
    "character_ready_count": 2,
    "priority_character_ready_count": 0,
    "character_primary_visual_ready_count": 4,
    "character_variant_ready_count": 4,
    "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": 1,
    "location_asset_count": 3,
    "location_ready_count": 2,
    "location_visual_gap_count": 0,
    "location_scene_mapping_gap_count": 0,
    "location_manual_blocked_count": 0,
    "prop_asset_count": 1,
    "prop_ready_count": 1,
    "prop_visual_gap_count": 0,
    "prop_usage_mapping_gap_count": 0,
    "prop_manual_blocked_count": 0,
    "voice_suggestion_count": 4,
    "voice_binding_gap_count": 4,
    "voice_reference_gap_count": 4,
    "character_asset_suggestion_count": 4
  },
  "asset_ready_issues": [
    {
      "code": "manual_needs_fix_assets",
      "severity": "warn",
      "title": "存在人工待修资产",
      "detail": "部分角色资产仍处于 needs_fix 状态，建议修完后再导入 Dramart。",
      "target_type": "package",
      "target_id": "",
      "source_refs": [
        "李凡"
      ],
      "recommended_action": "根据 review_note 补修视觉、声音或资产绑定后再继续。"
    }
  ],
  "upload_ready_summary": {
    "status": "pass",
    "issue_count": 1,
    "fail_count": 0,
    "warn_count": 0,
    "info_count": 1,
    "episode_count": 1,
    "block_count": 3,
    "character_bio_count": 4,
    "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": 1794,
    "single_file_within_limit": true,
    "part_count": 1,
    "oversized_episode_count": 0,
    "oversized_part_count": 0,
    "has_global_preface": true,
    "time_layer_annotation_recommended": true
  },
  "upload_ready_issues": [
    {
      "code": "non_mainline_time_mode",
      "severity": "info",
      "title": "存在非主线时间层",
      "detail": "当前剧本包含回忆、梦境或并行线等时间层，上传时建议显式标注，以免平台误解时态切换。",
      "target_type": "package",
      "target_id": "",
      "source_refs": [
        "flashback"
      ],
      "recommended_action": "在分集标题、场次标题或正文中显式提示时间层切换。"
    }
  ],
  "skipped_unbound_character_refs": [],
  "asset_suggestions": {
    "characters": [
      {
        "entity_uid": "E000002",
        "name": "李凡",
        "canonical_name": "李凡",
        "display_name": "李凡",
        "identity_conflict": {},
        "conflict_group_id": "",
        "priority": "P2",
        "role_tier": "supporting",
        "episode_ids": [
          "EP0001"
        ],
        "source_scene_ids": [
          "S0001",
          "S0002",
          "S0003",
          "S0004"
        ],
        "source_group_ids": [
          "AG0001",
          "AG0002",
          "AG0003"
        ],
        "source_beat_ids": [
          "AB0001",
          "AB0002",
          "AB0003"
        ],
        "block_ids": [
          "EP0001B002",
          "EP0001B003"
        ],
        "visual_card_id": "VC000002",
        "voice_card_id": "VO000002",
        "asset_binding_id": "AB000002",
        "visual_anchor_summary": "李凡，主要角色",
        "design_prompt_fragments": [],
        "costume_variants": [],
        "state_variants": [
          {
            "variant_id": "VC000002:state:age",
            "label": "幼年感",
            "variant_type": "age",
            "signals": [
              "幼年感"
            ],
            "evidence": [
              "二十一童子之一"
            ],
            "notes": "年龄感属于静态主设约束，可直接用于角色资产初始化。"
          }
        ],
        "main_scene_candidates": [
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B002",
            "title": "童子入门",
            "kind": "dialogue",
            "lead_scene_id": "S0002",
            "source_scene_ids": [
              "S0002",
              "S0003"
            ],
            "source_group_ids": [
              "AG0002"
            ],
            "source_beat_ids": [
              "AB0002"
            ]
          },
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B003",
            "title": "系统初现",
            "kind": "bridge",
            "lead_scene_id": "S0004",
            "source_scene_ids": [
              "S0004"
            ],
            "source_group_ids": [
              "AG0003"
            ],
            "source_beat_ids": [
              "AB0003"
            ]
          }
        ],
        "asset_profile": {
          "asset_role": "character",
          "priority": "supporting",
          "required_visual_assets": [
            "角色主设图",
            "角色半身参考图"
          ],
          "optional_visual_assets": [
            "状态变体图"
          ],
          "required_voice_assets": [
            "基础音色样例",
            "情绪扩展样例"
          ],
          "usage_hints": [
            "李凡流着冷汗"
          ],
          "owner_candidates": [
            "穿越者心理健康维护系统",
            "老道",
            "芝麻饼",
            "墨竹山"
          ],
          "variant_keys": [
            "VC000002:costume:default",
            "VC000002:state:age",
            "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": true,
          "manual_blocked": false,
          "manual_needs_fix_scopes": [
            "声音设定"
          ],
          "manual_blocked_scopes": [],
          "manual_approved_scopes": [
            "实体主档"
          ],
          "manual_locked_scopes": [
            "实体主档"
          ],
          "manual_override_flags": {
            "entity_ok": true,
            "visual_ok": false,
            "voice_ok": false,
            "asset_ok": false
          },
          "review_overlay": {
            "scopes": {
              "entity": {
                "status": "approved",
                "locked": true,
                "reviewer": "codex",
                "review_note": "smoke: 主档已确认",
                "labels": [
                  "smoke",
                  "主档"
                ],
                "updated_at": "2026-03-28T21:04:40Z",
                "is_approved": true,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": false
              },
              "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": "needs_fix",
                "locked": false,
                "reviewer": "codex",
                "review_note": "smoke: 待补 voice binding",
                "labels": [
                  "smoke",
                  "待补绑定"
                ],
                "updated_at": "2026-03-28T21:04:40Z",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": true,
                "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": true
          },
          "ready_for_dramart": false,
          "ready_for_dramart_init": false
        },
        "review_overlay": {
          "scopes": {
            "entity": {
              "status": "approved",
              "locked": true,
              "reviewer": "codex",
              "review_note": "smoke: 主档已确认",
              "labels": [
                "smoke",
                "主档"
              ],
              "updated_at": "2026-03-28T21:04:40Z",
              "is_approved": true,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": false
            },
            "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": "needs_fix",
              "locked": false,
              "reviewer": "codex",
              "review_note": "smoke: 待补 voice binding",
              "labels": [
                "smoke",
                "待补绑定"
              ],
              "updated_at": "2026-03-28T21:04:40Z",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": true,
              "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": true
        },
        "required_visual_assets": [
          "角色主设图",
          "角色半身参考图"
        ],
        "optional_visual_assets": [
          "状态变体图"
        ],
        "required_voice_assets": [
          "基础音色样例",
          "情绪扩展样例"
        ],
        "variant_keys": [
          "VC000002:costume:default",
          "VC000002:state:age",
          "VO000002:default",
          "VO000002:low",
          "VO000002:high"
        ],
        "reason": "角色覆盖 1 集，建议优先建立稳定角色资产。",
        "needs": [
          "缺少参考图",
          "缺少视觉锁定绑定",
          "缺少语音参考",
          "缺少音色绑定",
          "人工待修：声音设定",
          "声音设定备注：smoke: 待补 voice binding"
        ],
        "risk_flags": [
          "manual_needs_fix",
          "visual_reference_gap",
          "voice_reference_gap",
          "voice_binding_gap",
          "visual_lock_gap"
        ],
        "risk_summary": "人工待修；参考图缺口；语音参考缺口",
        "init_action": "review_required",
        "init_action_reason": "人工待修；参考图缺口；语音参考缺口",
        "source_ref": {
          "episode_ids": [
            "EP0001"
          ],
          "block_ids": [
            "EP0001B002",
            "EP0001B003"
          ],
          "source_scene_ids": [
            "S0001",
            "S0002",
            "S0003",
            "S0004"
          ],
          "source_group_ids": [
            "AG0001",
            "AG0002",
            "AG0003"
          ],
          "source_beat_ids": [
            "AB0001",
            "AB0002",
            "AB0003"
          ],
          "entity_uid": "E000002",
          "visual_card_id": "VC000002",
          "voice_card_id": "VO000002",
          "asset_binding_id": "AB000002"
        }
      },
      {
        "entity_uid": "E000001",
        "name": "老道",
        "canonical_name": "老道",
        "display_name": "老道",
        "identity_conflict": {},
        "conflict_group_id": "",
        "priority": "P2",
        "role_tier": "supporting",
        "episode_ids": [
          "EP0001"
        ],
        "source_scene_ids": [
          "S0001",
          "S0002",
          "S0003",
          "S0004"
        ],
        "source_group_ids": [
          "AG0001",
          "AG0002",
          "AG0003"
        ],
        "source_beat_ids": [
          "AB0001",
          "AB0002",
          "AB0003"
        ],
        "block_ids": [
          "EP0001B002",
          "EP0001B003"
        ],
        "visual_card_id": "VC000001",
        "voice_card_id": "VO000001",
        "asset_binding_id": "AB000001",
        "visual_anchor_summary": "法坛前只有个墨帻法褐的老道；老道士突然爆发出一声怪笑",
        "design_prompt_fragments": [
          "法坛前只有个墨帻法褐的老道",
          "老道士突然爆发出一声怪笑"
        ],
        "costume_variants": [
          {
            "variant_id": "VC000001:costume:default",
            "label": "基础造型",
            "variant_type": "default",
            "appearance": [
              "老道士突然爆发出一声怪笑"
            ],
            "clothing": [
              "法坛前只有个墨帻法褐的老道"
            ],
            "props": [],
            "source_mode": "static_core",
            "notes": "默认角色主设；后续镜头只在此基础上叠加情绪、动作和状态。"
          }
        ],
        "state_variants": [
          {
            "variant_id": "VC000001:state:age",
            "label": "年长感",
            "variant_type": "age",
            "signals": [
              "年长感"
            ],
            "evidence": [
              "墨竹山法坛前的老道",
              "墨竹山法坛前老道"
            ],
            "notes": "年龄感属于静态主设约束，可直接用于角色资产初始化。"
          }
        ],
        "main_scene_candidates": [
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B002",
            "title": "童子入门",
            "kind": "dialogue",
            "lead_scene_id": "S0002",
            "source_scene_ids": [
              "S0002",
              "S0003"
            ],
            "source_group_ids": [
              "AG0002"
            ],
            "source_beat_ids": [
              "AB0002"
            ]
          },
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B003",
            "title": "系统初现",
            "kind": "bridge",
            "lead_scene_id": "S0004",
            "source_scene_ids": [
              "S0004"
            ],
            "source_group_ids": [
              "AG0003"
            ],
            "source_beat_ids": [
              "AB0003"
            ]
          }
        ],
        "asset_profile": {
          "asset_role": "character",
          "priority": "supporting",
          "required_visual_assets": [
            "角色主设图",
            "角色半身参考图"
          ],
          "optional_visual_assets": [
            "状态变体图"
          ],
          "required_voice_assets": [
            "基础音色样例",
            "情绪扩展样例"
          ],
          "usage_hints": [
            "墨竹山法坛前老道",
            "墨竹山法坛前的老道",
            "老道士已经阴沉着脸走过来"
          ],
          "owner_candidates": [
            "朱木剑",
            "修士",
            "童子",
            "李凡"
          ],
          "variant_keys": [
            "VC000001:costume:default",
            "VC000001:state:age",
            "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",
          "VC000001:state:age",
          "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": [
            "EP0001B002",
            "EP0001B003"
          ],
          "source_scene_ids": [
            "S0001",
            "S0002",
            "S0003",
            "S0004"
          ],
          "source_group_ids": [
            "AG0001",
            "AG0002",
            "AG0003"
          ],
          "source_beat_ids": [
            "AB0001",
            "AB0002",
            "AB0003"
          ],
          "entity_uid": "E000001",
          "visual_card_id": "VC000001",
          "voice_card_id": "VO000001",
          "asset_binding_id": "AB000001"
        }
      },
      {
        "entity_uid": "E000011",
        "name": "修士",
        "canonical_name": "修士",
        "display_name": "修士",
        "identity_conflict": {},
        "conflict_group_id": "",
        "priority": "P3",
        "role_tier": "featured",
        "episode_ids": [
          "EP0001"
        ],
        "source_scene_ids": [
          "S0001",
          "S0002",
          "S0003",
          "S0004"
        ],
        "source_group_ids": [
          "AG0001",
          "AG0002",
          "AG0003"
        ],
        "source_beat_ids": [
          "AB0001",
          "AB0002",
          "AB0003"
        ],
        "block_ids": [
          "EP0001B002"
        ],
        "visual_card_id": "VC000011",
        "voice_card_id": "VO000011",
        "asset_binding_id": "AB000011",
        "visual_anchor_summary": "修士，角色姓名",
        "design_prompt_fragments": [],
        "costume_variants": [],
        "state_variants": [],
        "main_scene_candidates": [
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B002",
            "title": "童子入门",
            "kind": "dialogue",
            "lead_scene_id": "S0002",
            "source_scene_ids": [
              "S0002",
              "S0003"
            ],
            "source_group_ids": [
              "AG0002"
            ],
            "source_beat_ids": [
              "AB0002"
            ]
          }
        ],
        "asset_profile": {
          "asset_role": "character",
          "priority": "minor",
          "required_visual_assets": [
            "角色主设图",
            "角色半身参考图"
          ],
          "optional_visual_assets": [],
          "required_voice_assets": [
            "基础音色样例",
            "情绪扩展样例"
          ],
          "usage_hints": [],
          "owner_candidates": [
            "铜钱剑",
            "金钟银铃",
            "老道"
          ],
          "variant_keys": [
            "VO000011:default",
            "VO000011:low",
            "VO000011: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": [
          "VO000011:default",
          "VO000011:low",
          "VO000011: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": [
            "EP0001B002"
          ],
          "source_scene_ids": [
            "S0001",
            "S0002",
            "S0003",
            "S0004"
          ],
          "source_group_ids": [
            "AG0001",
            "AG0002",
            "AG0003"
          ],
          "source_beat_ids": [
            "AB0001",
            "AB0002",
            "AB0003"
          ],
          "entity_uid": "E000011",
          "visual_card_id": "VC000011",
          "voice_card_id": "VO000011",
          "asset_binding_id": "AB000011"
        }
      },
      {
        "entity_uid": "E000012",
        "name": "童子",
        "canonical_name": "童子",
        "display_name": "童子",
        "identity_conflict": {},
        "conflict_group_id": "",
        "priority": "P4",
        "role_tier": "featured",
        "episode_ids": [
          "EP0001"
        ],
        "source_scene_ids": [
          "S0001",
          "S0002",
          "S0003",
          "S0004"
        ],
        "source_group_ids": [
          "AG0001",
          "AG0002",
          "AG0003"
        ],
        "source_beat_ids": [
          "AB0001",
          "AB0002",
          "AB0003"
        ],
        "block_ids": [
          "EP0001B002"
        ],
        "visual_card_id": "VC000012",
        "voice_card_id": "VO000012",
        "asset_binding_id": "AB000012",
        "visual_anchor_summary": "童子，功能角色",
        "design_prompt_fragments": [],
        "costume_variants": [],
        "state_variants": [
          {
            "variant_id": "VC000012:state:age",
            "label": "幼年感",
            "variant_type": "age",
            "signals": [
              "幼年感"
            ],
            "evidence": [],
            "notes": "年龄感属于静态主设约束，可直接用于角色资产初始化。"
          }
        ],
        "main_scene_candidates": [
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B002",
            "title": "童子入门",
            "kind": "dialogue",
            "lead_scene_id": "S0002",
            "source_scene_ids": [
              "S0002",
              "S0003"
            ],
            "source_group_ids": [
              "AG0002"
            ],
            "source_beat_ids": [
              "AB0002"
            ]
          }
        ],
        "asset_profile": {
          "asset_role": "character",
          "priority": "background",
          "required_visual_assets": [
            "角色主设图",
            "角色半身参考图"
          ],
          "optional_visual_assets": [
            "状态变体图"
          ],
          "required_voice_assets": [
            "基础音色样例",
            "情绪扩展样例"
          ],
          "usage_hints": [],
          "owner_candidates": [
            "老道"
          ],
          "variant_keys": [
            "VC000012:state:age",
            "VO000012:default",
            "VO000012:low",
            "VO000012: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": true,
          "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": 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
        },
        "required_visual_assets": [
          "角色主设图",
          "角色半身参考图"
        ],
        "optional_visual_assets": [
          "状态变体图"
        ],
        "required_voice_assets": [
          "基础音色样例",
          "情绪扩展样例"
        ],
        "variant_keys": [
          "VC000012:state:age",
          "VO000012:default",
          "VO000012:low",
          "VO000012:high"
        ],
        "reason": "角色覆盖 1 集，建议优先建立稳定角色资产。",
        "needs": [
          "缺少参考图",
          "缺少视觉锁定绑定",
          "缺少语音参考",
          "缺少音色绑定",
          "实体主档待复核"
        ],
        "risk_flags": [
          "entity_review",
          "visual_reference_gap",
          "voice_reference_gap",
          "voice_binding_gap",
          "visual_lock_gap"
        ],
        "risk_summary": "实体主档待复核；参考图缺口；语音参考缺口",
        "init_action": "review_required",
        "init_action_reason": "实体主档待复核；参考图缺口；语音参考缺口",
        "source_ref": {
          "episode_ids": [
            "EP0001"
          ],
          "block_ids": [
            "EP0001B002"
          ],
          "source_scene_ids": [
            "S0001",
            "S0002",
            "S0003",
            "S0004"
          ],
          "source_group_ids": [
            "AG0001",
            "AG0002",
            "AG0003"
          ],
          "source_beat_ids": [
            "AB0001",
            "AB0002",
            "AB0003"
          ],
          "entity_uid": "E000012",
          "visual_card_id": "VC000012",
          "voice_card_id": "VO000012",
          "asset_binding_id": "AB000012"
        }
      }
    ],
    "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",
          "S0002",
          "S0003",
          "S0004"
        ],
        "source_group_ids": [
          "AG0001",
          "AG0002",
          "AG0003"
        ],
        "source_beat_ids": [
          "AB0001",
          "AB0002",
          "AB0003"
        ],
        "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",
            "S0002",
            "S0003",
            "S0004"
          ],
          "source_group_ids": [
            "AG0001",
            "AG0002",
            "AG0003"
          ],
          "source_beat_ids": [
            "AB0001",
            "AB0002",
            "AB0003"
          ],
          "entity_uid": "E000003",
          "visual_card_id": "VC000003",
          "voice_card_id": "",
          "asset_binding_id": "AB000003"
        }
      },
      {
        "entity_uid": "E000008",
        "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",
          "S0002",
          "S0003",
          "S0004"
        ],
        "source_group_ids": [
          "AG0001",
          "AG0002",
          "AG0003"
        ],
        "source_beat_ids": [
          "AB0001",
          "AB0002",
          "AB0003"
        ],
        "block_ids": [
          "EP0001B002"
        ],
        "visual_card_id": "VC000008",
        "asset_binding_id": "AB000008",
        "identity_summary": "玉蟾婆的洞府；修士提及的地方",
        "visual_anchor_summary": "玉蟾婆的洞府",
        "design_prompt_fragments": [
          "玉蟾婆的洞府",
          "瑶光洞",
          "山岳/洞天"
        ],
        "location_core": [
          "玉蟾婆的洞府"
        ],
        "landmark_core": [
          "玉蟾婆的洞府"
        ],
        "atmosphere_core": [
          "李凡的呼唤得到了回应，系统界面在他…"
        ],
        "style_constraints": [
          "保持同一实体在跨镜头中的核心身份稳定",
          "保持场景结构、地标和整体氛围一致"
        ],
        "main_scene_candidates": [
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B002",
            "title": "童子入门",
            "kind": "dialogue",
            "lead_scene_id": "S0002",
            "source_scene_ids": [
              "S0002",
              "S0003"
            ],
            "source_group_ids": [
              "AG0002"
            ],
            "source_beat_ids": [
              "AB0002"
            ]
          }
        ],
        "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": [
            "EP0001B002"
          ],
          "source_scene_ids": [
            "S0001",
            "S0002",
            "S0003",
            "S0004"
          ],
          "source_group_ids": [
            "AG0001",
            "AG0002",
            "AG0003"
          ],
          "source_beat_ids": [
            "AB0001",
            "AB0002",
            "AB0003"
          ],
          "entity_uid": "E000008",
          "visual_card_id": "VC000008",
          "voice_card_id": "",
          "asset_binding_id": "AB000008"
        }
      },
      {
        "entity_uid": "",
        "name": "墨竹山法坛",
        "canonical_name": "墨竹山法坛",
        "display_name": "墨竹山法坛",
        "identity_conflict": {},
        "conflict_group_id": "",
        "type": "地点",
        "subtype": "",
        "importance": "unknown",
        "priority": "P4",
        "location_role": "oneoff_set",
        "episode_ids": [
          "EP0001"
        ],
        "source_scene_ids": [
          "S0001",
          "S0002",
          "S0003",
          "S0004"
        ],
        "source_group_ids": [
          "AG0001",
          "AG0002",
          "AG0003"
        ],
        "source_beat_ids": [
          "AB0001",
          "AB0002",
          "AB0003"
        ],
        "block_ids": [
          "EP0001B002"
        ],
        "visual_card_id": "",
        "asset_binding_id": "",
        "identity_summary": "",
        "visual_anchor_summary": "墨竹山法坛。相关场面：童子入门。画面线索：瑶光洞 外 日；△ 三名修士打扮的男子，领着七八个…。",
        "design_prompt_fragments": [
          "墨竹山法坛",
          "童子入门",
          "瑶光洞 外 日",
          "△ 三名修士打扮的男子，领着七八个…"
        ],
        "location_core": [
          "墨竹山法坛",
          "童子入门"
        ],
        "landmark_core": [
          "瑶光洞 外 日",
          "△ 三名修士打扮的男子，领着七八个…"
        ],
        "atmosphere_core": [
          "李凡的呼唤得到了回应，系统界面在他…"
        ],
        "style_constraints": [],
        "main_scene_candidates": [
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B002",
            "title": "童子入门",
            "kind": "dialogue",
            "lead_scene_id": "S0002",
            "source_scene_ids": [
              "S0002",
              "S0003"
            ],
            "source_group_ids": [
              "AG0002"
            ],
            "source_beat_ids": [
              "AB0002"
            ]
          }
        ],
        "asset_profile": {},
        "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": false,
          "needs_visual_seed_text": false,
          "needs_voice_seed_text": false,
          "required_visual_asset_count": 0,
          "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": 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": 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
        },
        "review_notes": [
          "缺少参考图",
          "缺少视觉锁定绑定"
        ],
        "reason": "覆盖 1 集、命中 1 个剧本块，适合优先建主场景。",
        "risk_flags": [
          "visual_reference_gap",
          "visual_lock_gap"
        ],
        "risk_summary": "参考图缺口；视觉锁定缺口",
        "init_action": "should_build",
        "init_action_reason": "场景具备候选映射，建议按主场景之后补齐",
        "source_ref": {
          "episode_ids": [
            "EP0001"
          ],
          "block_ids": [
            "EP0001B002"
          ],
          "source_scene_ids": [
            "S0001",
            "S0002",
            "S0003",
            "S0004"
          ],
          "source_group_ids": [
            "AG0001",
            "AG0002",
            "AG0003"
          ],
          "source_beat_ids": [
            "AB0001",
            "AB0002",
            "AB0003"
          ],
          "entity_uid": "",
          "visual_card_id": "",
          "voice_card_id": "",
          "asset_binding_id": ""
        }
      }
    ],
    "props": [
      {
        "entity_uid": "E000015",
        "name": "芝麻饼",
        "canonical_name": "芝麻饼",
        "display_name": "芝麻饼",
        "identity_conflict": {},
        "conflict_group_id": "",
        "type": "物品",
        "subtype": "",
        "importance": "minor",
        "priority": "P3",
        "prop_role": "incidental_prop",
        "episode_ids": [
          "EP0001"
        ],
        "first_seen": "C0002",
        "last_seen": "C0002",
        "source_scene_ids": [
          "S0004"
        ],
        "source_group_ids": [
          "AG0003"
        ],
        "source_beat_ids": [
          "AB0003"
        ],
        "block_ids": [
          "EP0001B003"
        ],
        "visual_card_id": "VC000015",
        "asset_binding_id": "AB000015",
        "identity_summary": "老道给李凡的食物；食用可提升心情",
        "visual_anchor_summary": "芝麻饼",
        "design_prompt_fragments": [
          "芝麻饼",
          "老道给李凡的食物",
          "从虚空里抓出几个芝麻饼来",
          "抓着手里的芝麻饼啃了一口"
        ],
        "prop_core": [
          "芝麻饼",
          "老道给李凡的食物",
          "食用可提升心情",
          "从虚空里抓出几个芝麻饼来"
        ],
        "material_core": [],
        "form_core": [
          "芝麻饼",
          "老道给李凡的食物",
          "食用可提升心情"
        ],
        "usage_core": [
          "从虚空里抓出几个芝麻饼来",
          "抓着手里的芝麻饼啃了一口"
        ],
        "owner_candidates": [
          "老道",
          "李凡"
        ],
        "matched_terms": [
          "芝麻饼"
        ],
        "usage_hits": 1,
        "main_scene_candidates": [
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B003",
            "title": "系统初现",
            "kind": "bridge",
            "lead_scene_id": "S0004",
            "source_scene_ids": [
              "S0004"
            ],
            "source_group_ids": [
              "AG0003"
            ],
            "source_beat_ids": [
              "AB0003"
            ]
          }
        ],
        "asset_profile": {
          "asset_role": "prop",
          "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 次，适合优先建立道具/界面资产。",
        "risk_flags": [
          "visual_reference_gap",
          "visual_lock_gap"
        ],
        "risk_summary": "参考图缺口；视觉锁定缺口",
        "init_action": "ready",
        "init_action_reason": "当前信息已足够直接进入 Dramart 初始化",
        "source_ref": {
          "episode_ids": [
            "EP0001"
          ],
          "block_ids": [
            "EP0001B003"
          ],
          "source_scene_ids": [
            "S0004"
          ],
          "source_group_ids": [
            "AG0003"
          ],
          "source_beat_ids": [
            "AB0003"
          ],
          "entity_uid": "E000015",
          "visual_card_id": "VC000015",
          "voice_card_id": "",
          "asset_binding_id": "AB000015"
        }
      }
    ],
    "voices": [
      {
        "entity_uid": "E000002",
        "name": "李凡",
        "canonical_name": "李凡",
        "display_name": "李凡",
        "identity_conflict": {},
        "conflict_group_id": "",
        "priority": "P2",
        "role_tier": "supporting",
        "voice_card_id": "VO000002",
        "asset_binding_id": "AB000002",
        "voice_role": "character",
        "episode_ids": [
          "EP0001"
        ],
        "source_scene_ids": [
          "S0001",
          "S0002",
          "S0003",
          "S0004"
        ],
        "source_group_ids": [
          "AG0001",
          "AG0002",
          "AG0003"
        ],
        "source_beat_ids": [
          "AB0001",
          "AB0002",
          "AB0003"
        ],
        "block_ids": [
          "EP0001B002",
          "EP0001B003"
        ],
        "voice_anchor_summary": "李凡；角色 / 未知性别呈现 / 幼年感；自然人声",
        "timbre": [
          "自然人声",
          "保持跨场景音色稳定",
          "带年轻感"
        ],
        "pitch": "high",
        "pace": "fast",
        "speaking_style": [
          "吐字清晰",
          "语流更轻快"
        ],
        "delivery_core": [
          "锁定基础音色，不因场景切换改变发声位置",
          "情绪变化优先通过力度和语速调整，不改人声底色",
          "保持幼年感，不在不同段落间来回漂移"
        ],
        "casting_tags": [
          "角色",
          "未知性别呈现",
          "幼年感",
          "自然人声",
          "保持跨场景音色稳定",
          "吐字清晰",
          "语流更轻快"
        ],
        "voice_variants": [
          {
            "variant_id": "VO000002:default",
            "label": "常规对白",
            "pace": "fast",
            "pitch": "high",
            "timbre": [
              "自然人声",
              "保持跨场景音色稳定"
            ],
            "speaking_style": [
              "吐字清晰",
              "语流更轻快"
            ],
            "notes": "默认对白态，用于大多数正常交流场景。"
          },
          {
            "variant_id": "VO000002:low",
            "label": "低强度对白",
            "pace": "slow",
            "pitch": "high",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "压低力度"
            ],
            "notes": "适用于密谈、独白或收束段落。"
          },
          {
            "variant_id": "VO000002:high",
            "label": "高强度对白",
            "pace": "fast",
            "pitch": "high",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "提高爆发力"
            ],
            "notes": "适用于冲突、喊叫或高压时刻。"
          }
        ],
        "asset_profile": {
          "asset_role": "character",
          "priority": "supporting",
          "required_visual_assets": [
            "角色主设图",
            "角色半身参考图"
          ],
          "optional_visual_assets": [
            "状态变体图"
          ],
          "required_voice_assets": [
            "基础音色样例",
            "情绪扩展样例"
          ],
          "usage_hints": [
            "李凡流着冷汗"
          ],
          "owner_candidates": [
            "穿越者心理健康维护系统",
            "老道",
            "芝麻饼",
            "墨竹山"
          ],
          "variant_keys": [
            "VC000002:costume:default",
            "VC000002:state:age",
            "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": true,
          "manual_blocked": false,
          "manual_needs_fix_scopes": [
            "声音设定"
          ],
          "manual_blocked_scopes": [],
          "manual_approved_scopes": [
            "实体主档"
          ],
          "manual_locked_scopes": [
            "实体主档"
          ],
          "manual_override_flags": {
            "entity_ok": true,
            "visual_ok": false,
            "voice_ok": false,
            "asset_ok": false
          },
          "review_overlay": {
            "scopes": {
              "entity": {
                "status": "approved",
                "locked": true,
                "reviewer": "codex",
                "review_note": "smoke: 主档已确认",
                "labels": [
                  "smoke",
                  "主档"
                ],
                "updated_at": "2026-03-28T21:04:40Z",
                "is_approved": true,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": false,
                "is_open": false
              },
              "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": "needs_fix",
                "locked": false,
                "reviewer": "codex",
                "review_note": "smoke: 待补 voice binding",
                "labels": [
                  "smoke",
                  "待补绑定"
                ],
                "updated_at": "2026-03-28T21:04:40Z",
                "is_approved": false,
                "is_na": false,
                "is_blocked": false,
                "is_needs_fix": true,
                "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": true
          },
          "ready_for_dramart": false,
          "ready_for_dramart_init": false
        },
        "review_overlay": {
          "scopes": {
            "entity": {
              "status": "approved",
              "locked": true,
              "reviewer": "codex",
              "review_note": "smoke: 主档已确认",
              "labels": [
                "smoke",
                "主档"
              ],
              "updated_at": "2026-03-28T21:04:40Z",
              "is_approved": true,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": false,
              "is_open": false
            },
            "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": "needs_fix",
              "locked": false,
              "reviewer": "codex",
              "review_note": "smoke: 待补 voice binding",
              "labels": [
                "smoke",
                "待补绑定"
              ],
              "updated_at": "2026-03-28T21:04:40Z",
              "is_approved": false,
              "is_na": false,
              "is_blocked": false,
              "is_needs_fix": true,
              "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": true
        },
        "needs": [
          "补角色语音参考",
          "补角色音色绑定",
          "人工待修：声音设定"
        ],
        "risk_flags": [
          "manual_needs_fix",
          "visual_reference_gap",
          "voice_reference_gap",
          "voice_binding_gap",
          "visual_lock_gap"
        ],
        "risk_summary": "人工待修；参考图缺口；语音参考缺口",
        "init_action": "review_required",
        "init_action_reason": "人工待修；参考图缺口；语音参考缺口",
        "source_ref": {
          "episode_ids": [
            "EP0001"
          ],
          "block_ids": [
            "EP0001B002",
            "EP0001B003"
          ],
          "source_scene_ids": [
            "S0001",
            "S0002",
            "S0003",
            "S0004"
          ],
          "source_group_ids": [
            "AG0001",
            "AG0002",
            "AG0003"
          ],
          "source_beat_ids": [
            "AB0001",
            "AB0002",
            "AB0003"
          ],
          "entity_uid": "E000002",
          "visual_card_id": "",
          "voice_card_id": "VO000002",
          "asset_binding_id": "AB000002"
        },
        "main_scene_candidates": [
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B002",
            "title": "童子入门",
            "kind": "dialogue",
            "lead_scene_id": "S0002",
            "source_scene_ids": [
              "S0002",
              "S0003"
            ],
            "source_group_ids": [
              "AG0002"
            ],
            "source_beat_ids": [
              "AB0002"
            ]
          },
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B003",
            "title": "系统初现",
            "kind": "bridge",
            "lead_scene_id": "S0004",
            "source_scene_ids": [
              "S0004"
            ],
            "source_group_ids": [
              "AG0003"
            ],
            "source_beat_ids": [
              "AB0003"
            ]
          }
        ]
      },
      {
        "entity_uid": "E000001",
        "name": "老道",
        "canonical_name": "老道",
        "display_name": "老道",
        "identity_conflict": {},
        "conflict_group_id": "",
        "priority": "P2",
        "role_tier": "supporting",
        "voice_card_id": "VO000001",
        "asset_binding_id": "AB000001",
        "voice_role": "character",
        "episode_ids": [
          "EP0001"
        ],
        "source_scene_ids": [
          "S0001",
          "S0002",
          "S0003",
          "S0004"
        ],
        "source_group_ids": [
          "AG0001",
          "AG0002",
          "AG0003"
        ],
        "source_beat_ids": [
          "AB0001",
          "AB0002",
          "AB0003"
        ],
        "block_ids": [
          "EP0001B002",
          "EP0001B003"
        ],
        "voice_anchor_summary": "老道；角色 / 男性向 / 年长感；自然人声",
        "timbre": [
          "自然人声",
          "保持跨场景音色稳定",
          "带年长感"
        ],
        "pitch": "low",
        "pace": "slow",
        "speaking_style": [
          "吐字清晰",
          "语气沉稳"
        ],
        "delivery_core": [
          "锁定基础音色，不因场景切换改变发声位置",
          "情绪变化优先通过力度和语速调整，不改人声底色",
          "保持年长感，不在不同段落间来回漂移"
        ],
        "casting_tags": [
          "角色",
          "男性向",
          "年长感",
          "自然人声",
          "保持跨场景音色稳定",
          "吐字清晰",
          "语气沉稳"
        ],
        "voice_variants": [
          {
            "variant_id": "VO000001:default",
            "label": "常规对白",
            "pace": "slow",
            "pitch": "low",
            "timbre": [
              "自然人声",
              "保持跨场景音色稳定"
            ],
            "speaking_style": [
              "吐字清晰",
              "语气沉稳"
            ],
            "notes": "默认对白态，用于大多数正常交流场景。"
          },
          {
            "variant_id": "VO000001:low",
            "label": "低强度对白",
            "pace": "slow",
            "pitch": "low",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "压低力度"
            ],
            "notes": "适用于密谈、独白或收束段落。"
          },
          {
            "variant_id": "VO000001:high",
            "label": "高强度对白",
            "pace": "fast",
            "pitch": "low",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "提高爆发力"
            ],
            "notes": "适用于冲突、喊叫或高压时刻。"
          }
        ],
        "asset_profile": {
          "asset_role": "character",
          "priority": "supporting",
          "required_visual_assets": [
            "角色主设图",
            "角色半身参考图"
          ],
          "optional_visual_assets": [
            "状态变体图"
          ],
          "required_voice_assets": [
            "基础音色样例",
            "情绪扩展样例"
          ],
          "usage_hints": [
            "墨竹山法坛前老道",
            "墨竹山法坛前的老道",
            "老道士已经阴沉着脸走过来"
          ],
          "owner_candidates": [
            "朱木剑",
            "修士",
            "童子",
            "李凡"
          ],
          "variant_keys": [
            "VC000001:costume:default",
            "VC000001:state:age",
            "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": [
            "EP0001B002",
            "EP0001B003"
          ],
          "source_scene_ids": [
            "S0001",
            "S0002",
            "S0003",
            "S0004"
          ],
          "source_group_ids": [
            "AG0001",
            "AG0002",
            "AG0003"
          ],
          "source_beat_ids": [
            "AB0001",
            "AB0002",
            "AB0003"
          ],
          "entity_uid": "E000001",
          "visual_card_id": "",
          "voice_card_id": "VO000001",
          "asset_binding_id": "AB000001"
        },
        "main_scene_candidates": [
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B002",
            "title": "童子入门",
            "kind": "dialogue",
            "lead_scene_id": "S0002",
            "source_scene_ids": [
              "S0002",
              "S0003"
            ],
            "source_group_ids": [
              "AG0002"
            ],
            "source_beat_ids": [
              "AB0002"
            ]
          },
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B003",
            "title": "系统初现",
            "kind": "bridge",
            "lead_scene_id": "S0004",
            "source_scene_ids": [
              "S0004"
            ],
            "source_group_ids": [
              "AG0003"
            ],
            "source_beat_ids": [
              "AB0003"
            ]
          }
        ]
      },
      {
        "entity_uid": "E000011",
        "name": "修士",
        "canonical_name": "修士",
        "display_name": "修士",
        "identity_conflict": {},
        "conflict_group_id": "",
        "priority": "P3",
        "role_tier": "featured",
        "voice_card_id": "VO000011",
        "asset_binding_id": "AB000011",
        "voice_role": "character",
        "episode_ids": [
          "EP0001"
        ],
        "source_scene_ids": [
          "S0001",
          "S0002",
          "S0003",
          "S0004"
        ],
        "source_group_ids": [
          "AG0001",
          "AG0002",
          "AG0003"
        ],
        "source_beat_ids": [
          "AB0001",
          "AB0002",
          "AB0003"
        ],
        "block_ids": [
          "EP0001B002"
        ],
        "voice_anchor_summary": "修士；角色 / 未知性别呈现 / 未知年龄感；自然人声",
        "timbre": [
          "自然人声",
          "保持跨场景音色稳定"
        ],
        "pitch": "unknown",
        "pace": "medium",
        "speaking_style": [
          "吐字清晰"
        ],
        "delivery_core": [
          "锁定基础音色，不因场景切换改变发声位置",
          "情绪变化优先通过力度和语速调整，不改人声底色"
        ],
        "casting_tags": [
          "角色",
          "未知性别呈现",
          "未知年龄感",
          "自然人声",
          "保持跨场景音色稳定",
          "吐字清晰"
        ],
        "voice_variants": [
          {
            "variant_id": "VO000011:default",
            "label": "常规对白",
            "pace": "medium",
            "pitch": "unknown",
            "timbre": [
              "自然人声",
              "保持跨场景音色稳定"
            ],
            "speaking_style": [
              "吐字清晰"
            ],
            "notes": "默认对白态，用于大多数正常交流场景。"
          },
          {
            "variant_id": "VO000011:low",
            "label": "低强度对白",
            "pace": "slow",
            "pitch": "unknown",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "压低力度"
            ],
            "notes": "适用于密谈、独白或收束段落。"
          },
          {
            "variant_id": "VO000011: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": [
            "VO000011:default",
            "VO000011:low",
            "VO000011: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": [
            "EP0001B002"
          ],
          "source_scene_ids": [
            "S0001",
            "S0002",
            "S0003",
            "S0004"
          ],
          "source_group_ids": [
            "AG0001",
            "AG0002",
            "AG0003"
          ],
          "source_beat_ids": [
            "AB0001",
            "AB0002",
            "AB0003"
          ],
          "entity_uid": "E000011",
          "visual_card_id": "",
          "voice_card_id": "VO000011",
          "asset_binding_id": "AB000011"
        },
        "main_scene_candidates": [
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B002",
            "title": "童子入门",
            "kind": "dialogue",
            "lead_scene_id": "S0002",
            "source_scene_ids": [
              "S0002",
              "S0003"
            ],
            "source_group_ids": [
              "AG0002"
            ],
            "source_beat_ids": [
              "AB0002"
            ]
          }
        ]
      },
      {
        "entity_uid": "E000012",
        "name": "童子",
        "canonical_name": "童子",
        "display_name": "童子",
        "identity_conflict": {},
        "conflict_group_id": "",
        "priority": "P4",
        "role_tier": "featured",
        "voice_card_id": "VO000012",
        "asset_binding_id": "AB000012",
        "voice_role": "character",
        "episode_ids": [
          "EP0001"
        ],
        "source_scene_ids": [
          "S0001",
          "S0002",
          "S0003",
          "S0004"
        ],
        "source_group_ids": [
          "AG0001",
          "AG0002",
          "AG0003"
        ],
        "source_beat_ids": [
          "AB0001",
          "AB0002",
          "AB0003"
        ],
        "block_ids": [
          "EP0001B002"
        ],
        "voice_anchor_summary": "童子；角色 / 未知性别呈现 / 幼年感；自然人声",
        "timbre": [
          "自然人声",
          "保持跨场景音色稳定",
          "带年轻感"
        ],
        "pitch": "high",
        "pace": "fast",
        "speaking_style": [
          "吐字清晰",
          "语流更轻快"
        ],
        "delivery_core": [
          "锁定基础音色，不因场景切换改变发声位置",
          "情绪变化优先通过力度和语速调整，不改人声底色",
          "保持幼年感，不在不同段落间来回漂移"
        ],
        "casting_tags": [
          "角色",
          "未知性别呈现",
          "幼年感",
          "自然人声",
          "保持跨场景音色稳定",
          "吐字清晰",
          "语流更轻快"
        ],
        "voice_variants": [
          {
            "variant_id": "VO000012:default",
            "label": "常规对白",
            "pace": "fast",
            "pitch": "high",
            "timbre": [
              "自然人声",
              "保持跨场景音色稳定"
            ],
            "speaking_style": [
              "吐字清晰",
              "语流更轻快"
            ],
            "notes": "默认对白态，用于大多数正常交流场景。"
          },
          {
            "variant_id": "VO000012:low",
            "label": "低强度对白",
            "pace": "slow",
            "pitch": "high",
            "timbre": [
              "自然人声"
            ],
            "speaking_style": [
              "吐字清晰",
              "压低力度"
            ],
            "notes": "适用于密谈、独白或收束段落。"
          },
          {
            "variant_id": "VO000012:high",
            "label": "高强度对白",
            "pace": "fast",
            "pitch": "high",
            "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": [
            "VC000012:state:age",
            "VO000012:default",
            "VO000012:low",
            "VO000012: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": true,
          "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": 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
        },
        "needs": [
          "补角色语音参考",
          "补角色音色绑定"
        ],
        "risk_flags": [
          "entity_review",
          "visual_reference_gap",
          "voice_reference_gap",
          "voice_binding_gap",
          "visual_lock_gap"
        ],
        "risk_summary": "实体主档待复核；参考图缺口；语音参考缺口",
        "init_action": "review_required",
        "init_action_reason": "实体主档待复核；参考图缺口；语音参考缺口",
        "source_ref": {
          "episode_ids": [
            "EP0001"
          ],
          "block_ids": [
            "EP0001B002"
          ],
          "source_scene_ids": [
            "S0001",
            "S0002",
            "S0003",
            "S0004"
          ],
          "source_group_ids": [
            "AG0001",
            "AG0002",
            "AG0003"
          ],
          "source_beat_ids": [
            "AB0001",
            "AB0002",
            "AB0003"
          ],
          "entity_uid": "E000012",
          "visual_card_id": "",
          "voice_card_id": "VO000012",
          "asset_binding_id": "AB000012"
        },
        "main_scene_candidates": [
          {
            "episode_id": "EP0001",
            "block_id": "EP0001B002",
            "title": "童子入门",
            "kind": "dialogue",
            "lead_scene_id": "S0002",
            "source_scene_ids": [
              "S0002",
              "S0003"
            ],
            "source_group_ids": [
              "AG0002"
            ],
            "source_beat_ids": [
              "AB0002"
            ]
          }
        ]
      }
    ]
  },
  "asset_action_summary": {
    "characters": {
      "review_required": 2,
      "must_build": 0,
      "should_build": 0,
      "ready": 2
    },
    "locations": {
      "review_required": 0,
      "must_build": 0,
      "should_build": 1,
      "ready": 2
    },
    "props": {
      "review_required": 0,
      "must_build": 0,
      "should_build": 0,
      "ready": 1
    },
    "voices": {
      "review_required": 2,
      "must_build": 0,
      "should_build": 0,
      "ready": 2
    }
  },
  "risk_summary": {
    "total_risk_item_count": 44,
    "risk_flag_count": 6,
    "flags": [
      {
        "flag": "visual_lock_gap",
        "count": 12,
        "asset_types": [
          "character",
          "location",
          "prop",
          "voice"
        ],
        "examples": [
          "李凡",
          "老道",
          "修士",
          "童子",
          "墨竹山",
          "瑶光洞"
        ]
      },
      {
        "flag": "visual_reference_gap",
        "count": 12,
        "asset_types": [
          "character",
          "location",
          "prop",
          "voice"
        ],
        "examples": [
          "李凡",
          "老道",
          "修士",
          "童子",
          "墨竹山",
          "瑶光洞"
        ]
      },
      {
        "flag": "voice_binding_gap",
        "count": 8,
        "asset_types": [
          "character",
          "voice"
        ],
        "examples": [
          "李凡",
          "老道",
          "修士",
          "童子"
        ]
      },
      {
        "flag": "voice_reference_gap",
        "count": 8,
        "asset_types": [
          "character",
          "voice"
        ],
        "examples": [
          "李凡",
          "老道",
          "修士",
          "童子"
        ]
      },
      {
        "flag": "entity_review",
        "count": 2,
        "asset_types": [
          "character",
          "voice"
        ],
        "examples": [
          "童子"
        ]
      },
      {
        "flag": "manual_needs_fix",
        "count": 2,
        "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": "E000002",
      "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": "E000002",
      "source_refs": [
        "EP0001"
      ],
      "recommended_action": "在 Dramart 或配音侧先绑定稳定音色。"
    },
    {
      "check_id": "CHK0003",
      "category": "manual_review",
      "severity": "warning",
      "status": "todo",
      "title": "角色人工待修：李凡",
      "detail": "人工复核认为该对象仍有待修范围，需要先补齐设定或资产，再继续下游流程。",
      "target_type": "character",
      "target_id": "E000002",
      "source_refs": [
        "EP0001"
      ],
      "recommended_action": "根据实体页中的 review_note 补修后，再次确认该对象是否可用。"
    },
    {
      "check_id": "CHK0004",
      "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": "CHK0005",
      "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": "CHK0006",
      "category": "character_asset",
      "severity": "warning",
      "status": "todo",
      "title": "角色缺参考图：修士",
      "detail": "该角色尚未提供 reference_images，Dramart 项目初始化时容易出现形象漂移。",
      "target_type": "character",
      "target_id": "E000011",
      "source_refs": [
        "EP0001"
      ],
      "recommended_action": "先补主形象图，再决定是否做 LoRA 或角色锁定。"
    },
    {
      "check_id": "CHK0007",
      "category": "voice_binding",
      "severity": "warning",
      "status": "todo",
      "title": "角色缺音色绑定：修士",
      "detail": "该角色已有声音卡或语音角色设定，但还没有 provider voice 绑定。",
      "target_type": "character",
      "target_id": "E000011",
      "source_refs": [
        "EP0001"
      ],
      "recommended_action": "在 Dramart 或配音侧先绑定稳定音色。"
    },
    {
      "check_id": "CHK0008",
      "category": "character_asset",
      "severity": "warning",
      "status": "todo",
      "title": "角色缺参考图：童子",
      "detail": "该角色尚未提供 reference_images，Dramart 项目初始化时容易出现形象漂移。",
      "target_type": "character",
      "target_id": "E000012",
      "source_refs": [
        "EP0001"
      ],
      "recommended_action": "先补主形象图，再决定是否做 LoRA 或角色锁定。"
    },
    {
      "check_id": "CHK0009",
      "category": "voice_binding",
      "severity": "warning",
      "status": "todo",
      "title": "角色缺音色绑定：童子",
      "detail": "该角色已有声音卡或语音角色设定，但还没有 provider voice 绑定。",
      "target_type": "character",
      "target_id": "E000012",
      "source_refs": [
        "EP0001"
      ],
      "recommended_action": "在 Dramart 或配音侧先绑定稳定音色。"
    },
    {
      "check_id": "CHK0010",
      "category": "manual_review",
      "severity": "info",
      "status": "todo",
      "title": "角色主档待复核：童子",
      "detail": "实体主档仍处于待复核状态，建议在继续资产制作前先确认实体设定。",
      "target_type": "character",
      "target_id": "E000012",
      "source_refs": [
        "EP0001"
      ],
      "recommended_action": "在实体页确认实体主档后，再推进资产或上传。"
    },
    {
      "check_id": "CHK0011",
      "category": "location_asset",
      "severity": "info",
      "status": "todo",
      "title": "场景建议补参考：墨竹山",
      "detail": "主场景尚未准备参考图，后续搭建分镜时可能缺乏统一视觉锚点。",
      "target_type": "location",
      "target_id": "E000003",
      "source_refs": [
        "EP0001"
      ],
      "recommended_action": "优先补一张主场景参考图或情绪板。"
    },
    {
      "check_id": "CHK0012",
      "category": "location_asset",
      "severity": "info",
      "status": "todo",
      "title": "场景建议补参考：瑶光洞",
      "detail": "主场景尚未准备参考图，后续搭建分镜时可能缺乏统一视觉锚点。",
      "target_type": "location",
      "target_id": "E000008",
      "source_refs": [
        "EP0001"
      ],
      "recommended_action": "优先补一张主场景参考图或情绪板。"
    },
    {
      "check_id": "CHK0013",
      "category": "location_asset",
      "severity": "info",
      "status": "todo",
      "title": "场景建议补参考：墨竹山法坛",
      "detail": "主场景尚未准备参考图，后续搭建分镜时可能缺乏统一视觉锚点。",
      "target_type": "location",
      "target_id": "",
      "source_refs": [
        "EP0001"
      ],
      "recommended_action": "优先补一张主场景参考图或情绪板。"
    },
    {
      "check_id": "CHK0014",
      "category": "prop_asset",
      "severity": "info",
      "status": "todo",
      "title": "道具建议补参考：芝麻饼",
      "detail": "关键道具/系统资产尚未准备参考图。",
      "target_type": "prop",
      "target_id": "E000015",
      "source_refs": [
        "C0002"
      ],
      "recommended_action": "补一张标准参考图，必要时再补特写或界面规范。"
    },
    {
      "check_id": "CHK0015",
      "category": "time_mode",
      "severity": "info",
      "status": "todo",
      "title": "存在非主线时间层",
      "detail": "当前剧本包含回忆、梦境或并行线等时间层，上传到 Dramart 前需要显式标注。",
      "target_type": "package",
      "target_id": "outline",
      "source_refs": [
        "flashback"
      ],
      "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": "# 道祖是克苏鲁\n\n## 故事大纲\n故事核心：穿越者李凡在险恶的墨竹山醒来，被迫接受残酷的修仙法则，并激活了一个看似无用、甚至反噬的“心理健康维护系统”。\n核心钩子：险峻山峦，墨色竹海翻涌，毒瘴弥漫。镜头推进，一片人力开凿的平地上，一尊八臂六首的诡异魔尊法相森然矗立——谁在此建坛？为何建坛？\n\n## 主要人物\n- 李凡：主要角色\n- 老道：法坛前只有个墨帻法褐的老道\n- 修士：角色姓名\n- 童子：功能角色\n\n## 分集导览\n- 第01集 魔尊法坛：穿越者李凡在险恶的墨竹山醒来，被迫接受残酷的修仙法则，并激活了一个看似无用、甚至反噬的“心理健康维护系统”。\n\n## 正文剧本\n\n# 第01集 魔尊法坛\n\n主要人物：老道、修士、童子、李凡\n主要场景：墨竹山、瑶光洞、墨竹山法坛\n一句话梗概：穿越者李凡在险恶的墨竹山醒来，被迫接受残酷的修仙法则，并激活了一个看似无用、甚至反噬的“心理健康维护系统”。\n剧情摘要：墨竹山深处，一座诡异的魔尊法坛矗立在毒瘴竹海之中。三名修士将一群童子送至瑶光洞，交给一位神秘老道。童子李凡是一名穿越者，他被迫接受现实，并尝试呼唤系统。系统终于出现，却是一个“心理健康维护系统”，在李凡烦躁咆哮时，老道有所察觉。李凡无奈选择了一项先天气运，系统随即宣布其心情下降，让他初次尝到这个“金手指”的代价。\n开场钩子：险峻山峦，墨色竹海翻涌，毒瘴弥漫。镜头推进，一片人力开凿的平地上，一尊八臂六首的诡异魔尊法相森然矗立——谁在此建坛？为何建坛？\n结尾钩子：冰冷的系统提示音在李凡脑中响起：“心情下降1点。”他握着老道扔来的芝麻饼，愣在原地，第一次意识到这个伴随穿越而来的“金手指”，似乎并非祝福。\n\n## 场次01 险山魔坛\n\n场景：墨竹山\n\n【墨竹山 外 日】\n\n△ 远景，两山十四峰如獠牙刺天，墨色的竹海在林间翻涌，毒瘴如纱，隐约传来妖兽的低吼。\n\n△ 镜头穿过险峻的山峦与密林，最终落在一片突兀的平地上。地面有明显的人力开凿痕迹。\n\n△ 平地中央，矗立着一座石制法坛。法坛之上，是一尊造型诡异、生有八臂六首的魔尊石像，面目狰狞，俯瞰着这片蛮荒之地。\n\n（氛围：危险，神秘，充满未解之谜）\n\n转场：转场至瑶光洞，时间稍早。\n\n## 场次02 童子入门\n\n时间层：flashback\n人物：老道、修士、童子、李凡\n场景：瑶光洞、墨竹山法坛\n\n【瑶光洞 外 日】\n\n△ 三名修士打扮的男子，领着七八个面色惶恐的童子（约十岁左右）走来。其中一人正是李凡，眼神迷茫中带着震惊。\n\n△ 一名邋遢老道蹲在洞口，抬眼看了看。\n\n修士甲（对老道拱手）：人送来了。都是按规矩挑的，有灵根的，有道心的，还有……疑似身怀魔胎的。\n\n修士乙（低声补充）：玉蟾婆那老妖最近吃人凶，这些童子是从她嘴边抢下来的。\n\n△ 老道点点头，没说话，只是用手里的木棍在地上画了一个大圈。\n\n老道（声音沙哑）：入夜后，待在圈里。出圈者，生死自负。\n\n△ 童子们吓得缩了缩。李凡（内心OS）：穿越？修仙世界？开什么玩笑！这老道看起来就不像好人……系统！系统你在吗？！\n\n△ 李凡观察着老道，心中评估着威胁，最终深吸一口气。（内心OS）：算了，既来之则安之。系统，给我出来！\n\n转场：李凡的呼唤得到了回应，系统界面在他眼前浮现。\n\n## 场次03 系统初现\n\n人物：李凡、老道\n\n【瑶光洞 外 日】\n\n△ 李凡眼前突然浮现出一片半透明的蓝色光幕，伴有轻微的电子音效。\n\n△ 光幕上显示文字：“欢迎使用‘心理健康维护系统’。检测到宿主处于高压环境，请选择一项先天气运，以辅助心态调整。”\n\n△ 下方列出几个选项：【镇静一点】、【乐观些许】、【麻木三分】等。\n\n李凡（愣住，内心咆哮）：心理健康维护系统？！我要的是修仙功法！是金手指！不是心理辅导！\n\n△ 李凡因烦躁和失望，不自觉地低吼出声。\n\n△ 蹲在洞口的老道忽然转过头，浑浊的眼睛瞪了李凡一眼。\n\n△ 老道手一扬，一块干硬的芝麻饼扔到李凡脚边。\n\n李凡（吓了一跳，赶紧低头）：对、对不起……\n\n△ 李凡看着地上的饼，有些发愣。\n\n△ 系统光幕上，“镇静一点”的选项被自动高亮选中。\n\n系统提示音（在李凡脑中响起）：先天气运【镇静一点】已确认绑定。温馨提示：检测到宿主产生剧烈情绪波动，心情下降1点。\n\n△ 李凡握着芝麻饼，表情僵住，一股莫名的低落感涌上心头。",
    "upload_ready": true,
    "recommended_upload_mode": "single_file",
    "validation": {
      "max_chars_per_upload": 100000,
      "single_file_char_count": 1794,
      "single_file_within_limit": true,
      "episode_count": 1,
      "part_count": 1,
      "oversized_episode_count": 0,
      "oversized_part_count": 0
    },
    "episode_uploads": [
      {
        "episode_id": "EP0001",
        "title": "第01集 魔尊法坛",
        "filename": "03e_dramart_upload_EP0001.md",
        "char_count": 1503,
        "block_count": 3,
        "time_modes": [
          "unknown",
          "mainline",
          "flashback"
        ],
        "source_scene_ids": [
          "S0001",
          "S0002",
          "S0003",
          "S0004"
        ],
        "source_group_ids": [
          "AG0001",
          "AG0002",
          "AG0003"
        ],
        "source_beat_ids": [
          "AB0001",
          "AB0002",
          "AB0003"
        ],
        "markdown": "# 第01集 魔尊法坛\n\n主要人物：老道、修士、童子、李凡\n主要场景：墨竹山、瑶光洞、墨竹山法坛\n一句话梗概：穿越者李凡在险恶的墨竹山醒来，被迫接受残酷的修仙法则，并激活了一个看似无用、甚至反噬的“心理健康维护系统”。\n剧情摘要：墨竹山深处，一座诡异的魔尊法坛矗立在毒瘴竹海之中。三名修士将一群童子送至瑶光洞，交给一位神秘老道。童子李凡是一名穿越者，他被迫接受现实，并尝试呼唤系统。系统终于出现，却是一个“心理健康维护系统”，在李凡烦躁咆哮时，老道有所察觉。李凡无奈选择了一项先天气运，系统随即宣布其心情下降，让他初次尝到这个“金手指”的代价。\n开场钩子：险峻山峦，墨色竹海翻涌，毒瘴弥漫。镜头推进，一片人力开凿的平地上，一尊八臂六首的诡异魔尊法相森然矗立——谁在此建坛？为何建坛？\n结尾钩子：冰冷的系统提示音在李凡脑中响起：“心情下降1点。”他握着老道扔来的芝麻饼，愣在原地，第一次意识到这个伴随穿越而来的“金手指”，似乎并非祝福。\n\n## 场次01 险山魔坛\n\n场景：墨竹山\n\n【墨竹山 外 日】\n\n△ 远景，两山十四峰如獠牙刺天，墨色的竹海在林间翻涌，毒瘴如纱，隐约传来妖兽的低吼。\n\n△ 镜头穿过险峻的山峦与密林，最终落在一片突兀的平地上。地面有明显的人力开凿痕迹。\n\n△ 平地中央，矗立着一座石制法坛。法坛之上，是一尊造型诡异、生有八臂六首的魔尊石像，面目狰狞，俯瞰着这片蛮荒之地。\n\n（氛围：危险，神秘，充满未解之谜）\n\n转场：转场至瑶光洞，时间稍早。\n\n## 场次02 童子入门\n\n时间层：flashback\n人物：老道、修士、童子、李凡\n场景：瑶光洞、墨竹山法坛\n\n【瑶光洞 外 日】\n\n△ 三名修士打扮的男子，领着七八个面色惶恐的童子（约十岁左右）走来。其中一人正是李凡，眼神迷茫中带着震惊。\n\n△ 一名邋遢老道蹲在洞口，抬眼看了看。\n\n修士甲（对老道拱手）：人送来了。都是按规矩挑的，有灵根的，有道心的，还有……疑似身怀魔胎的。\n\n修士乙（低声补充）：玉蟾婆那老妖最近吃人凶，这些童子是从她嘴边抢下来的。\n\n△ 老道点点头，没说话，只是用手里的木棍在地上画了一个大圈。\n\n老道（声音沙哑）：入夜后，待在圈里。出圈者，生死自负。\n\n△ 童子们吓得缩了缩。李凡（内心OS）：穿越？修仙世界？开什么玩笑！这老道看起来就不像好人……系统！系统你在吗？！\n\n△ 李凡观察着老道，心中评估着威胁，最终深吸一口气。（内心OS）：算了，既来之则安之。系统，给我出来！\n\n转场：李凡的呼唤得到了回应，系统界面在他眼前浮现。\n\n## 场次03 系统初现\n\n人物：李凡、老道\n\n【瑶光洞 外 日】\n\n△ 李凡眼前突然浮现出一片半透明的蓝色光幕，伴有轻微的电子音效。\n\n△ 光幕上显示文字：“欢迎使用‘心理健康维护系统’。检测到宿主处于高压环境，请选择一项先天气运，以辅助心态调整。”\n\n△ 下方列出几个选项：【镇静一点】、【乐观些许】、【麻木三分】等。\n\n李凡（愣住，内心咆哮）：心理健康维护系统？！我要的是修仙功法！是金手指！不是心理辅导！\n\n△ 李凡因烦躁和失望，不自觉地低吼出声。\n\n△ 蹲在洞口的老道忽然转过头，浑浊的眼睛瞪了李凡一眼。\n\n△ 老道手一扬，一块干硬的芝麻饼扔到李凡脚边。\n\n李凡（吓了一跳，赶紧低头）：对、对不起……\n\n△ 李凡看着地上的饼，有些发愣。\n\n△ 系统光幕上，“镇静一点”的选项被自动高亮选中。\n\n系统提示音（在李凡脑中响起）：先天气运【镇静一点】已确认绑定。温馨提示：检测到宿主产生剧烈情绪波动，心情下降1点。\n\n△ 李凡握着芝麻饼，表情僵住，一股莫名的低落感涌上心头。",
        "source_ref": {
          "episode_ids": [
            "EP0001"
          ],
          "block_ids": [],
          "source_scene_ids": [
            "S0001",
            "S0002",
            "S0003",
            "S0004"
          ],
          "source_group_ids": [
            "AG0001",
            "AG0002",
            "AG0003"
          ],
          "source_beat_ids": [
            "AB0001",
            "AB0002",
            "AB0003"
          ],
          "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": 1503,
        "within_limit": true,
        "markdown": "# 第01集 魔尊法坛\n\n主要人物：老道、修士、童子、李凡\n主要场景：墨竹山、瑶光洞、墨竹山法坛\n一句话梗概：穿越者李凡在险恶的墨竹山醒来，被迫接受残酷的修仙法则，并激活了一个看似无用、甚至反噬的“心理健康维护系统”。\n剧情摘要：墨竹山深处，一座诡异的魔尊法坛矗立在毒瘴竹海之中。三名修士将一群童子送至瑶光洞，交给一位神秘老道。童子李凡是一名穿越者，他被迫接受现实，并尝试呼唤系统。系统终于出现，却是一个“心理健康维护系统”，在李凡烦躁咆哮时，老道有所察觉。李凡无奈选择了一项先天气运，系统随即宣布其心情下降，让他初次尝到这个“金手指”的代价。\n开场钩子：险峻山峦，墨色竹海翻涌，毒瘴弥漫。镜头推进，一片人力开凿的平地上，一尊八臂六首的诡异魔尊法相森然矗立——谁在此建坛？为何建坛？\n结尾钩子：冰冷的系统提示音在李凡脑中响起：“心情下降1点。”他握着老道扔来的芝麻饼，愣在原地，第一次意识到这个伴随穿越而来的“金手指”，似乎并非祝福。\n\n## 场次01 险山魔坛\n\n场景：墨竹山\n\n【墨竹山 外 日】\n\n△ 远景，两山十四峰如獠牙刺天，墨色的竹海在林间翻涌，毒瘴如纱，隐约传来妖兽的低吼。\n\n△ 镜头穿过险峻的山峦与密林，最终落在一片突兀的平地上。地面有明显的人力开凿痕迹。\n\n△ 平地中央，矗立着一座石制法坛。法坛之上，是一尊造型诡异、生有八臂六首的魔尊石像，面目狰狞，俯瞰着这片蛮荒之地。\n\n（氛围：危险，神秘，充满未解之谜）\n\n转场：转场至瑶光洞，时间稍早。\n\n## 场次02 童子入门\n\n时间层：flashback\n人物：老道、修士、童子、李凡\n场景：瑶光洞、墨竹山法坛\n\n【瑶光洞 外 日】\n\n△ 三名修士打扮的男子，领着七八个面色惶恐的童子（约十岁左右）走来。其中一人正是李凡，眼神迷茫中带着震惊。\n\n△ 一名邋遢老道蹲在洞口，抬眼看了看。\n\n修士甲（对老道拱手）：人送来了。都是按规矩挑的，有灵根的，有道心的，还有……疑似身怀魔胎的。\n\n修士乙（低声补充）：玉蟾婆那老妖最近吃人凶，这些童子是从她嘴边抢下来的。\n\n△ 老道点点头，没说话，只是用手里的木棍在地上画了一个大圈。\n\n老道（声音沙哑）：入夜后，待在圈里。出圈者，生死自负。\n\n△ 童子们吓得缩了缩。李凡（内心OS）：穿越？修仙世界？开什么玩笑！这老道看起来就不像好人……系统！系统你在吗？！\n\n△ 李凡观察着老道，心中评估着威胁，最终深吸一口气。（内心OS）：算了，既来之则安之。系统，给我出来！\n\n转场：李凡的呼唤得到了回应，系统界面在他眼前浮现。\n\n## 场次03 系统初现\n\n人物：李凡、老道\n\n【瑶光洞 外 日】\n\n△ 李凡眼前突然浮现出一片半透明的蓝色光幕，伴有轻微的电子音效。\n\n△ 光幕上显示文字：“欢迎使用‘心理健康维护系统’。检测到宿主处于高压环境，请选择一项先天气运，以辅助心态调整。”\n\n△ 下方列出几个选项：【镇静一点】、【乐观些许】、【麻木三分】等。\n\n李凡（愣住，内心咆哮）：心理健康维护系统？！我要的是修仙功法！是金手指！不是心理辅导！\n\n△ 李凡因烦躁和失望，不自觉地低吼出声。\n\n△ 蹲在洞口的老道忽然转过头，浑浊的眼睛瞪了李凡一眼。\n\n△ 老道手一扬，一块干硬的芝麻饼扔到李凡脚边。\n\n李凡（吓了一跳，赶紧低头）：对、对不起……\n\n△ 李凡看着地上的饼，有些发愣。\n\n△ 系统光幕上，“镇静一点”的选项被自动高亮选中。\n\n系统提示音（在李凡脑中响起）：先天气运【镇静一点】已确认绑定。温馨提示：检测到宿主产生剧烈情绪波动，心情下降1点。\n\n△ 李凡握着芝麻饼，表情僵住，一股莫名的低落感涌上心头。",
        "source_ref": {
          "episode_ids": [
            "EP0001"
          ],
          "block_ids": [],
          "source_scene_ids": [
            "S0001",
            "S0002",
            "S0003",
            "S0004"
          ],
          "source_group_ids": [
            "AG0001",
            "AG0002",
            "AG0003"
          ],
          "source_beat_ids": [
            "AB0001",
            "AB0002",
            "AB0003"
          ],
          "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",
        "S0002",
        "S0003",
        "S0004"
      ],
      "source_group_ids": [
        "AG0001",
        "AG0002",
        "AG0003"
      ],
      "source_beat_ids": [
        "AB0001",
        "AB0002",
        "AB0003"
      ],
      "entity_uid": "",
      "visual_card_id": "",
      "voice_card_id": "",
      "asset_binding_id": ""
    },
    "readiness_summary": {
      "status": "pass",
      "issue_count": 1,
      "fail_count": 0,
      "warn_count": 0,
      "info_count": 1,
      "episode_count": 1,
      "block_count": 3,
      "character_bio_count": 4,
      "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": 1794,
      "single_file_within_limit": true,
      "part_count": 1,
      "oversized_episode_count": 0,
      "oversized_part_count": 0,
      "has_global_preface": true,
      "time_layer_annotation_recommended": true
    },
    "readiness_issues": [
      {
        "code": "non_mainline_time_mode",
        "severity": "info",
        "title": "存在非主线时间层",
        "detail": "当前剧本包含回忆、梦境或并行线等时间层，上传时建议显式标注，以免平台误解时态切换。",
        "target_type": "package",
        "target_id": "",
        "source_refs": [
          "flashback"
        ],
        "recommended_action": "在分集标题、场次标题或正文中显式提示时间层切换。"
      }
    ]
  }
}