{#
  对话级抽取与相关性判定模板（用于剪枝加速）
  输入：pruning_scene, dialog_text
  输出：严格 JSON（不要包含任何多余文本），字段：
    - is_related: bool，是否与所选场景相关
    - times: [string]，从对话中抽取的时间相关文本（日期、时间、时间段、有效期等）
    - ids: [string]，编号/ID/订单号/申请号/账号等
    - amounts: [string]，金额/费用/价格相关（带单位或货币符号）
    - contacts: [string]，联系方式（电话/手机号/邮箱/微信/QQ等）
    - addresses: [string]，地址/地点相关文本
    - keywords: [string]，其它有助于保留的重要关键词（与场景强相关的术语）

  要求：
  - 必须只输出上述 JSON，且键名一致；不得输出解释、前后缀；不得包含注释。
  - times/ids/amounts/contacts/addresses/keywords 仅抽取原文片段或规范化后的简单字符串。
  - 仅输出上述键；避免多余解释或字段。
#}

{% set scene_instructions = {
  'education': '教育场景：教学、课程、考试、作业、老师/学生互动、学习资源、学校管理等。',
  'online_service': '在线客服场景：客户咨询、问题排查、服务工单、售后支持、订单/退款、工单升级等。',
  'outbound': '外呼场景：电话外呼、邀约、调研问卷、线索跟进、对话脚本、回访记录等。'
} %}

{% set scene_key = pruning_scene %}
{% if scene_key not in scene_instructions %}
{% set scene_key = 'education' %}
{% endif %}

{% set instruction = scene_instructions[scene_key] %}

请在下方对话全文基础上，按该场景进行一次性抽取并判定相关性：
场景说明：{{ instruction }}

对话全文：
"""
{{ dialog_text }}
"""

只输出严格 JSON（键固定、顺序不限）：
{
  "is_related": <true 或 false>,
  "times": [<string>...],
  "ids": [<string>...],
  "amounts": [<string>...],
  "contacts": [<string>...],
  "addresses": [<string>...],
  "keywords": [<string>...]
}