123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- from datetime import datetime
- import asyncio
- async def generate_response(input_str):
- # 定义时间和店铺分类的字典
- responses = {
- ("2天前", "仓"): {
- "洗后泛白#洗后缩水#染色": "洗涤不当引起,修复不了",
- "脏污#破损": "人为引起,修复不了",
- "起球": "摩擦引起,修复不了",
- "勾丝": "人为引起,修复不了",
- "勾线#漏针": "退回尝试维修",
- "打折#爆口#开线#拉链坏": "退回维修",
- "扣子磨损#掉扣": "可以补扣",
- "线头": "修剪一下即可",
- "洗后掉色": "面料特性属正常",
- "模特图与实物图不同": "以实物图为准",
- "口袋有异物": "退回分析,需要拦截一下系统",
-
- },
- ("2天内", "仓"): {
- "洗后泛白#洗后缩水#染色": "退回分析",
- "脏污#破损": "退回分析",
- "起球": "毛衣在穿着过程中,由于摩擦和压力,会产生起球属正常。",
- "勾丝": "退回分析",
- "勾线#漏针": "退回分析",
- "打折#爆口#开线#拉链坏": "退回维修",
- "扣子磨损#掉扣": "可以补扣",
- "线头": "修剪一下即可",
- "洗后掉色": "面料特性属正常",
- "模特图与实物图不同": "以实物图为准",
- "口袋有异物": "退回分析,需要拦截一下系统",
-
- },
- ("2天前", "门店"): {
- "洗后泛白#洗后缩水#染色": "洗涤不当引起,修复不了",
- "脏污#破损": "人为引起,修复不了",
- "起球": "摩擦引起,修复不了",
- "勾丝": "人为引起,修复不了",
- "勾线#漏针": "退回尝试维修",
- "打折#爆口#开线#拉链坏": "退回维修",
- "扣子磨损#掉扣": "可以补扣",
- "线头": "修剪一下即可",
- "洗后掉色": "面料特性属正常",
- "模特图与实物图不同": "以实物图为准",
- "口袋有异物": "退回分析,需要拦截一下系统",
-
- },
- ("2天内", "门店"): {
- "洗后泛白#洗后缩水#染色": "退回分析",
- "脏污#破损": "人为引起",
- "起球": "毛衣在穿着过程中,由于摩擦和压力,会产生起球属正常。",
- "勾丝": "退回分析",
- "勾线#漏针": "退回分析",
- "打折#爆口#开线#拉链坏": "退回维修",
- "扣子磨损#掉扣": "可以补扣",
- "线头": "修剪一下即可",
- "洗后掉色": "面料特性属正常",
- "模特图与实物图不同": "以实物图为准",
- "口袋有异物": "退回分析,需要拦截一下系统",
- },
- }
- # 定义需要查找的关键字段
- key_fields = {
- "购买平台": None,
- "订单号": None,
- "款号": None,
- "发货时间": None,
- "签收时间": None,
- "发货店铺": None,
- "反馈": None
- }
- try:
- # 解析输入字符串
- lines = input_str.strip().split('\n')
-
- for line in lines:
- line = line.strip()
- if not line: # 跳过空行
- continue
- # 移除所有表情符号和多余的空格
- # print(line)
- line = ''.join(char for char in line if not (0x1F300 <= ord(char) <= 0x1F9FF))
- line = line.strip()
- # print(line)
- # 检查是否包含任何关键字段
- for field in key_fields:
- if field in line:
- # 尝试用中文冒号分割
- if ':' in line:
- value = line.split(':', 1)[1].strip()
- # 尝试用英文冒号分割
- elif ':' in line:
- value = line.split(':', 1)[1].strip()
- else:
- continue
- # 如果值包含@,只取@之前的部分
- if '@' in value:
- value = value.split('@')[0].strip()
- key_fields[field] = value
- break
- # 处理签收时间
- sign_time = None
- print(key_fields)
- if key_fields["签收时间"]:
- try:
- sign_date = datetime.strptime(key_fields["签收时间"], "%Y-%m-%d %H:%M:%S")
- days_diff = (datetime.now() - sign_date).days
-
- if days_diff <= 2:
- sign_time = "2天内"
- else:
- sign_time = "2天前"
- except ValueError:
- return "日期格式错误,请使用正确的日期格式(YYYY-MM-DD HH:MM:SS)"
- # 处理店铺类型
- shop_type = None
- if key_fields["发货店铺"]:
- shop_type = "仓" if "仓" in key_fields["发货店铺"] else "门店"
- # 获取反馈内容
- feedback = key_fields["反馈"]
- # 验证必要信息
- if not all([sign_time, shop_type, feedback]):
- return "缺少必要信息,请确保包含签收时间、发货店铺和反馈。"
- # 查找回复
- print(sign_time, shop_type)
- response_dict = responses.get((sign_time, shop_type))
- if not response_dict:
- return "无法处理该类型的响应。"
- # 查找匹配的反馈关键词
- for key, value in response_dict.items():
- if any(i in feedback for i in key.split('#')):
- return value
-
- return "无法识别的反馈内容。"
- except Exception as e:
- return f"处理过程中出现错误:{str(e)}"
- # 测试代码
- if __name__ == "__main__":
- # 测试用例1:使用给定格式,包含表情符号
- input_str = """👉购买平台:微商城
- 👉订单号:4686380000181191
- 👉款号:1C8L6E55005WL0073
- 👉发货时间:2024-10-30 11:15:52
- 👉签收时间:2024-10-31 13:48:40
- 👉发货店铺:深圳君尚中航城 @宋丹丹 Stephanie Song-深圳
- 👉反馈:口袋有异物 @邹湖英 """
-
- print("测试结果:", asyncio.run(generate_response(input_str)))
- # 测试用例2:使用英文冒号,不同表情
- input_str2 = """⭐购买平台:微商城
- 📦订单号:4686380000181191
- 🔍款号:1C8L6E55005WL0073
- 📅发货时间:2024-10-30 11:15:52
- ⏰签收时间:2024-10-31 13:48:40
- 🏢发货店铺:北京仓 @宋丹丹
- ✍️反馈:勾了丝了都,行不行 @张三"""
-
- print("\n测试结果2:", asyncio.run(generate_response(input_str)))
- # 测试用例3:无表情符号
- input_str3 = """购买平台:微商城
- 订单号:4686380000181191
- 款号:1C8L6E55005WL0073
- 发货时间:2024-10-30 11:15:52
- 签收时间:2024-10-31 13:48:40
- 发货店铺:北京仓
- 反馈:起球了,tmd"""
-
- print("\n测试结果3:", asyncio.run(generate_response(input_str)))
|