落地私聊空运询价与TMS报价回填,按后台模板出单。
查到价后把币种、单位、数量、单价、备注写入报价单,避免销售只看到光秃秃的金额。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
"""
|
||||
相同询价内容指纹。
|
||||
|
||||
本文件职责:用已确认查价字段生成可比较的键,供主账全库检索相同需求(展示用,不复用工单号)。
|
||||
禁止:用自然语言模糊相似;禁止写六态。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import hashlib
|
||||
from typing import Any
|
||||
|
||||
|
||||
def ascii_idempotency_key(raw: str) -> str:
|
||||
"""
|
||||
企微/主账 HTTP 头必须是 ASCII。中文指纹原样塞进 X-Idempotency-Key 会直接崩,销售收不到回复。
|
||||
"""
|
||||
text = (raw or "").strip()
|
||||
if not text:
|
||||
return ""
|
||||
try:
|
||||
text.encode("ascii")
|
||||
return text
|
||||
except UnicodeEncodeError:
|
||||
return "sha256:" + hashlib.sha256(text.encode("utf-8")).hexdigest()
|
||||
|
||||
|
||||
def inquiry_fingerprint(facts: dict[str, Any], *, business_line: str) -> str:
|
||||
"""
|
||||
生成相同内容键。
|
||||
|
||||
组成:业务线 + 起运 + 目的 + 品名 + 件数/货量 + 毛重 + 体积 + 报价日期。
|
||||
空运箱型不在空运必填里;海运箱型箱量若有则纳入。
|
||||
"""
|
||||
line = (business_line or "").strip().upper()
|
||||
keys = ["起运港", "目的港", "品名", "件数", "货量", "毛重", "体积", "箱型箱量", "报价日期"]
|
||||
parts = [line]
|
||||
for key in keys:
|
||||
parts.append(str(facts.get(key) or "").strip())
|
||||
return "|".join(parts)
|
||||
Reference in New Issue
Block a user