# 需求:R-028 判定型计算字段 + 网格超市「可下空单 / 可下多单」· 已定稿 > 登记:2026-09-10 | 来源:老师指令(2026-09-10)| 状态:**已定稿(2026-09-10 老师逐项确认 Q1-Q5)** > 归属:**23-计算字段判定型扩展** | 实现状态:**已实现(2026-09-10),待老师人工验收** > 前身:草稿 T-012(已转正,草稿文件已清理)| **能力扩展**:R-026(计算字段,原「首批结果只做数字」)→ 视同修订 产品约束-014 ## 诉求(老师,2026-09-10) > 我想给网格超市添加一个计算字段,即当天涨停值 > 当前基准值 + 1 ,即可以下空单;当天跌停值 < 当前基准值 - 1,可以下多单。 ## 现状限制(R-026 能力边界) 计算字段原**只产出数字**(产品约束-014「首批结果只做数字」),公式能力 = 四则 + 括号 + round/abs/min/max, **没有比较运算** → 上述两条规则无法直接表达为判定列。可用变量已覆盖全部原料 (`涨停价`/`跌停价` = QuoteHub 合约信息按交易日;`基准值` = 网格超市手填字段)。 ## 定稿结论(2026-09-10 老师拍板) 1. **方案 A|判定型计算字段**(Q1):引擎新增比较运算与逻辑组合,字段表单新增「结果类型:数字 / 判定」; 2. **判定列显示**(Q2):满足 → `✓ <字段名>`(success 绿);不满足 / 缺值 → `—`(tertiary 灰); 3. **支持 and / or 组合**(Q3,含 `&&` / `||` 与全角 `≥ ≤ ≠`); 4. **结果类型由字段表单显式声明**(Q4),服务端校验「声明与公式形态一致」(判定=顶层比较/逻辑,数字=其余); 5. **阈值引用「网格大小」字段**(Q5):公式写 `涨停价 > 基准值 + 网格大小`(阈值可配;当前各行网格大小=1,与写死 1 等价)。 **网格超市落地字段(两条)** | 展示名 | 类型 | 结果 | 公式 | 单位 | |---|---|---|---|---| | 可下空单 | 计算 | 判定 | `涨停价 > 基准值 + 网格大小` | — | | 可下多单 | 计算 | 判定 | `跌停价 < 基准值 - 网格大小` | — | ## 可行性验证(2026-09-10,真实持仓 + QMT 合约信息) 13 只网格超市当前持仓实算:**可下空单 5 只**(积成电子 8.22>8、天海防务 7.9>7、万顺新材 7.73>7、 大连热电 8.51>8、华智数媒 9.28>8);**可下多单 2 只**(中国化学 6.68<7、TCL中环 8.2<9);其余 6 只两条均不满足。 ## 决策记录 | 项 | 结论 | 讨论 | |---|---|---| | 结果形态 | 判定型计算字段(方案 A) | Q1(老师选 A) | | 判定显示 | 满足 `✓ 字段名`(绿)/ 不满足 `—`(灰) | Q2 | | 组合条件 | 支持 and / or | Q3 | | 结果类型 | 表单显式声明,服务端校验一致性 | Q4 | | 阈值 | 引用「网格大小」字段 | Q5 | | 存储/现算 | 结果可为布尔(`computed[key]` 布尔直通);仍不落库 | 沿用 R-026 语义 | | 成本 | 引擎 + 校验 + 表单 + 渲染四处小改;无新增数据通路 | — | ## 关联 - 上游:R-026 / 迭代 22(计算字段:引擎、变量目录、现算、只读列); - 修订:产品约束-014(结果类型扩展为 数字 / 判定)、技术约束-022(引擎运算集)、技术约束-024(校验规则)、UI约束-008(判定 UI); - 迭代:23-计算字段判定型扩展(含网格超市两字段落地); - 使用说明(用户手册):`docs/99-其他材料/计算字段公式说明.md`(变量表 / 运算符 / 函数 / 示例 / 报错对照 / 常见问题)。