|
@@ -0,0 +1,192 @@
|
|
|
|
+
|
|
|
|
+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)))
|