Add product/channel billing condition editors, place-order additional services, billing simulator, forecast-to-inbound fee delta and margin warnings, insurance-aware claim tips, OMS preset dict seeds, and related AI skills/system pages. Co-authored-by: Cursor <cursoragent@cursor.com>
5.0 KiB
5.0 KiB
| name | description |
|---|---|
| oms-receiver-address-parse | Parses and roughly validates international logistics recipient addresses for OMS place-order (PC/H5). Use when working on 收件地址, AI解析, parse-address, receiver fields, 地址完整性, or /order/receiver/parse-address prompts/UX. |
OMS 国际物流收件地址解析
面向跨境/国际物流下单:把客户粘贴的整段地址拆成 OMS receiver.* 字段,并做粗校验(能否预报/打单),不是地图级精校、也不是国内快递四级地址库。
实现入口:
- 后端:
POST /order/receiver/parse-address(OrderService.ReceiverAddressParse.cs) - PC:
src/views/order/placeOrder/index.vue(左粘贴 / 右表单) - H5:
H5PlaceOrderSheet.vue(收件步「AI解析」弹窗) - API:
postOrderReceiverParseAddress(src/api/order/index.ts)
改 prompt / 校验规则时,以本 skill 为准,前后端口径保持一致。
目标(只做这些)
- 拆字段:姓名、电话、国家、邮编、省/州、城市、街道行
- 粗完整:下单必填是否齐;建议项是否缺
- 粗风险:明显缺国家/邮编/街道、国家二字码说不清、电话不像号码 →
warnings - 不编造:原文没有的省市区邮编一律留空
不要做这些
- 不调用地图/邮政 API 做地址真实性验证
- 不强制「可投递 / 门牌存在 / 邮编与城市严格匹配」
- 不把国内四级联选(省市区街道)当成必须结构
- 不把税号/EORI/VAT 当成解析主目标(可有则填,无则忽略)
OMS 字段映射
| JSON / API | 表单含义 | 说明 |
|---|---|---|
recipientsName |
收件人名称 | 必填 |
phone |
手机 | 必填;优先手机号 |
telePhone |
电话 | 固话 |
email |
邮箱 | 选填 |
companyName |
公司 | 选填 |
countryCode |
国家 | ISO 二字码大写(US/GB/DE…)必填 |
province |
省/州 | 建议有(US State、CN 省、AU State) |
city |
城市 | 建议有 |
streetNumber |
门牌号 | 可选;能拆再拆 |
streetAddress1 |
地址1 | 必填主街道行 |
streetAddress2/3 |
地址2/3 | 溢出或 Apt/Suite |
zipCode |
邮编 | 必填(粗:非空且像邮编即可) |
完整度口径(粗校验)
必填(missingRequired / isComplete=false)
- 收件人名称
- 收件人手机
- 国家(二字码)
- 邮编
- 地址1
与 PC/H5 下单提交校验对齐。
建议(missingRecommended,不挡 isComplete)
- 省/州
- 城市
多数渠道打单会用到;缺了给提示,不拦死。
warnings(短中文)
适合写:
- 无法判断国家
- 电话疑似不完整
- 邮编格式可疑(如美国非 5/9 位、英国完全不像外邮编)
- 街道与姓名粘在一起拆不清
不要写:
- 「该地址在谷歌地图不存在」
- 「邮编与城市不匹配」(无权威数据时禁止臆断)
解析规则(中/英)
- 国家:中文名/英文名 → ISO2。常见:中国 CN、美国 US、英国 GB(勿用 UK 作主码)、香港 HK、台湾 TW、澳门 MO、德国 DE、法国 FR、日本 JP、澳大利亚 AU、加拿大 CA、新加坡 SG。
- 中国地址:省→
province,市→city,区县+路号→streetAddress1;勿把省市区塞进姓名。 - 英文地址:
State→province,City→city,street line→streetAddress*,ZIP/Postcode→zipCode。 - 电话:带国家码的
+1/+44等保留;手机进phone,固话进telePhone。 - 过长街道:主行放
streetAddress1,其余2/3;单独门牌可放streetNumber。 - 不确定就空:宁可空 + warning,不要猜邮编/城市。
LLM 输出契约
只输出 JSON(可被后端 ExtractJsonObject 抽取):
{
"recipientsName": "",
"companyName": "",
"phone": "",
"telePhone": "",
"email": "",
"countryCode": "",
"province": "",
"city": "",
"streetNumber": "",
"streetAddress1": "",
"streetAddress2": "",
"streetAddress3": "",
"zipCode": "",
"warnings": []
}
后端会再跑 EvaluateCompleteness,前端展示绿/橙/红提示。
改代码时注意
- 改 system prompt → 同步本 skill +
OrderService.ReceiverAddressParse.cs - 改必填集合 → 同步 PC
isSingleRecipientComplete/ H5validateStep(1)/ 后端EvaluateCompleteness - UX:解析只覆盖非空解析结果;有选填内容时展开「更多」
- 无 AI 提供商时接口应明确报错,勿静默假成功
自测样例
英:
John Smith, +1 310-555-0199, 1001 Sunset Blvd, Los Angeles, CA 90001, USA
期望:US / CA / Los Angeles / 90001 / street 含 Sunset / phone 有值。
中(跨境少见但仍要能拆):
张三 13800138000 广东省深圳市南山区科技园南路 88 号 518000
期望:CN / 广东 / 深圳 / 邮编 518000 / 地址1 含南山区或路名。
故意残缺:
Tom, Some Street, USA
期望:缺 phone/zip → isComplete=false,warnings 可提示缺项。