触发条件接入 AI 助手(选模型、发送 skill、一键填入);预报时机并入下单并支持公式验证;下单失败可继续修改或存草稿;补充订单附件、H5 下单与渠道买价相关优化。 Co-authored-by: Cursor <cursoragent@cursor.com>
124 lines
4.8 KiB
Markdown
124 lines
4.8 KiB
Markdown
---
|
||
name: oms-auto-trigger-formula
|
||
description: >-
|
||
Writes OMS auto-trigger (自动触发) Chinese formulas for /channel/autoTrigger.
|
||
Use when the user asks for 触发条件, 自动触发公式, 拦截/警告/问题件规则,
|
||
oversize/国家/客户/销售产品条件, or formula verification sample data.
|
||
---
|
||
|
||
# OMS 自动触发公式编写
|
||
|
||
为 `/channel/autoTrigger` 生成可直接粘贴的**中文公式**(后端 `ChineseFormulaEvaluator`)。
|
||
|
||
源码权威:
|
||
|
||
- 前端字段/算子:`src/views/channel/autoTrigger/formulaMeta.ts`
|
||
- 后端解析:`Oms.Application/.../ChineseFormulaEvaluator.cs`、`AutoTriggerFormulaMeta.cs`
|
||
|
||
## 产出格式
|
||
|
||
回复必须包含:
|
||
|
||
1. **时机**:`下单` | `入库` | `出库`(无「预报」;旧「预报」=「下单」)
|
||
2. **操作**:`拦截` | `警告` | `问题件`
|
||
3. **公式**:单行可执行表达式(无解释性注释夹在公式内)
|
||
4. **一句话说明**:命中条件是什么
|
||
5. (可选)**验证样例**:国家/尺寸/客户等,方便弹窗「验证触发条件」
|
||
|
||
```text
|
||
时机:下单
|
||
操作:拦截
|
||
公式:(单件最大长度()>60||单件最大宽度()>46)&&国家包含('GB')
|
||
说明:英国且超尺寸时拦截
|
||
验证样例:国家 GB,长 70,宽 40,高 40
|
||
```
|
||
|
||
## 语法硬规则(必遵守)
|
||
|
||
| 规则 | 正确 | 错误 |
|
||
|------|------|------|
|
||
| 字段名必须是注册过的**中文 label** | `国家包含('GB')` | `ConsigneeCountry=='GB'` |
|
||
| 字符串字段用 `字段包含('值')` | `客户包含('阿里')` | `客户()=='阿里'` |
|
||
| 数值/聚合用 `字段()` 再比较 | `实重()>5`、`单件最大长度()>60` | `实重>5`、`长度包含('60')` |
|
||
| 布尔用 `字段()==1` / `==0` | `是否偏远()==1` | `是否偏远()==true` |
|
||
| 字符串字面量单引号 | `'GB'`;内部单引号翻倍 `''` | `"GB"` |
|
||
| 逻辑运算 | `&&` `\|\|` `!` | `and` `or` `not` / 中文「且」 |
|
||
| 比较运算 | `==` `!=` `>` `>=` `<` `<=` | `=` `<>` |
|
||
| 算术 | `+ - * /` 与 `()` | — |
|
||
| 空公式 | 空串视为恒真(勿故意输出空) | — |
|
||
| 长度 | ≤ 10000 | — |
|
||
|
||
`包含` 语义:字段字符串 **Contains** 参数(子串匹配,非全等)。多选可用 `\|\|`:
|
||
|
||
```text
|
||
国家包含('GB')||国家包含('UK')
|
||
```
|
||
|
||
排除产品:
|
||
|
||
```text
|
||
!销售产品包含('EX_ASP_HKDHL_YD')
|
||
```
|
||
|
||
## 写公式工作流
|
||
|
||
1. 从用户描述抽出:时机、操作、条件(国家/客户/产品/尺寸/重量/状态等)。
|
||
2. 映射到**中文字段**(见下方常用表;完整目录见 [field-catalog.md](field-catalog.md))。
|
||
3. 按字段类型选 `包含('')` 或 `字段()`。
|
||
4. 用 `&&` / `||` / `!` / `()` 组合;复杂条件先括号。
|
||
5. 对照 [examples.md](examples.md) 自检语法。
|
||
6. 输出「时机 + 操作 + 公式 + 说明」;需要时给验证样例。
|
||
|
||
不确定字段名时:优先读 `formulaMeta.ts` 的 `ORDER_TABLE_FIELDS` / `VIRTUAL_FORMULA_FIELDS`,或后端 `AutoTriggerFormulaMeta`。**禁止编造未注册中文名**。
|
||
|
||
## 常用字段速查
|
||
|
||
### 聚合(下单尺寸最常用)
|
||
|
||
| 中文 | 用法 |
|
||
|------|------|
|
||
| 单件最大长度 / 宽度 / 高度 | `单件最大长度()>60` |
|
||
| 单件长宽高之和 | `单件长宽高之和()>150` |
|
||
|
||
### 订单 / 客户
|
||
|
||
| 中文 | 类型 | 典型 |
|
||
|------|------|------|
|
||
| 国家 | string | `国家包含('GB')`(二字码) |
|
||
| 收件国家名称 | string | `收件国家名称包含('英国')` |
|
||
| 销售产品 | string | `销售产品包含('EX_')` |
|
||
| 收货渠道 | string | `收货渠道包含('DHL')` |
|
||
| 客户 | string | `客户包含('阿里国际站')` |
|
||
| 客户组 | string | `客户组包含('VIP')` |
|
||
| 货物属性 | string | `货物属性包含('sensitive')` |
|
||
| 申报总金额 | number | `申报总金额()>1000` |
|
||
| 是否偏远 / 是否COD / 是否拦截 | boolean | `是否偏远()==1` |
|
||
| 实重 / 计费重 / 长度/宽度/高度 | number | `实重()>20`(件重尺;下单前优先用聚合字段) |
|
||
|
||
### 收件人(选填场景)
|
||
|
||
`收件人邮编包含('9')`、`收件人省州包含('CA')`、`收件人城市包含('London')`
|
||
|
||
完整字段见 [field-catalog.md](field-catalog.md)。
|
||
|
||
## 时机与操作注意
|
||
|
||
- **下单 + 拦截**:建单前阻断(含草稿保存尝试)。
|
||
- **下单 + 警告/问题件**:预报成功后触发;纯草稿保存不触发。
|
||
- **入库/出库**:作业创建**之后**触发;「拦截」只打标,不回滚入库/出库。
|
||
- **问题件**:需能匹配问题模板,否则可能静默跳过。
|
||
|
||
## 自检清单
|
||
|
||
- [ ] 每个字段都是注册中文名
|
||
- [ ] 字符串用 `包含('…')`,数字用 `字段() 比较`
|
||
- [ ] 括号匹配;`&&`/`||` 优先级按需加括号
|
||
- [ ] 国家一般用二字码 `国家包含('XX')`
|
||
- [ ] 排除条件用 `!字段包含('…')`
|
||
- [ ] 公式可单行粘贴进触发条件编辑器
|
||
|
||
## 更多
|
||
|
||
- 完整字段目录:[field-catalog.md](field-catalog.md)
|
||
- 场景示例:[examples.md](examples.md)
|