-
feat(web): 确认单重做 —— 逐条时效/删除/拖拽改派/移除客服,全部走 shadcn · 7cfeb862
产品走查:时效应该落到每一条召回计划;条目要能删、能拖给别的客服;客服要能移除; 整体用 shadcn 组件承载。 · 布局全部换成 shadcn:Card / Badge / Button / Select / AlertDialog。 · **时效逐条**:每条召回计划一个 1-7 天下拉,批次级那个只是"没单独设过的默认"。 落库时只在与批次不同时带 expiresInDays(一样也带 = 把批次时效冻进每条, 将来批次层面改时效就改不动这些单子了)。 · **单条删除** + **移除客服**(AlertDialog 二次确认,明说"他名下的条目一并移出本批")。 · **拖拽改派**:原生 HTML5 DnD(
⛔ 不引 DnD 库),整个客服块都是投放区 —— 展开后列表很长,只认标题行会让人反复试。拖过的落库时 assignStrategy 改成 **manual**, 不改的话事后分析会把它算成算法的选择,而 T20 要反推的正是"算法选得准不准"。 · 所有展示改从**生效条目**派生(sheet.items − 删掉的 + 改派 + 逐条时效),⛔ 不再直接用 sheet.byAgent —— 那是提案时的分组,拖过一条就对不上了。🔴 修一个"改了不报错、但功能等于没有"的坑:助手窗 fixed z-[60],而 shadcn SelectContent 自带 z-50,Radix 会把 content 的 z 复制到 body 上那层 popper wrapper → 下拉渲染在助手窗 **底下**:listbox 确实打开了(DOM 里查得到)、但一个选项都看不见。实测才发现,已抬到 z-[70] 并写进教条(凡在助手窗里用 Radix 浮层都要抬 z)。 本地实测:删一条 → 薛玫 20→19 且在手 0→19;改一条时效 3→5 天只影响那一条; 下拉 1-7 天全部可见可选。989 tests green。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>luoqi committed