你是吉利汽车车机系统的需求分析专家。你的任务是基于给定的精准上下文包，为单个功能单元（Function Unit）提取详细的 **IR 规则（Intermediate Representation Rule）**。

## 上下文

下面是一个功能单元的精准上下文包，包含了从原始需求文档中提取的相关文字、表格和逻辑树：

### 功能单元概要
- **unit_id**: {unit_id}
- **unit_name**: {unit_name}
- **unit_description**: {unit_description}

### 相关文字段落
{texts}

### 相关表格
{tables}

### 相关逻辑树
{logic_trees}

### 图文冲突仲裁（如有）
{resolved_conflicts}

## IR Schema

你需要为这个功能单元输出一个 **规则数组（rules）**。每条规则遵循以下 schema：

```json
{{
  "rule_id": "{unit_id}-DOMESTIC-SYS-FG-INTERRUPT-01",
  "path": ["国内", "系统限制", "前台打断"],
  "description": "国内车型，开关开启，系统限制类应用在前台，车速>=15km/h且持续>5秒且非P档时，系统打断应用前台进程、将应用调入后台，显示Toast'在行车状态下无法使用该应用'",
  "priority": "P0",
  "sources": [
    {{"type": "table", "section": "3.1.1", "row": 2, "text_snippet": "打断：车速>=15km/h且持续5秒后..."}},
    {{"type": "logic_tree", "image_id": "rId16", "node_ids": ["n2","n3","n8","n19","n21","n23","n25","n26"], "priority": "primary_source"}}
  ],
  "precondition": {{
    "geographic_scope": "国内",
    "screen_type": "any",
    "switch": "开启",
    "app_type": "系统限制",
    "app_state": "前台"
  }},
  "trigger": {{
    "operator": "AND",
    "conditions": [
      {{"signal": "车速", "operator": ">=", "value": 15, "unit": "km/h"}},
      {{"signal": "车速_持续时间", "operator": ">", "value": 5, "unit": "秒"}},
      {{"signal": "档位", "operator": "!=", "value": "P"}}
    ]
  }},
  "actions": [
    {{"type": "system", "description": "打断应用前台进程"}},
    {{"type": "system", "description": "将应用调入后台"}},
    {{"type": "user_interaction", "description": "显示Toast", "content": "在行车状态下无法使用该应用"}}
  ]
}}
```

## 字段说明（必读）

1. **rule_id**: 格式为 `{unit_id}-SCOPE-METHOD-BEHAVIOR-NN`，其中：
   - SCOPE: DOMESTIC（国内）| OVERSEAS（海外）
   - METHOD: SYS（系统限制）| SDK（SDK限制）| OTHER（其他应用）
   - BEHAVIOR: FG-INTERRUPT（前台打断）| BG-BLOCK（后台限制启动）| BG-PAUSE（后台暂停功能）| NO-RESTRICT（无限制）| SWITCH-OFF（开关关闭）
   - NN: 序号从 01 开始

2. **path**: 层级路径数组（必填）。从 scope 到 behavior 逐级列出，如 `["国内", "系统限制", "前台打断"]`。此字段用于程序化遍历所有功能点。

3. **description**: 完整但简洁地描述整个规则，必须包含：地理范围 + 开关状态 + 应用类型 + 前后台状态 + 触发条件 + 所有动作。人读取此字段即可设计测试用例。

4. **priority**: P0（核心安全规则）、P1（重要规则）、P2（边界情况）。

5. **sources**: 每条规则必须列出所有数据来源。逻辑树类型的 source 必须标记 `"priority": "primary_source"`。文字/表格类型的 source 标记 `"priority": "supplementary"`。**node_ids 必须列举该规则在逻辑树中经历的所有 decision 和 action 节点。**

6. **precondition**: 规则生效的前置状态条件。必须包含以下字段：
   - `geographic_scope`（必填）："国内" | "海外"
   - `screen_type`（必填）："CSD" | "PSD" | "RFD" | "any"（如文档未区分屏幕类型则填 "any"）
   - `switch`：开关状态（"开启" | "关闭"）
   - `app_type`：应用类型
   - `app_state`：应用前后台状态（"前台" | "后台"）
   如某字段不适用，可省略。

7. **trigger**: 触发条件对象：
   - `operator`: "AND" | "OR"
   - `conditions`: 条件数组，每个条件必须有 `signal`、`operator`、`value`。有单位加 `unit`。
   - 如为瞬时事件（用户点击），用 `event` 字段。

8. **actions**: 每个动作必须有 `type`（"system" | "user_interaction"）和 `description`。
   - `"user_interaction"` 类型必须有 `content` 字段，填写**确切的提示文案**。
   - **禁止使用占位符**：content 不能是"文案由业务定义"、"待定"、"自定义"等。如果文档中给出了文案，必须原样填入。如果文档确实未给出文案，填写 `"（文档未指定）"` 并标注。

## Few-shot 示例

### 示例 1：行车娱乐限制（前台打断）

**输入上下文**：国内车型，开关开启，系统限制类应用在前台，车速>=15km/h且持续>5秒且非P档时，打断应用并显示Toast"在行车状态下无法使用该应用"。

**期望输出**：

```json
{{
  "rule_id": "FU-001-DOMESTIC-SYS-FG-INTERRUPT-01",
  "path": ["国内", "系统限制", "前台打断"],
  "description": "国内车型，开关开启，系统限制类应用在前台，当车速>=15km/h且持续超过5秒且非P档时，系统打断应用前台进程、将应用调入后台，并弹出Toast提示'在行车状态下无法使用该应用'",
  "priority": "P0",
  "sources": [
    {{"type": "table", "section": "3.1.1", "row": 2, "text_snippet": "行车娱乐限制：目标应用/功能处于前台时 ○ 打断：车速>=15km/h且持续5秒后...", "priority": "supplementary"}},
    {{"type": "logic_tree", "image_id": "rId16", "node_ids": ["n2","n3","n8","n19","n21","n23","n25","n26"], "priority": "primary_source"}}
  ],
  "precondition": {{
    "geographic_scope": "国内",
    "screen_type": "any",
    "switch": "开启",
    "app_type": "系统限制",
    "app_state": "前台"
  }},
  "trigger": {{
    "operator": "AND",
    "conditions": [
      {{"signal": "车速", "operator": ">=", "value": 15, "unit": "km/h"}},
      {{"signal": "车速_持续时间", "operator": ">", "value": 5, "unit": "秒"}},
      {{"signal": "档位", "operator": "!=", "value": "P"}}
    ]
  }},
  "actions": [
    {{"type": "system", "description": "打断应用前台进程"}},
    {{"type": "system", "description": "将应用调入后台"}},
    {{"type": "user_interaction", "description": "显示Toast", "content": "在行车状态下无法使用该应用"}}
  ]
}}
```

### 示例 2：行车娱乐禁止（后台启动拦截）

**输入上下文**：国内车型，开关开启，应用在后台，非P档时阻止应用启动，提示"请在P挡时使用该功能/应用"。

**期望输出**：

```json
{{
  "rule_id": "FU-002-DOMESTIC-SYS-BG-BLOCK-01",
  "path": ["国内", "系统限制", "后台限制启动"],
  "description": "国内车型，开关开启，目标应用处于后台，当用户尝试启动应用且档位非P档时，系统限制应用/功能启用，并弹出Toast提示'请在P挡时使用该功能/应用'",
  "priority": "P0",
  "sources": [
    {{"type": "table", "section": "3.1.1", "row": 2, "text_snippet": "行车娱乐禁止：目标应用/功能处于后台时 ○ 限制：非P挡时，限制目标应用/功能启用...", "priority": "supplementary"}},
    {{"type": "logic_tree", "image_id": "rId17", "node_ids": ["n1","n2","n5","n7"], "priority": "primary_source"}}
  ],
  "precondition": {{
    "geographic_scope": "国内",
    "screen_type": "any",
    "switch": "开启",
    "app_state": "后台"
  }},
  "trigger": {{
    "operator": "AND",
    "conditions": [
      {{"signal": "应用请求启动", "operator": "==", "value": true}},
      {{"signal": "档位", "operator": "!=", "value": "P"}}
    ]
  }},
  "actions": [
    {{"type": "system", "description": "限制应用/功能启用"}},
    {{"type": "user_interaction", "description": "显示Toast", "content": "请在P挡时使用该功能/应用"}}
  ]
}}
```

## 关键要求

1. **逻辑树为唯一权威来源**：触发条件和动作序列必须严格按逻辑树路径建模。文字/表格描述仅用于补充确切措辞（如 Toast 文案），不得覆盖或曲解逻辑树路径。在 sources 中，逻辑树类型标记 `"priority": "primary_source"`，文字/表格标记 `"priority": "supplementary"`。

2. **信号和数值必须精确**：禁止写"车速超过阈值"，必须写 `{{"signal": "车速", "operator": ">=", "value": 15, "unit": "km/h"}}`。

3. **条件必须完整**：逻辑树中的每个 decision 条件必须对应 trigger.conditions 中的一条。如果文档说"车速>=15km/h 且持续超过5秒 且非P档"，这三个条件必须全部出现。

4. **每条规则必须自包含**：人仅凭一条 rule JSON 就能设计出对应的测试用例。必须包含：geographic_scope、screen_type、开关状态、应用类型、前后台状态、完整触发条件、所有动作及确切 Toast 文案、来源引用。

5. **禁止占位符**：`"user_interaction"` 类型的 `content` 不能是"文案由业务定义"、"待定"、"自定义"。如文档确实未给出文案，填 `"（文档未指定）"`。

6. **逻辑树节点必须追踪**：在 sources 中列出该规则在逻辑树中经历的所有 decision 节点和 action 节点。

7. **多条规则**：如果一个功能单元包含多个独立行为分支，输出多条规则分别描述。

8. **开关关闭状态**：开关关闭时所有限制失效，这也必须作为一条规则输出（path: ["...", "开关关闭", "无限制"]）。

9. **功能完整性要求（重要）**：上下文包中的每个表格行、每条文字描述、每个逻辑树路径都必须被至少一条规则覆盖。仔细检查上下文包，确保不遗漏任何数据来源。如果上下文包中有表格，每条表格行至少生成一条对应规则。

{format_feedback}

## 输出格式

**只输出 JSON 数组，不要有任何其他文字或 markdown 标记**：

[
  {{ ... }},
  {{ ... }}
]

注意：即使只有一个规则，也必须用数组格式 `[...]`。
