# 验收标准:20-策略列设置拖拽排序 ## 验收线(在哪里验收) DSH Web GUI → 神之一手 → 任一策略 tab → 工具条「列设置」按钮 → 弹层。 页面侧人工验收;服务端逻辑零改动,跑 scripts/test-r013-columns.mjs 回归确认无破坏。 ## 验收方法(逐项操作) | # | 操作 | 预期 | |---|---|---| | 1 | 打开「列设置」弹层,鼠标按住某行 ≡ 手柄(含整行)拖动到另一行附近移动鼠标 | 目标行上缘/下缘显示**主色间隙高亮线**(插入线),明确指示落点在目标列之前还是之后,非整行高亮 | | 2 | drop 后直接关闭弹层(不点任何保存) | 策略表格表头列顺序已按新顺序展示(立即持久化生效) | | 3 | 刷新页面 / 重新打开弹层 | 列顺序保持拖拽后的结果(写库成功) | | 4 | 点 ↑ / ↓ 箭头 | 仍可逐格微调,且立即持久化(关闭弹层后表格列顺序同步变化) | | 5 | 勾选/取消勾选某一列 | 显隐立即生效(关闭弹层后,表格对应列隐藏/出现) | | 6 | 拖动到目标行上半区 vs 下半区各松手一次 | 上半区 = 插入该目标列**之前**;下半区 = 插入该目标列**之后**(以落点线位置为准) | | 7 | 拖动期间把行拖回原位置或原地松手 | 无异常,列顺序不变(不重复写库) | | 8 | 固定列(代码/名称/操作) | 弹层列表不含固定列,不参与拖拽,恒显示(维持现状) | | 9 | 自定义字段列(某策略配了 configSchema) | 与基础列一样可拖拽排序、可勾选显隐 | | 10 | 保存中(快速连续拖动) | 无并发写异常;saving 期间拖拽/勾选禁用,Toast 提示保存结果 | ## 验收目标 - 功能正交:拖拽排序 / ↑↓ 微调 / 显隐勾选 三者并存且各自立即持久化; - 零回归:scripts/test-r013-columns.mjs 全绿、typecheck + build 通过; - 视觉一致性:≡ 手柄沿用 Tab 设置(UI约束-003)同套样式;落点为**间隙高亮线**(主色 token,UI约束-004 无硬编码色值); - 服务端零改动确认:git diff 无 src/api / src/settings.js 变更。 ## 判定 - 老师页面人工确认 10 项全过 + 服务端回归全绿 ⇒ 迭代 20 验收通过,R-024 归档至 已完成/ 并更新索引实现状态。