| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- """
- 品牌检测与排他协议辅助判断
- """
- import re
- from typing import List, Dict, Any
- # 中国品牌
- CHINESE_BRANDS = [
- "byd", "chery", "dfsk", "dongfeng", "foton", "gac", "geely",
- "great wall", "haval", "jac", "jetour", "li auto", "mg", "nio",
- "omoda", "ora", "wuling", "xpeng", "zeekr", "changan", "baic",
- " brilliance", "maxus", "saic"
- ]
- # 常见非中国品牌(用于判断“无排他”)
- NON_CHINESE_BRANDS = [
- "audi", "bmw", "citroen", "dacia", "fiat", "ford", "honda",
- "hyundai", "kia", "mercedes", "nissan", "opel", "peugeot",
- "renault", "seat", "skoda", "toyota", "volkswagen", "volvo",
- "jeep", "chevrolet", "mazda", "mitsubishi", "suzuki"
- ]
- def detect_brands(text: str) -> Dict[str, List[str]]:
- """从文本中检测品牌词"""
- if not text:
- return {"chinese": [], "non_chinese": [], "all": []}
- text_lower = text.lower()
- found_chinese = []
- found_non_chinese = []
- for brand in CHINESE_BRANDS:
- if re.search(r'\b' + re.escape(brand) + r'\b', text_lower):
- found_chinese.append(brand)
- for brand in NON_CHINESE_BRANDS:
- if re.search(r'\b' + re.escape(brand) + r'\b', text_lower):
- found_non_chinese.append(brand)
- return {
- "chinese": found_chinese,
- "non_chinese": found_non_chinese,
- "all": found_chinese + found_non_chinese
- }
- def assess_exclusivity(text: str) -> str:
- """
- 辅助判断排他协议状态
- 返回: 疑似无排他,可合作 / 已代理中国品牌,需评估 / 信息不足,待判断
- """
- brands = detect_brands(text)
- if brands["chinese"]:
- return "已代理中国品牌,需评估"
- if brands["non_chinese"] and len(brands["non_chinese"]) >= 1:
- return "疑似无排他,可合作"
- return "信息不足,待判断"
- def enrich_record_with_brands(record: Dict[str, Any]) -> Dict[str, Any]:
- """给记录添加品牌检测字段"""
- combined_text = " ".join([
- str(record.get("主营业务", "")),
- str(record.get("备注", "")),
- str(record.get("客户类型", ""))
- ])
- brands = detect_brands(combined_text)
- record["detected_brands"] = brands["all"]
- record["exclusivity_assessment"] = assess_exclusivity(combined_text)
- return record
|