Commit 9cd3cd5e by luoqi

docs: 文档口径跟上「时限」—— 71 处; _archive 保持原样

代码/界面已统一到「时限」(6a1bee6f),文档站与设计文档还写着「时效」——
不跟上就等于刚消掉的漂移又从另一头长回来。

改 6 个文件 71 处:站点两篇(assignment-agent / batch-assignment)+
设计文档四篇(doctrine / agent-flow / 两份 dev-plan)。

 `docs/_archive/` 11 处不动 —— 那是历史记录,改了等于篡改当时的原文。

验证:pac-docs build 通过(OG 图字体拉取失败是内网够不到 Google Fonts 的老问题,非致命)。
parent 6a1bee6f
...@@ -22,10 +22,10 @@ flowchart TD ...@@ -22,10 +22,10 @@ flowchart TD
A1["① 选人 · 主管初选<br/>1 做哪一类还没启动的治疗<br/>2 找多久没来的人<br/>—— 凭运营经验,他张口就来"] --> A2 A1["① 选人 · 主管初选<br/>1 做哪一类还没启动的治疗<br/>2 找多久没来的人<br/>—— 凭运营经验,他张口就来"] --> A2
A2["① 选人 · 助手精选<br/>3 要不要只挑高价值的 —— 先摆这批人的全景<br/>4 团队还吃得下多少 —— 先摆在岗人手与在手量<br/>—— · —— · —— · —— · —— · ——<br/>不等他给全,先按这几条默认出一版:<br/>没联系过的排前面,其余按优先级<br/>每人每天 15 通 · 时效 1 天<br/>这批多大 = 在岗人数 × 15 × 时效"] A2["① 选人 · 助手精选<br/>3 要不要只挑高价值的 —— 先摆这批人的全景<br/>4 团队还吃得下多少 —— 先摆在岗人手与在手量<br/>—— · —— · —— · —— · —— · ——<br/>不等他给全,先按这几条默认出一版:<br/>没联系过的排前面,其余按优先级<br/>每人每天 15 通 · 时限 1 天<br/>这批多大 = 在岗人数 × 15 × 时限"]
A2 --> D1{"这批人对吗?"} A2 --> D1{"这批人对吗?"}
D1 --> G1["助手摆出的引导 —— 满足条件才出现<br/>「能加个条件」:候选 ≥50 人 · 他还没加过 · 切完还剩 ≥10 人<br/>  消费高于本批平均 / 转介绍达人 / 权益身份 / 获客渠道<br/>「这批多大」:人数是系统估的(他没自己指定过)<br/>  可改 每人每天几通 · 时几天"] D1 --> G1["助手摆出的引导 —— 满足条件才出现<br/>「能加个条件」:候选 ≥50 人 · 他还没加过 · 切完还剩 ≥10 人<br/>  消费高于本批平均 / 转介绍达人 / 权益身份 / 获客渠道<br/>「这批多大」:人数是系统估的(他没自己指定过)<br/>  可改 每人每天几通 · 时几天"]
G1 --> R1["重新选一版<br/>⚠️ 已经排好的分法一并作废"] G1 --> R1["重新选一版<br/>⚠️ 已经排好的分法一并作废"]
R1 --> A2 R1 --> A2
...@@ -34,7 +34,7 @@ flowchart TD ...@@ -34,7 +34,7 @@ flowchart TD
B["② 分人 —— 谁去打<br/>先算目标水位 =(团队在手 + 本批人数)÷ 在岗人数<br/>一趟:有专属的回自己人,到水位为止<br/>二趟:无专属的补给当前手上最少的<br/>三趟:专属这轮排满的单列成一组,交他定"] B["② 分人 —— 谁去打<br/>先算目标水位 =(团队在手 + 本批人数)÷ 在岗人数<br/>一趟:有专属的回自己人,到水位为止<br/>二趟:无专属的补给当前手上最少的<br/>三趟:专属这轮排满的单列成一组,交他定"]
B --> D2{"这么分行吗?"} B --> D2{"这么分行吗?"}
D2 --> G2["助手摆出的引导 —— 满足条件才出现<br/>「专属排满了」:第三趟真有人排不进去<br/>  换无专属的补上(池子还有人时才给)<br/>  铺平给在岗 / 各自归专属 / 移出本批<br/>「最忙的那位」:分完后的量 > 每天通数 × 时效<br/>  报最忙那位 + 另有几位也超<br/>  整批时效改成 N 天(一个算好的数)"] D2 --> G2["助手摆出的引导 —— 满足条件才出现<br/>「专属排满了」:第三趟真有人排不进去<br/>  换无专属的补上(池子还有人时才给)<br/>  铺平给在岗 / 各自归专属 / 移出本批<br/>「最忙的那位」:分完后的量 > 每天通数 × 时限<br/>  报最忙那位 + 另有几位也超<br/>  整批时限改成 N 天(一个算好的数)"]
G2 --> R2["不重新选人<br/>人不变,只动这一版的分法"] G2 --> R2["不重新选人<br/>人不变,只动这一版的分法"]
R2 --> D2 R2 --> D2
...@@ -65,7 +65,7 @@ flowchart TD ...@@ -65,7 +65,7 @@ flowchart TD
所以顺序不能颠倒:**人先定下来,才谈怎么分。** 先排分法再让他改人群,前面那趟排班就白做了 —— 助手讲这一版时也按这个顺序讲,理由一样。 所以顺序不能颠倒:**人先定下来,才谈怎么分。** 先排分法再让他改人群,前面那趟排班就白做了 —— 助手讲这一版时也按这个顺序讲,理由一样。
三档里最容易看走眼的是中间那条:**「换无专属的补上」摆在分人环里,换的却是人。**「改时」也有两条路 —— 从「这批多大」改会连人数一起重估(重出),从「最忙的那位」改只延长期限、人不变(就地改)。 三档里最容易看走眼的是中间那条:**「换无专属的补上」摆在分人环里,换的却是人。**「改时」也有两条路 —— 从「这批多大」改会连人数一起重估(重出),从「最忙的那位」改只延长期限、人不变(就地改)。
<Callout type="warn">**代价不对称,判断也要跟着不对称**:把「改人群」误判成「改分法」→ 主管以为条件生效了、其实没有(**看不出来的错**);反过来只是多算一次。⇒ **拿不准时一律走重出。**</Callout> <Callout type="warn">**代价不对称,判断也要跟着不对称**:把「改人群」误判成「改分法」→ 主管以为条件生效了、其实没有(**看不出来的错**);反过来只是多算一次。⇒ **拿不准时一律走重出。**</Callout>
...@@ -110,13 +110,13 @@ flowchart TD ...@@ -110,13 +110,13 @@ flowchart TD
| **谁排前面** | 没联系过的排前面,其余按优先级从高到低 | 「先打消费高的」 | | **谁排前面** | 没联系过的排前面,其余按优先级从高到低 | 「先打消费高的」 |
| **每人每天打几通** | 15 通 | 「按 20 通算」 | | **每人每天打几通** | 15 通 | 「按 20 通算」 |
| **多久要打完** | 1 天 | 「给 5 天」 | | **多久要打完** | 1 天 | 「给 5 天」 |
| **这批发多大** | 在岗人数 × 每天通数 × 时 | 「改成 200 人」 | | **这批发多大** | 在岗人数 × 每天通数 × 时 | 「改成 200 人」 |
<Callout type="warn">**默认值一个都不许藏。** 出方案时式子摊开写:「本批 405 人 = 在岗 27 人 × 每天 15 通 × 1 天」。 <Callout type="warn">**默认值一个都不许藏。** 出方案时式子摊开写:「本批 405 人 = 在岗 27 人 × 每天 15 通 × 1 天」。
一个他看不见的默认值,等于系统替他做了一个他不知道的决定 —— 而这批人是真发下去了。 一个他看不见的默认值,等于系统替他做了一个他不知道的决定 —— 而这批人是真发下去了。
⇒ 摆出来他才有得改;不摆,他连「原来还能改这个」都不知道。</Callout> ⇒ 摆出来他才有得改;不摆,他连「原来还能改这个」都不知道。</Callout>
人手在**两个地方**主动摆给他看,不用他去找:出方案时是上面那个式子;确认单上是每位客服一行「约 3 天」,算的是**分完之后他手上的总量**(在手 + 本批),不只是本批那几条。超出时的用**颜色**提示,⛔ 不写「打不完 / 超了 / 过载」—— 几乎每批都会有人超,说成故障主管就会开始怀疑系统,而不是做他该做的判断。 人手在**两个地方**主动摆给他看,不用他去找:出方案时是上面那个式子;确认单上是每位客服一行「约 3 天」,算的是**分完之后他手上的总量**(在手 + 本批),不只是本批那几条。超出时的用**颜色**提示,⛔ 不写「打不完 / 超了 / 过载」—— 几乎每批都会有人超,说成故障主管就会开始怀疑系统,而不是做他该做的判断。
### 能加哪几个条件 ### 能加哪几个条件
...@@ -299,7 +299,7 @@ flowchart TD ...@@ -299,7 +299,7 @@ flowchart TD
| | 看这批人构成 | 这批人各画像维度各多少人 | | | 看这批人构成 | 这批人各画像维度各多少人 |
| **出方案** | 出一版方案 | 选人 + 排客服 + 算引导,一次算完 | | **出方案** | 出一版方案 | 选人 + 排客服 + 算引导,一次算完 |
| | 看当前确认单 | 那张单**现在**什么样(他动过手之后助手看不见) | | | 看当前确认单 | 那张单**现在**什么样(他动过手之后助手看不见) |
| | 改确认单 | 移出谁 · 改派 · 改时 · 设福利 | | | 改确认单 | 移出谁 · 改派 · 改时 · 设福利 |
| | 摆确认单 / 摆引导 | 决定它们落在正文哪一句之后(两个工具) | | | 摆确认单 / 摆引导 | 决定它们落在正文哪一句之后(两个工具) |
| **追踪** | 分过哪几批 | 批次列表 + 每批汇总 | | **追踪** | 分过哪几批 | 批次列表 + 每批汇总 |
| | 某批怎么样了 | 进度 · 按客服拆 · 退回原因 · 通话成效 · 逐条纪要 | | | 某批怎么样了 | 进度 · 按客服拆 · 退回原因 · 通话成效 · 逐条纪要 |
...@@ -343,11 +343,11 @@ flowchart LR ...@@ -343,11 +343,11 @@ flowchart LR
| **专属排满了** | 「182 人的专属客服这轮已排满」——**第三趟那一组**,四个选择:换无专属的补上(池子还有人时才给)/ 铺平给在岗 / 各自归专属客服 / 移出本批 | 这批不发给他们 | | **专属排满了** | 「182 人的专属客服这轮已排满」——**第三趟那一组**,四个选择:换无专属的补上(池子还有人时才给)/ 铺平给在岗 / 各自归专属客服 / 移出本批 | 这批不发给他们 |
| **能加个条件** | 「这批候选 2,663 人,也可以只选其中一类」+ 四个带人数的选项(见 §1) | 就按这批候选全部人来 | | **能加个条件** | 「这批候选 2,663 人,也可以只选其中一类」+ 四个带人数的选项(见 §1) | 就按这批候选全部人来 |
| **这批多大** | 「本批 405 人 = 在岗 27 人 × 每天 15 通 × 1 天」,式子摊开给他看 | 就按这个数发 | | **这批多大** | 「本批 405 人 = 在岗 27 人 × 每天 15 通 × 1 天」,式子摊开给他看 | 就按这个数发 |
| **最忙的那位** | 「这批发下去,最忙的是王强:手上共 45 条,约 3 天的量;**另有 2 位也超过 1 天**」 | 就按这个时发,到期没打完的自动回池 | | **最忙的那位** | 「这批发下去,最忙的是王强:手上共 45 条,约 3 天的量;**另有 2 位也超过 1 天**」 | 就按这个时发,到期没打完的自动回池 |
⚠️ **为什么要报「另有几位」**:只说最忙的一个,主管分不出两种局面 —— 而这两种局面该做的事**正好相反**:只有王强超,就给他少分点、改派几个;全队都超,就得减少这批、延长时。只有他一个人超时那半句不出现,⛔ 不制造无谓噪音;也⛔ 不在这里铺开每个人 —— 确认单上每位客服那一行已经写着「约 N 天」,引导只负责**点出要他定的事**,不负责展示数据。 ⚠️ **为什么要报「另有几位」**:只说最忙的一个,主管分不出两种局面 —— 而这两种局面该做的事**正好相反**:只有王强超,就给他少分点、改派几个;全队都超,就得减少这批、延长时。只有他一个人超时那半句不出现,⛔ 不制造无谓噪音;也⛔ 不在这里铺开每个人 —— 确认单上每位客服那一行已经写着「约 N 天」,引导只负责**点出要他定的事**,不负责展示数据。
⚠️ **「最忙的那位」只给一个选项,而且必须带数**:「整批时改成 **3** 天」—— 那个 3 是按最忙那位的量算出来的。曾经还有「改每人每天打几通」「减少本批人数」两个,删掉了:它们**一个数都不带**,点下去等于替主管说了句「减少一些」—— **一个不带数的按钮,严格弱于他自己开口说一句。** ⚠️ **「最忙的那位」只给一个选项,而且必须带数**:「整批时改成 **3** 天」—— 那个 3 是按最忙那位的量算出来的。曾经还有「改每人每天打几通」「减少本批人数」两个,删掉了:它们**一个数都不带**,点下去等于替主管说了句「减少一些」—— **一个不带数的按钮,严格弱于他自己开口说一句。**
每条按钮都带三样:**是什么**、**为什么**、**不处理等于什么**。三条设计原则: 每条按钮都带三样:**是什么**、**为什么**、**不处理等于什么**。三条设计原则:
......
...@@ -136,7 +136,7 @@ flowchart LR ...@@ -136,7 +136,7 @@ flowchart LR
| 基数 | 含义 | 首次 | 之后 | | 基数 | 含义 | 首次 | 之后 |
|---|---|---|---| |---|---|---|---|
| **本批人数** | 这一轮推多少人 | 在岗人数 × 20 | 沿用上次 | | **本批人数** | 这一轮推多少人 | 在岗人数 × 20 | 沿用上次 |
| **时** | 多久没动自动回池 | 3 天 | 沿用上次 | | **时** | 多久没动自动回池 | 3 天 | 沿用上次 |
> 没有第三个数。曾经有过"每人容量",删掉了 —— 一个数当两个用,第二批必然分不出来。 > 没有第三个数。曾经有过"每人容量",删掉了 —— 一个数当两个用,第二批必然分不出来。
...@@ -179,12 +179,12 @@ flowchart TB ...@@ -179,12 +179,12 @@ flowchart TB
| 卡片上直接做 | 回对话让助手做 | | 卡片上直接做 | 回对话让助手做 |
|---|---| |---|---|
| 改批次时效 · 改单条时效 | 换人群(换治疗项 / 时机 / 画像条件) | | 改批次时限 · 改单条时限 | 换人群(换治疗项 / 时机 / 画像条件) |
| 删掉某一条 | 改本批人数 | | 删掉某一条 | 改本批人数 |
| 把某一条拖给别的客服 | 给某个客服设本批名额 | | 把某一条拖给别的客服 | 给某个客服设本批名额 |
| 移除某个客服 | 设本批福利 | | 移除某个客服 | 设本批福利 |
效的文案是「**N 天后自动退回**」而不是光一个"时效" —— 主管要知道到期会发生什么,否则这个数对他没有意义。 限的文案是「**N 天后自动退回**」而不是光一个"时限" —— 主管要知道到期会发生什么,否则这个数对他没有意义。
### 福利挂在批次上,不挂在个人上 ### 福利挂在批次上,不挂在个人上
...@@ -198,7 +198,7 @@ flowchart TB ...@@ -198,7 +198,7 @@ flowchart TB
- 首次无历史 → 用默认值,**并标明这是默认值** - 首次无历史 → 用默认值,**并标明这是默认值**
- 有数据之后 → 反推真实习惯,替换默认值 - 有数据之后 → 反推真实习惯,替换默认值
> 时"3 天"现在只能写「默认值,暂无历史数据」,**不能**写成「依据平均结案 2.4 天」—— 那个数还算不出来。 > 时"3 天"现在只能写「默认值,暂无历史数据」,**不能**写成「依据平均结案 2.4 天」—— 那个数还算不出来。
--- ---
...@@ -225,7 +225,7 @@ stateDiagram-v2 ...@@ -225,7 +225,7 @@ stateDiagram-v2
### 退回必须写原因 ### 退回必须写原因
退回是**正常路径**不是异常。原因分布是主管调整下一批的输入 —— 退回是**正常路径**不是异常。原因分布是主管调整下一批的输入 ——
「派多了」「时太紧」「压根不该派给他」,这三种的下一步动作完全不同。 「派多了」「时太紧」「压根不该派给他」,这三种的下一步动作完全不同。
### 撤销 ≠ 退回 ### 撤销 ≠ 退回
...@@ -248,7 +248,7 @@ stateDiagram-v2 ...@@ -248,7 +248,7 @@ stateDiagram-v2
|---|---| |---|---|
| 分了多少人 / 在手 / 已处理 | 「已处理」= 这单动过了,**不等于谈成了** | | 分了多少人 / 在手 / 已处理 | 「已处理」= 这单动过了,**不等于谈成了** |
| 客服主动退回 · 原因分布 | 「不该我做」,是**分配**问题 | | 客服主动退回 · 原因分布 | 「不该我做」,是**分配**问题 |
| 到期没人动 | **没处置**,是派多了 / 时太紧 / 人不在岗 | | 到期没人动 | **没处置**,是派多了 / 时太紧 / 人不在岗 |
| 通话结果:成功 / 不成功及原因 | 打了之后的结果,是**召回效果**问题 | | 通话结果:成功 / 不成功及原因 | 打了之后的结果,是**召回效果**问题 |
| 一次结果都没有 | 最该先看的数 —— 不是效果差,是**根本没做** | | 一次结果都没有 | 最该先看的数 —— 不是效果差,是**根本没做** |
......
...@@ -262,7 +262,7 @@ components/assistant/ ...@@ -262,7 +262,7 @@ components/assistant/
|---|---|---| |---|---|---|
| 27 | 提示词按「什么会让它变」**分五层**(装置 / 诚实 / 语气 / 角色 / 现场),现场段按 `选人 → 分人 → 他确认 → 确认之后` **四步分节** | `assistant-prompts.ts` | | 27 | 提示词按「什么会让它变」**分五层**(装置 / 诚实 / 语气 / 角色 / 现场),现场段按 `选人 → 分人 → 他确认 → 确认之后` **四步分节** | `assistant-prompts.ts` |
| 28 | 次要业务线走 **pull**:系统提示词只留索引,模型用 `open_playbook` 按需取正文 | **新建** `assistant-playbooks.ts` | | 28 | 次要业务线走 **pull**:系统提示词只留索引,模型用 `open_playbook` 按需取正文 | **新建** `assistant-playbooks.ts` |
| 29 | **`rosterCount`** —— 「在岗 N 人 × 每天几通 × 时」里的 N 由算 `batchSize`**同一行**赋值 | `packages/types` + proposal | | 29 | **`rosterCount`** —— 「在岗 N 人 × 每天几通 × 时」里的 N 由算 `batchSize`**同一行**赋值 | `packages/types` + proposal |
| 30 | **`SheetSnapshot` + `get_current_sheet`(拉)+ 回声带当前值(推)** —— 草稿态服务端查不到,模型此前只能把对话里几行回声自己累加 | 三端 | | 30 | **`SheetSnapshot` + `get_current_sheet`(拉)+ 回声带当前值(推)** —— 草稿态服务端查不到,模型此前只能把对话里几行回声自己累加 | 三端 |
| 31 | 重算类载体**原样带回人群条件**(refill 的 `narrowedBy`、快照的 `criteria`) | 三处载体 | | 31 | 重算类载体**原样带回人群条件**(refill 的 `narrowedBy`、快照的 `criteria`) | 三处载体 |
| 32 | **契约测试** —— 测"两端各自都对、错在交接" | **新建** `tests/assignment-contract.spec.ts` | | 32 | **契约测试** —— 测"两端各自都对、错在交接" | **新建** `tests/assignment-contract.spec.ts` |
......
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
├── 说节点外的话 ──── [模] 判断动的是哪一层 ├── 说节点外的话 ──── [模] 判断动的是哪一层
│ │ │ │
│ ├─ 动「怎么派」 → [程] 局部改 ────▶ 同一版,重算节点 │ ├─ 动「怎么派」 → [程] 局部改 ────▶ 同一版,重算节点
│ │ 谁给谁 · 时 · 移出本批 · 福利 │ │ 谁给谁 · 时 · 移出本批 · 福利
│ │ │ │
│ └─ 动「这批人」 → [程] 重跑 ──────▶ **出新版,旧版当场作废** │ └─ 动「这批人」 → [程] 重跑 ──────▶ **出新版,旧版当场作废**
│ 换口径 · 加画像条件 · 改人数 · 换治疗项 │ 换口径 · 加画像条件 · 改人数 · 换治疗项
...@@ -128,7 +128,7 @@ ...@@ -128,7 +128,7 @@
| 必须带回 | 漏了会怎样 | | 必须带回 | 漏了会怎样 |
|---|---| |---|---|
| 治疗项 · 时间档 | 按全池重算。实测:主管说「改成 200 人」,模型手里只有确认单本身(120 人、8 位客服、时 1 天),不知道原来是哪一格 —— 它自己的话:「刚才我按全部候选重算了一版,结果对不上……跟您眼前那批完全不是一回事」 | | 治疗项 · 时间档 | 按全池重算。实测:主管说「改成 200 人」,模型手里只有确认单本身(120 人、8 位客服、时 1 天),不知道原来是哪一格 —— 它自己的话:「刚才我按全部候选重算了一版,结果对不上……跟您眼前那批完全不是一回事」 |
| 主管自己加的那几刀(`narrowedBy`) | **退回整格**。实测「换无专属客服的患者补上」漏传 `narrowedBy`:候选 2,178 vs 296,差 1,882 人 —— 他刚圈掉的人全回来了 | | 主管自己加的那几刀(`narrowedBy`) | **退回整格**。实测「换无专属客服的患者补上」漏传 `narrowedBy`:候选 2,178 vs 296,差 1,882 人 —— 他刚圈掉的人全回来了 |
**凡是能触发重算的载体都要带全这一段**,目前有三处: **凡是能触发重算的载体都要带全这一段**,目前有三处:
...@@ -176,7 +176,7 @@ ...@@ -176,7 +176,7 @@
| | | | | |
|---|---| |---|---|
| 每人每日 | **15 条**(当前默认;⛔ 暂不沿用上一次的值) | | 每人每日 | **15 条**(当前默认;⛔ 暂不沿用上一次的值) |
| 时 | `D` 天 | | 时 | `D` 天 |
| **本批目标 N** | **在岗人数 × 15 × D**,并与候选总数取小 | | **本批目标 N** | **在岗人数 × 15 × D**,并与候选总数取小 |
### 事实② 怎么派的(**给谁**) ### 事实② 怎么派的(**给谁**)
...@@ -224,9 +224,9 @@ ...@@ -224,9 +224,9 @@
| sev | 层 | key | 给模型的标识 | 判定(程序) | 默认(no-op) | 选项(点击执行) | | sev | 层 | key | 给模型的标识 | 判定(程序) | 默认(no-op) | 选项(点击执行) |
|---|---|---|---|---|---|---| |---|---|---|---|---|---|---|
| **1** | 需处置 | `pending` | 待分配 | `pending > 0` | 留着 = 这批不发给他们 | ① **换无专属客服的患者补上**(见下,带取人范围)<br>② 铺平给在岗<br>③ 各自归专属客服<br>④ 移出本批 | | **1** | 需处置 | `pending` | 待分配 | `pending > 0` | 留着 = 这批不发给他们 | ① **换无专属客服的患者补上**(见下,带取人范围)<br>② 铺平给在岗<br>③ 各自归专属客服<br>④ 移出本批 |
| **2** | 需处置 | `daily_overload` | 打不完 | 分完后最重的那位 `手上总条数 > 15 × D` | 就按 D 天发,到期落回池子 | **只有一个:`时改成 N 天`**(N 由程序算) | | **2** | 需处置 | `daily_overload` | 打不完 | 分完后最重的那位 `手上总条数 > 15 × D` | 就按 D 天发,到期落回池子 | **只有一个:`时改成 N 天`**(N 由程序算) |
| **3** | 需处置 | `narrow` | 换个条件选 | 候选 ≥ 50 且切完 ≥ 10 人;主管已收窄过 / 已重挑过则不出 | 就按这一格全部来 | 几刀 + 兜底(见下) | | **3** | 需处置 | `narrow` | 换个条件选 | 候选 ≥ 50 且切完 ≥ 10 人;主管已收窄过 / 已重挑过则不出 | 就按这一格全部来 | 几刀 + 兜底(见下) |
| **4** | 需处置 | `batch_size_basis` | 本批人数 | `basis === 'default'` 且候选 > 基数 | 就按这个数发 | 改时 / 改每天几通(**都带输入框、预填当前值**) | | **4** | 需处置 | `batch_size_basis` | 本批人数 | `basis === 'default'` 且候选 > 基数 | 就按这个数发 | 改时 / 改每天几通(**都带输入框、预填当前值**) |
**终止分支(不是引导节点)**`empty` —— `total == 0`,无法继续,只能放宽或换格。 **终止分支(不是引导节点)**`empty` —— `total == 0`,无法继续,只能放宽或换格。
...@@ -243,9 +243,9 @@ ...@@ -243,9 +243,9 @@
#### `daily_overload` 是**工作量预估**,不是异常告警 #### `daily_overload` 是**工作量预估**,不是异常告警
N 按「在岗 × 每天 15 通 × 时」算,**只算新增、⛔ 不扣在手** —— 所以只要谁手上还有东西, N 按「在岗 × 每天 15 通 × 时」算,**只算新增、⛔ 不扣在手** —— 所以只要谁手上还有东西,
需要的天数就会超过时,这个节点**每批基本都会亮****这是对的**(产品定 2026-08-12): 需要的天数就会超过时,这个节点**每批基本都会亮****这是对的**(产品定 2026-08-12):
每一批本来就该把「这活多大、要打几天」讲清楚,主管据此决定延时、调每日通数、还是减量。 每一批本来就该把「这活多大、要打几天」讲清楚,主管据此决定延时、调每日通数、还是减量。
由此推出两条硬要求: 由此推出两条硬要求:
...@@ -332,8 +332,8 @@ N 按「在岗 × 每天 15 通 × 时效」算,**只算新增、⛔ 不扣在 ...@@ -332,8 +332,8 @@ N 按「在岗 × 每天 15 通 × 时效」算,**只算新增、⛔ 不扣在
| `dispatch` | 怎么派 | `pending` · `daily_overload` | 「怎么派的」 | | `dispatch` | 怎么派 | `pending` · `daily_overload` | 「怎么派的」 |
> 🔴 **`cohort` 与 `size` 必须是两个键**,虽然都嵌在同一段。合成一个键时模型会拿 > 🔴 **`cohort` 与 `size` 必须是两个键**,虽然都嵌在同一段。合成一个键时模型会拿
> 一个标题罩住两组按钮 —— 走查抓到「还能怎么选:」下面挂着「改时 / 改每天几通」, > 一个标题罩住两组按钮 —— 走查抓到「还能怎么选:」下面挂着「改时 / 改每天几通」,
> 而改时根本不是选人。⇒ **一个键只说一件事**。 > 而改时根本不是选人。⇒ **一个键只说一件事**。
> >
> 🔴 **开放的粒度是「一件」不是「一段」**(2026-08-15 实测)。工具描述里一度写着 > 🔴 **开放的粒度是「一件」不是「一段」**(2026-08-15 实测)。工具描述里一度写着
> 「在**它所属的那一段**讲完之后开放」,而「怎么选的」这一段里**有两件** > 「在**它所属的那一段**讲完之后开放」,而「怎么选的」这一段里**有两件**
...@@ -409,7 +409,7 @@ N 按「在岗 × 每天 15 通 × 时效」算,**只算新增、⛔ 不扣在 ...@@ -409,7 +409,7 @@ N 按「在岗 × 每天 15 通 × 时效」算,**只算新增、⛔ 不扣在
|---|---| |---|---|
| 福利 | ✅ 可补挂,不设时限 | | 福利 | ✅ 可补挂,不设时限 |
| 人员 | ❌ 单已在客服手上 → 走撤销重分 | | 人员 | ❌ 单已在客服手上 → 走撤销重分 |
| 时 | ❌ 同上 | | 时 | ❌ 同上 |
--- ---
...@@ -435,7 +435,7 @@ N 按「在岗 × 每天 15 通 × 时效」算,**只算新增、⛔ 不扣在 ...@@ -435,7 +435,7 @@ N 按「在岗 × 每天 15 通 × 时效」算,**只算新增、⛔ 不扣在
### 🔴 草稿态**模型看不见** —— 要查 `get_current_sheet`(2026-08-15 加) ### 🔴 草稿态**模型看不见** —— 要查 `get_current_sheet`(2026-08-15 加)
确认之前,主管在卡片上做的改动(改派 / 移出 / 改时 / 设福利)**只存在于浏览器里** 确认之前,主管在卡片上做的改动(改派 / 移出 / 改时 / 设福利)**只存在于浏览器里**
服务端手上只有最初生成的那一版提案。所以模型对"这张单现在什么样"只有两条来路: 服务端手上只有最初生成的那一版提案。所以模型对"这张单现在什么样"只有两条来路:
| | 谁推给它 | 覆盖 | | | 谁推给它 | 覆盖 |
...@@ -443,7 +443,7 @@ N 按「在岗 × 每天 15 通 × 时效」算,**只算新增、⛔ 不扣在 ...@@ -443,7 +443,7 @@ N 按「在岗 × 每天 15 通 × 时效」算,**只算新增、⛔ 不扣在
| **推** | 每次改单往对话里追加一行回声,`modelText` 后缀带当前值 | 改动发生的那一刻 | | **推** | 每次改单往对话里追加一行回声,`modelText` 后缀带当前值 | 改动发生的那一刻 |
| **拉** | `get_current_sheet`(无参数,读随请求捎来的 `SheetSnapshot`) | 任何时候 | | **拉** | `get_current_sheet`(无参数,读随请求捎来的 `SheetSnapshot`) | 任何时候 |
⚠️ 在这之前它只能把对话里几行回声**自己累加**,而手动拖动 / 点 × / 改时这几条路 ⚠️ 在这之前它只能把对话里几行回声**自己累加**,而手动拖动 / 点 × / 改时这几条路
**当时连回声都没有** —— 卡片上写着 3 天,它嘴上还说 1 天,两边都不报错。 **当时连回声都没有** —— 卡片上写着 3 天,它嘴上还说 1 天,两边都不报错。
⛔ 别去给服务端加"草稿回传"的写路径:多一份要维护的状态,只为省模型一次加法。 ⛔ 别去给服务端加"草稿回传"的写路径:多一份要维护的状态,只为省模型一次加法。
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment