diff --git a/app/prompts/extractor.md b/app/prompts/extractor.md index 69b5e00..8c688fb 100644 --- a/app/prompts/extractor.md +++ b/app/prompts/extractor.md @@ -13,7 +13,7 @@ - 项目类型:市政工程/农田灌溉/房建项目/经销商备货等 - 目标国家:客户所在或项目所在的国家/地区 - 预算提及:客户提到的预算或目标价(有才记,原样保留) -- 字段值统一用中文概括(如 Kenya→肯尼亚、irrigation→灌溉);唯一例外是规格要求——必须原样保留客户原文,绝不翻译 +- 字段值统一用中文概括(如 Kenya→肯尼亚、irrigation→灌溉);规格要求等标注"原样保留"的原话字段除外——必须保留客户原文,绝不翻译 其中联系方式如果有的话格式为:{"手机": "xxx", "WhatsApp": "xxx", "邮箱": "xxx", "微信": "xxx"} - 如果对话中客户更正了此前提供的联系方式(如 wrong number / 号码错了 / use this / 换成 / 又给了一个新号),联系方式必须以客户最后提供的值为准覆盖旧值 diff --git a/app/services/boundary_filter.py b/app/services/boundary_filter.py index 1d76b7e..70f3f4e 100644 --- a/app/services/boundary_filter.py +++ b/app/services/boundary_filter.py @@ -54,22 +54,28 @@ PRICE_PATTERNS = [ # 错拼形态);俄语 цен[аы]?(цена/цены/цен);阿语复数 أسعار。 # \b 包裹不受影响——"customs" 中 costo?s? 无子串匹配(c 后是 u), # 词边界防线依旧成立 + # ⚠️ 无英文组的年份排除 (?!(?:19|20)\d\d): "precios 2025" 会命中 + # ——有意为之(价格词在前的宁拦勿放,与英文组从严方向一致但更保守) re.compile(r"\b(?:precio?s?|costo?s?|custo?s?|preço?s?|цен[аы]?|" r"стоимость|(?:ال)?سعر|(?:ال)?أسعار|(?:ال)?ثمن)\b" r"[^\d\n]{0,20}(? str: + # 方法论局限(有意取舍): 特征类是"重音字符粗匹配"——法语/意大利用户 + # (ça 的 ç / perché 的 é)同样命中 ES 池,收到西语替换句。罗曼语族互 + # 半可懂,属可接受的优雅降级;葡语借道 ES 池(拉美惯例)同理。 + # 无变音符打字形态("preco 500"/"qual o preco?")墙与路由双双放行, + # 降级 EN——宁可少而准,观察期 breach_rate 暴露后再扩。 if re.search(r"[一-鿿]", user_msg or ""): return "zh" if re.search(r"[áéíóúñãç¿¡]", user_msg or ""): diff --git a/scripts/breach_rate.py b/scripts/breach_rate.py index 56aae65..679d2ae 100644 --- a/scripts/breach_rate.py +++ b/scripts/breach_rate.py @@ -10,9 +10,10 @@ PATTERNS = [ (r"\$\s?\d", "美元符"), (r"[€£]\s?\d", "欧元/英镑符"), (r"\d[\d,.]*\s*(usd|美元|万块?|块钱)", "货币单位"), - (r"\d[\d,.]*\s*(d[óo]lares?|euros?\b(?!\s*pallets?)|рублей|руб\.?)", - "货币单位(多语言)"), - (r"\b(?:precio|costo|custo|preço|цена|стоимость|(?:ال)?سعر|(?:ال)?ثمن)\b" + (r"\d[\d,.]*\s*(d[óo]lares?|euros?\b(?!\s*pallets?)|рублей|руб\.?|" + r"доллар(?:ов|а|ы)?)", "货币单位(多语言)"), + (r"\b(?:precio?s?|costo?s?|custo?s?|preço?s?|цен[аы]?|стоимость|" + r"(?:ال)?سعر|(?:ال)?أسعار|(?:ال)?ثمن)\b" r"[^\d\n]{0,20}(?