---
name: yida-formula-evaluate
description: 静态检查宜搭公式语法、字段引用和常见风险。适用于用户要求“检查公式”“公式是否能用”“定位公式报错”。不适用于：声明平台真实运行结果、保存表单配置或编写完整公式字段方案。
---

# 宜搭公式静态检查

## 严格禁止 (NEVER DO)

- 不要声称本地检查等同于宜搭平台真实执行结果；本技能只做静态检查。
- 不要编造平台支持的函数、字段 ID 或错误码；不确定时明确标注“需在宜搭平台验证”。
- 不要在没有 Schema 的情况下断言 `#{fieldId}` 一定存在；应提示用户提供 Schema 或先运行 `openyida get-schema`。
- 不要把 `>`、`>=`、`==` 这类运算符自动当作可靠写法；宜搭公式优先使用 `GT/GE/EQ/NE/LT/LE` 等函数。

## 适用场景

**正向触发**：

- “帮我检查这个公式”
- “这个宜搭公式为什么报错”
- “公式字段是否引用了正确 fieldId”
- “发布前检查公式风险”

**不适用场景**：

| 场景 | 应使用技能 |
|------|-----------|
| 编写公式字段和赋值规则方案 | `yida-formula` |
| 获取真实字段 ID | `yida-get-schema` |
| 修改/发布表单字段配置 | `yida-create-form-page` |

## 命令

```bash
openyida formula evaluate <公式或文件> [--schema schema.json] [--json] [--strict]
```

| 参数 | 说明 |
|------|------|
| `<公式或文件>` | 公式字符串，或保存公式的本地文件路径 |
| `--schema <schema.json>` | 可选；用 `openyida get-schema` 输出校验 `#{fieldId}` 是否存在 |
| `--json` | 输出机器可读 JSON |
| `--strict` | 存在阻塞错误时返回非 0 退出码，适合 CI |

## 推荐流程

1. 如果公式包含字段引用，先获取 Schema：

```bash
openyida get-schema APP_XXX FORM-XXX > .cache/form-schema.json
```

2. 运行静态检查：

```bash
openyida formula evaluate 'IF(GT(#{numberField_total}, 100), "高", "低")' --schema .cache/form-schema.json
```

3. 根据诊断结果修复：

| 诊断 | 处理 |
|------|------|
| `field_ref_not_in_schema` | 重新通过 `get-schema` 确认真实 fieldId，禁止猜测 |
| `comparison_operator` | 改用 `GT/GE/LT/LE/EQ/NE` |
| `fullwidth_punctuation` | 将中文逗号、括号、引号改为英文半角符号 |
| `function_unknown` | 检查函数是否确为宜搭支持函数；无法确认时在平台公式编辑器中验证 |
| `parenthesis_unclosed` / `string_unclosed` | 补全括号或引号 |

## 输出判断

- `ok: true` 只表示没有本地发现的阻塞错误。
- `warning` 表示高风险写法或本地无法确认的点，不应忽略。
- `error` 表示本地可确定的问题，例如字段引用不在提供的 Schema 中，或括号/字段引用明显不闭合。

## 与其他技能配合

| 步骤 | 技能 | 说明 |
|------|------|------|
| 前置 | `yida-get-schema` | 获取真实字段 ID |
| 前置/并行 | `yida-formula` | 编写或改写公式 |
| 后续 | `yida-create-form-page` | 将确认后的公式写入表单配置 |
