/**
 * guides —— 随工具**返回值**下发的解读规范（`_guide`）。
 *
 * ═══ 为什么不放在工具描述里 ═══════════════════════════════════════
 * 工具描述是**常驻**的：每一次对话、每一轮，都要连同工具清单一起发给模型。
 * 而「批次跟踪的数怎么读」只有约三成会话用得到 —— 其余七成在为它白付上下文。
 *
 * 挂在返回值上则是**按需加载最便宜的形态**：零往返（不用模型主动去取）、
 * 必然到达（它一定会看到自己调的工具的返回）、用不到时零成本。
 *
 * ═══ 边界 ═══════════════════════════════════════════════════════
 * ✅ 这里写「**怎么解读这批数**」——容易误读的地方、必须一起报的东西。
 * ⛔ 「**怎么用这个工具**」（什么时候调、参数怎么填）仍然留在工具描述里 ——
 *    那是模型在**决定调不调**的时候要看的，来不及等返回值。
 * ⛔ ⛔ **不许在这里写"照抄下面这句"这类成品句子。**
 *    2026-08-08 栽过：`get_assignment_detail` 的 `note` 字段混着给模型的指令，
 *    模型照抄就把内部指令原样贴进了主管的对话框。护栏写成**规范**，不写成台词。
 *
 * [弥补模型] —— 模型变强后这些规范应当逐条复查是否还必要。
 */

/** 批次跟踪（`get_assignment_detail`）的解读规范 */
export const TRACKING_GUIDE = [
  '「处理」不等于「成功」：progress 是处理率，只说「这单动过了」，不说「谈成了」。',
  '「已出池·引擎判定需求已了」是引擎按客观事实判定召回需求没了，⛔ 不是「转化成功/成交」，⛔ 不要拿这些数算转化率。',
  '报处理率必须带上「本批已跑天数」：跑了三个月的批次天然比跑了三天的好看，不带年龄直接比是耍流氓。',
  '退回率永远给两个数：「退回 5 / 已处置 40 = 12.5%（另有 60 条未动）」——「没人动」和「动了但退回」是完全不同的信号，只报一个百分比会把前者藏起来。',
  '分母小于 50 时直接说「样本量不足」，⛔ 不要输出百分比、⛔ 不要画图。',
  'outcomes（通话成效）与 releaseReasons（退回原因）是两件不同的事，⛔ 绝不能混说：releaseReasons =「这单不该我做」，客服没打就还回去了，是**分配**问题；outcomes =「打了，结果这样」，客服做了事，是**召回效果**问题。说反了主管会去改错的东西。',
  'outcomes.noOutcome（一次结果都没有）必须单独报出来，⛔ 不许算进「不成功」——那不是效果差，是根本没做/没记。',
  'outcomes.success 含「约定下次回访」，⛔ 别说成「成交/转化了这么多」。',
  'outcomes.records 是逐条明细 + 客服手写的电话纪要（notes）。主管问「哪个患者/为什么/客服怎么说的」，答案只在这里，⛔ 别只回聚合数。',
  'notes 为 null =「没留纪要」（不是没打）。结果填了、纪要空着本身是信息：说明只点了个选项。',
  '引用纪要时照原话，⛔ 别润色成「客户表示…」——主管要看的就是客服当时怎么写的。',
  'recordsTruncated=true 时必须说明「只是最近的一部分」。',
  '每条 record 里 outcome 只是其中一个字段，还有客服勾的子选项：abandonReasons（放弃原因，只有「放弃」才有）、inaccurateTreatments（客服说这条召回判断错了，调算法要看它）、scheduledNextAt（约的回访日）、channel（电话/企微/短信）。⛔ 只报 outcome 等于漏掉一半 ——「为什么放弃」的答案在 abandonReasons 里。',
  '上面这些数用你自己的话讲，⛔ 别整段照搬工具返回的字符串。',
];

/** 批次列表（`list_assignment_batches`）的解读规范 */
export const BATCH_LIST_GUIDE = [
  '「已处理」不等于「已成功」：含召回出池、被抑制、已结案三种，⛔ 别说成转化。',
  '各批次的处理率不能直接横比，先看各自跑了多少天。',
  '要看某一批为什么这样，用 get_assignment_detail 取明细，⛔ 不要从汇总数里推原因。',
];
