# 验收标准:23-计算字段判定型扩展 > 依据:R-028 + `技术实现方案.md` | 日期:2026-09-10 | 状态:**待老师人工验收** ## 1. 验收目标 判定型计算字段可用(比较 + and/or + 结果类型显式声明 + 校验一致),并用它给网格超市落地 「可下空单 / 可下多单」两列;数字型计算字段与既有能力零回归。 ## 2. 验收标准线 | # | 验收项 | 判定 | |---|---|---| | C1 | 字段表单出现「结果」下拉(数字 / 判定) | 选「判定」后**小数位输入消失**;公式框 placeholder 变为判定示例 | | C2 | 判定公式可保存 | 展示名「可下空单」/ 类型「计算」/ 结果「判定」/ 公式 `涨停价 > 基准值 + 网格大小` → 保存成功 | | C3 | 判定试算 | 点「试算」显示 `试算:<名称> <代码> → ✓ 满足` 或 `— 不满足`(无持仓 → 「暂无可试算的持仓数据」) | | C4 | 持仓列渲染 | 满足行显示 `✓ 可下空单`(绿);不满足 / 缺行情 → `—`(灰);表头 `ƒ` 前缀、悬停见公式原文 | | C5 | 两条规则与实盘一致 | 今日上证实况下,「可下空单」应为 5 只(积成电子/天海防务/万顺新材/大连热电/华智数媒)、「可下多单」应 2 只(中国化学/TCL中环),其余两列均为 `—` | | C6 | 逻辑组合可用 | 公式 `涨停价 > 基准值 + 网格大小 and 现价 < 基准值 + 网格上边界` 可保存并算出(and / or / `&&` / `\|\|` 均可) | | C7 | 结果类型一致性校验 | 声明「判定」但公式为算式(`1 + 1`)→ 拒绝并提示;公式为判定但声明「数字」→ 拒绝并提示 | | C8 | 零回归 | 数字型计算字段(如 `(现价 - 成本价) × 份额`)照常;四类手填字段、列设置、历史行 `—`、Tab 设置与静态策略均不受影响 | ## 3. 边界与异常 | 场景 | 期望 | |---|---| | 缺行情 / 缺合约信息(涨停跌停取不到) | 判定列 `—`(不显示 false 误导) | | 手填字段值空(如未填基准值) | 判定列 `—` | | 全角符号输入(`≥ ≤ ≠ ×÷`) | 正常解析 | | 公式引用另一个公式字段 | 仍被拒(零循环依赖不变) | | 历史持仓行 | 判定列 `—` | ## 4. 验收方法 1. `node scripts/test-r026-formula-fields.mjs` → **71/71**(含判定型 15 条 + 真实夹具端到端 8 条); 2. 全量回归 17 个脚本全绿;`npx tsc --noEmit` 0 错;`npm run build` 通过; 3. 老师人工验收:重载插件 → 网格超市 tab → 字段配置 → 添加上述两字段 → 对照 C1–C8(重点 C5 与实盘一致性)。 ## 5. 判定线 **通过**:C1–C8 全部通过 + 回归/构建全绿 + 老师人工确认。 **任一即不通过**:判定列把 `false` 显示成数字(`0.00`);缺数据显示为 `否`(误导);结果类型声明与公式不一致仍能保存; 数字型计算字段或既有四类字段出现回归。 ## 6. 不在本次范围 三态信号字段(空 / 多 / 观望,方案 C)、`not` 一元取反、判定与数字混用的单字段、策略级聚合(跨行求和)、 历史持仓行的时点判定。