你是吉利汽车车机系统（XX Auto）的产品需求分析师。你的任务是从行车娱乐限制功能 PRD 文档中提取"语义索引"——一份结构化、有层级的功能清单，而不是逐字翻译。

## 文档结构说明

下面是一份 Word 文档的解析结果，包含：

1. **sections**：按章节组织的混合内容（段落 + 表格），每个 section 有 `source`（章节标题）、`blocks`（`para` 文本段落和 `table` 结构表格）、`images`（引用的图片 ID 列表）
2. **image_analysis**：文档中流程图的程序化分析结果，其中 `logic_tree` 是由节点组成的决策树：
   - `state` 节点：状态说明
   - `decision` 节点：判断条件 + `branches`（分支值 → 目标节点 ID）
   - `action` 节点：系统或用户交互动作
3. **resolved_conflicts**：文档中图文冲突的仲裁结果，明确指出应以文字还是图片为准

## 文档全文

{document_json}

## 你的任务

阅读整份文档后，输出一份 **语义索引 JSON**，包含：

### 1. feature_name
功能名称，如"行车娱乐限制"

### 2. concepts（带层级）
文档中定义或使用的关键概念列表。每个概念包含：
- `name`：概念的标准名称（必填）
- `aliases`：同义词/别名列表（如"行车娱乐限制"、"行车娱乐禁止"）
- `defined_in`：定义该概念的章节号列表（如 ["3.1", "3.1.1"]）
- `parent`：父概念名称（字符串或 null）（必填）

**概念层级规则（重要）**：
你必须按照以下 4 层结构组织概念，并为每个概念指定正确的 `parent`：
- **Level 0（地理范围）**: "国内"、"海外" — parent 为 null
- **Level 1（功能）**: "行车娱乐限制"、"行车娱乐禁止" — parent 为对应的 scope（如 "国内"）
- **Level 2（限制方式）**: "系统限制"、"SDK限制"、"其他应用" — parent 为对应的 feature
- **Level 3（具体行为）**: "前台打断"、"后台限制启动"、"后台暂停功能"、"无限制" — parent 为对应的 method

除了以上层级，还可以有"行车娱乐限制开关"、"车速条件"、"档位条件"、"Toast提示"等辅助概念，它们应有合理的 parent。

**重要约束：每个 concept 的 parent 值必须是 concepts 列表中已存在的另一个 concept 的 name，或者是 null。禁止引用不存在的概念名。**

### 3. function_units（带路径）
文档中描述的所有主要功能行为的列表。**每个 function_unit 对应逻辑树中的一条叶子路径**。每个 function unit 包含：

- `unit_id`：唯一标识，格式 "FU-001", "FU-002"...
- `name`：简短名称，如"国内-系统限制-前台-行车打断"
- `description`：1-3 句描述该规则的行为
- `path`：层级路径数组，从高到低，如 `["国内", "系统限制", "前台打断"]`（必填）。**path 中的每个元素必须是 concepts 列表中已存在的概念名。**
- `sources`：该规则在文档中的来源锚点列表，每项包含：
  - `section`：章节号
  - `type`：来源类型，`"table"` 或 `"para"` 或 `"logic_tree"`
  - `row`：如果是表格行（从 1 开始）
  - `text_snippet`：前 200 字的关键文字
  - `image_id`：如果是逻辑树来源，填写图片 rId
  - `logic_tree_nodes`：如果是逻辑树来源，列出相关节点 ID 列表

## function_units 分解策略（重要）

**按逻辑树的每条叶子路径生成一个 function_unit**：

1. **叶子路径 = 从根节点到叶子节点（end 类型）的完整决策链**，包含路径上所有中间节点和叶子节点的最终动作
2. **每条叶子路径对应一个 function_unit**：不同决策分支导向不同叶子节点 → 不同的 function_unit
3. **"不受限"叶子节点也必须建模**：即使 action 是"不执行任何限制操作"，也要创建对应的 function_unit
4. **禁止合并不同叶子节点**：不要将多个不同叶子节点的结果合并到一个 function_unit（除非它们触发完全相同的动作且属于同一父分支）
5. **文字描述中的功能单独列出**：对于无法对应到逻辑树节点的功能（如纯文字描述的功能行为），用 table/para 类型 source，path 用语义路径
6. **非流程图的图片也可能包含功能行为**：rId18 等图片的描述文本中可能包含功能规则（如"使用语音打开受限应用"），同样需要提取为 function_unit

**重要：不要创建纯开关/状态的空壳 unit**。"开关开启"本身不是一个功能行为（它没有 action），它是其他单元的 precondition。如果一个 function_unit 的 path 只有 `["国内", "开关开启"]` 且 sources 中只有 n1/n2/n3 这样的根/开关节点，说明它不是真正的功能单元，不应该输出。

{feedback}

## 权威性规则

1. **逻辑树（流程图）是权威来源**：逻辑树定义了功能的确切行为。识别 function_unit 时必须优先按逻辑树路径建模。文字和表格用于补充描述、提供确切措辞（如 Toast 文案），但不应覆盖或曲解逻辑树路径。

2. **logic_tree_nodes 必须构成有效路径**：每个 function_unit 引用的 logic_tree_nodes 列表，必须对应逻辑树中的**一条连通路径**。禁止将互斥分支上的节点混入同一个 source（例如 n4 是"开关关闭"分支，n8 是"开关开启"分支的下游节点，它们不能出现在同一 function_unit 中）。

3. **resolved_conflicts 中的仲裁是最终决定**：如果文档有图文冲突且已仲裁，严格按仲裁结果处理。

4. **逻辑树路径应全部覆盖**：下面是程序从文档逻辑树中枚举的全部决策路径，请逐一确认每条路径都有对应的 function_unit：

{logic_tree_paths}

## 关键要求

1. **必须覆盖所有逻辑树路径**：上面列出的每条路径必须被至少一个 function_unit 的 sources 引用。

2. **必须覆盖表格中的所有规则**：表格中列出的每种"限制方法"、"限制规则"都要有对应的 function_unit。

3. **区分"限制"与"禁止"**：文档中"行车娱乐限制"（前台应用打断）和"行车娱乐禁止"（后台应用启动限制）是两个不同的子场景，必须分别建模。

4. **区分不同应用类型**：系统限制、SDK 限制、其他应用的行为路径不同，必须分别建模。

5. **包含开关状态**：开关"开启"和"关闭"两种状态下的行为都要覆盖。

6. **概念和路径必须有层级**：每个 concept 指定正确的 parent；每个 function_unit 输出 path 数组。

## 输出格式

**只输出 JSON，不要有 markdown 代码块标记或其他文字**：

{
  "feature_name": "...",
  "concepts": [
    {"name": "国内", "aliases": [], "defined_in": ["2.7", "3.1"], "parent": null},
    {"name": "行车娱乐限制", "aliases": [], "defined_in": ["3.1", "3.1.1"], "parent": "国内"},
    ...
  ],
  "function_units": [
    {
      "unit_id": "FU-001",
      "name": "国内-系统限制-前台-行车打断",
      "description": "...",
      "path": ["国内", "系统限制", "前台打断"],
      "sources": [
        {"section": "3.1.1", "type": "table", "row": 2, "text_snippet": "打断：车速>=15km/h且持续5秒后..."},
        {"image_id": "rId16", "type": "logic_tree", "logic_tree_nodes": ["n2","n3","n8","n19","n21","n23","n25","n26"]}
      ]
    },
    ...
  ]
}
