-
feat(web): P4 前端 —— T16 改造 + 助手外部控制口 + 移交入口与动效 · 2a58939b
## T16:客服只看得到「我的」
⚠ ️ **藏 tab 不等于做到 T16** —— view 还有两条会自己滑到 pool 的路,不堵住的话 tab 看不见但列表里躺着的还是整池,而且**不报任何错**: 1.🔴 rail 的自动回落 effect:客服的「我的」为空时,原逻辑 `setView('pool')` 把他**直接扔进召回池**。这是 T16 最容易漏的一处。 2. /plans 落地页的兜底:mine 空 → 自动跳召回池第一个患者的详情页, 而那个人根本不是分给他的。 两条都按 canDispatch 门控。⛔ 判据用 PLAN_DISPATCH,不用 PLAN_VIEW_ALL / PLAN_ASSIGN —— 后者连 staff 都有(自助认领语义),两个都区分不出主管。 认领入口整段删除(后端 POST :id/assign 保留 —— T12/T16:将来放开客服主动性 是把入口加回来的事,不用改模型)。行内动作按钮从「认领/返池」二选一降为只剩「退回」,⚠ ️ grid 叠层机制保留 —— 它防的是 hover 时整行位移,与按钮有几个无关。 顺带清了三处指向不存在按钮的文案(这类文案比不给提示更糟,主管会去找): · 状态药丸「待认领」→「待分配」(语义也变了:active 现在是"在池里等主管派") · 详情页顶栏「未认领 · 仅查看」→「未分配 · 仅查看」 · 认领闸提示「在左侧列表点该患者的『认领』接手」→「请联系主管分配」 ## 客服姓名:详情页不再显示 uuid `FollowupPlan` 加 `assigneeName`,服务端用回访表解析后下发(取最近一次)。 前端拿不到就退回 `#` + id 前 8 位,⛔ 不显示完整 uuid(400px 卡片会撑爆)。 ## assistant-store:此前「移交助手」根本无处落地 不是难写,是**没有接口** —— `AssistantWidget` 的 `open` 是组件内 useState, 外面打不开;`useAssistantChat()` 在 `AssistantChat` 内实例化,`send` 不外露。 新 store 30 行:`open` / `ask(text)` / `consume(seq)`。⚠ ️ 用 seq 自增而不是"消费完置空"(与 plan-sync-store 同款):置空要消费方回写 store, 那是双向数据流,StrictMode 双执行下会变成发一次跑两次、或一次都不跑。⚠ ️ widget 收起仍是 **CSS 隐藏不卸载**,别顺手改条件渲染 —— 改了每收一次就丢一次对话。⚠ ️ 只在 widget 变体消费 pending:/assistant 整页可能同时开着,两处都消费会发两遍。 ## 移交入口 + absorb 动效 业务侧**只有两行**:发一个语义事件 + 说一句话。 ``` emitPetEvent({ type: 'cohort_handoff', payload: { count, treatment } }) assistantStore.ask('帮我给…这批患者出一份分配方案') ``` 「怎么演」归 pet-brain(三层单向架构的大脑层),换演法不动分配功能一行代码。 受限动作词表加 `absorb`(数字流被吸进嘴里),keyframes 加在 `PET_CSS` 模板串里 ——⚠ ️ 宠物的 29 个动画都注入在 pet-body 的 `<style>` 里,**不在 globals.css**。 /pet-lab 已加进预览列表。⛔ 移交时**不传 planId 列表** —— 传了等于把收敛规则搬到前端,而那是会漂的。 后端 propose_assignment 自己按排序键圈。 ## 浏览器实测暴露的两个真问题(已修) 1. **助手编了一个不存在的按钮**:它说「请在卡片上点击『确认并下发此批次』」—— 原生确认单(P4.4)还没做。这是 T14 的反面:没有证据的东西不许写进结论, **界面元素也算证据**。systemExtra 加第 7 条硬约束。 2. **默认分满 = 850 人**:target 不传时取"团队剩余容量之和"(17 人 × 50), 而 T5 说的是「宁可 100 人做透」。⚠ ️ 「团队还能吃多少」≠「这批该分多少」。⛔ 批次规模上限属于产品决策(教条七·待确认),工程不替他定数 —— 改为在 selectionNote 里把这个数的来历直说:「850 = 在岗 17 位客服的剩余容量之和 (**分满**),不是建议规模」,并提示可以直接说个数字缩小。 ## 浏览器端到端(本地真实数据 2,695 条召回池) 主管:两个 tab + 移交按钮 + 「待分配」药丸✅ 客服:**只有「我的」;为空时停在空态,没有跳进召回池**✅ 空态文案「暂无分配给你的任务 / 新任务由主管统一派发」,不提召回池✅ 点移交 → 助手自动开窗 → 自动发问 → 调 propose_assignment → 渲染按客服分配表✅ 助手原话:「**确认单已呈现,请过目。**…容量上限 50 条/人为**默认值**, 暂无历史数据支撑,积累后将按实际完成率反推替换。」 —— 没说"已经分配好了",且照抄了 capacityNote✅ 877 单测通过。⚠ ️ **P4.4 原生确认单尚未实现**,是 S1 剩下的最后一块。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>luoqi committed
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| pet-body.tsx | Loading commit data... | |
| pet-brain.ts | Loading commit data... | |
| pet-locomotion.ts | Loading commit data... | |
| pet-widget.tsx | Loading commit data... | |
| use-pet-voice.ts | Loading commit data... |