ec02a791ee
- R-027 静态化:策略恒为内置两项(不可增删改名,保留显隐/排序);设置页移除「策略分组」; 字段配置入口迁到策略 tab 内「列设置」旁(FieldConfigDialog + schema-update 单策略写入) - R-026 计算字段:自写公式引擎(中文变量、四则/括号/round·abs·min·max、缺值短路→—)+ 变量目录(行情/合约/持仓/自定义字段)+ strategy-positions 逐行现算(只读内存缓存,不落库、列只读) - R-028 判定型:比较运算 + and/or + inferResultKind + 结果类型一致性校验 + 判定列 ✓/— 渲染; 网格超市落地 可下空单=涨停价>基准值+网格大小、可下多单=跌停价<基准值-网格大小 - 变量选择改标签平铺(老师反馈);公式手册 docs/99-其他材料/计算字段公式说明.md - 约束同步:产品约束-002/003/004/009/013/014、技术约束-014/015/022/023/024、UI约束-002/003/005/008 - 回归:新增 test-r026/test-r027,更新 r011/r013/r017,17 个脚本全绿;typecheck/build 通过
3.1 KiB
3.1 KiB
验收标准: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. 验收方法
node scripts/test-r026-formula-fields.mjs→ 71/71(含判定型 15 条 + 真实夹具端到端 8 条);- 全量回归 17 个脚本全绿;
npx tsc --noEmit0 错;npm run build通过; - 老师人工验收:重载插件 → 网格超市 tab → 字段配置 → 添加上述两字段 → 对照 C1–C8(重点 C5 与实盘一致性)。
5. 判定线
通过:C1–C8 全部通过 + 回归/构建全绿 + 老师人工确认。
任一即不通过:判定列把 false 显示成数字(0.00);缺数据显示为 否(误导);结果类型声明与公式不一致仍能保存;
数字型计算字段或既有四类字段出现回归。
6. 不在本次范围
三态信号字段(空 / 多 / 观望,方案 C)、not 一元取反、判定与数字混用的单字段、策略级聚合(跨行求和)、
历史持仓行的时点判定。