mcp-clinic-scope.spec.ts
68.9 KB
-
fix(助手): 「这批都给某某」改不动确认单 —— 三层各错一处,且都不报错 · 245f0b01
本批 5 人,主管说「这5人都分配给韩维」。界面回「已把整批铺给 1 位客服()」, 括号是空的:一条都没动,而助手接着说「这版已经改成 5 人都归韩维」。 三层: ① schema 判断本身就是错的 `batch + assign` 被 refine 判非法。而 batch 是这句话唯一自然的表达, 韩维就印在卡片下面那行「本批未分到」里。 改判:batch + balance 合法;只有 batch + owner 不行 —— 专属关系只有「待分配」那份数据带着(pending[].ownerUserId), 已排好的条目卡片上查不到它归谁专属。 ② 那条 refine 一次都没跑过(根因,不是 ① ) 两个改单工具的入参用的是**手写的 JSON Schema**(给模型看的那份), zod 那份从没进过运行时。两份 schema 各写各的, 写在没跑的那份里的约束只是注释。 ⇒ 加 `checkEditOps`:推给界面之前按 zod 校一遍,校不过整组退回给模型, 并说清哪一条错在哪(只说「参数错误」它会原样再发一遍)。 确认单、调整单同一条路。 ③ 界面把 batch 解成空名单 `return { planIds: [], label: '整批' }`,注释说"只有 set_expiry / set_benefit 走得到这里" —— 而那两件在上面就短路了(走批次级控件), 真正走到这一行的恰恰是 assign / remove。 改:整批 = 生效条目 + 还留在待分配里的,与顶栏「共 N 人」同一口径。 另加一道总闸:选中 0 人就到此为止 —— 下面每个分支都会 push 一句 "已如何如何",一条没动而主管读到的是成功。 顺带(同一类):owner 分不下去的两种原因分开报。 「卡片没带这条的专属关系」被报成「查不到在岗的专属客服」, 那是一句关于数据的断言,而卡片没有资格下这个断言。 - 整批移出仍然拦掉,但界面要吭声,⛔ 不许静默什么都不做 - 工具描述补 batch 那一格该怎么填;ASSISTANT_PROMPT_VERSION → 2026-08-22-a - 新增 sheet-edit-batch-assign.spec.ts(14 条),改判 mcp-clinic-scope 两条旧断言 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>luoqi committed