front/.cursor/skills/oms-auto-trigger-formula/SKILL.md
zzh a2e71a3a6b feat: 自动触发支持 AI 写公式,并完善下单失败与订单附件体验
触发条件接入 AI 助手(选模型、发送 skill、一键填入);预报时机并入下单并支持公式验证;下单失败可继续修改或存草稿;补充订单附件、H5 下单与渠道买价相关优化。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-28 20:54:28 +08:00

124 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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)