functions.py 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. from datetime import datetime
  2. import asyncio
  3. async def generate_response(input_str):
  4. # 定义时间和店铺分类的字典
  5. responses = {
  6. ("2天前", "仓"): {
  7. "洗后泛白#洗后缩水#染色": "洗涤不当引起,修复不了",
  8. "脏污#破损": "人为引起,修复不了",
  9. "起球": "摩擦引起,修复不了",
  10. "勾丝": "人为引起,修复不了",
  11. "勾线#漏针": "退回尝试维修",
  12. "打折#爆口#开线#拉链坏": "退回维修",
  13. "扣子磨损#掉扣": "可以补扣",
  14. "线头": "修剪一下即可",
  15. "洗后掉色": "面料特性属正常",
  16. "模特图与实物图不同": "以实物图为准",
  17. "口袋有异物": "退回分析,需要拦截一下系统",
  18. },
  19. ("2天内", "仓"): {
  20. "洗后泛白#洗后缩水#染色": "退回分析",
  21. "脏污#破损": "退回分析",
  22. "起球": "毛衣在穿着过程中,由于摩擦和压力,会产生起球属正常。",
  23. "勾丝": "退回分析",
  24. "勾线#漏针": "退回分析",
  25. "打折#爆口#开线#拉链坏": "退回维修",
  26. "扣子磨损#掉扣": "可以补扣",
  27. "线头": "修剪一下即可",
  28. "洗后掉色": "面料特性属正常",
  29. "模特图与实物图不同": "以实物图为准",
  30. "口袋有异物": "退回分析,需要拦截一下系统",
  31. },
  32. ("2天前", "门店"): {
  33. "洗后泛白#洗后缩水#染色": "洗涤不当引起,修复不了",
  34. "脏污#破损": "人为引起,修复不了",
  35. "起球": "摩擦引起,修复不了",
  36. "勾丝": "人为引起,修复不了",
  37. "勾线#漏针": "退回尝试维修",
  38. "打折#爆口#开线#拉链坏": "退回维修",
  39. "扣子磨损#掉扣": "可以补扣",
  40. "线头": "修剪一下即可",
  41. "洗后掉色": "面料特性属正常",
  42. "模特图与实物图不同": "以实物图为准",
  43. "口袋有异物": "退回分析,需要拦截一下系统",
  44. },
  45. ("2天内", "门店"): {
  46. "洗后泛白#洗后缩水#染色": "退回分析",
  47. "脏污#破损": "人为引起",
  48. "起球": "毛衣在穿着过程中,由于摩擦和压力,会产生起球属正常。",
  49. "勾丝": "退回分析",
  50. "勾线#漏针": "退回分析",
  51. "打折#爆口#开线#拉链坏": "退回维修",
  52. "扣子磨损#掉扣": "可以补扣",
  53. "线头": "修剪一下即可",
  54. "洗后掉色": "面料特性属正常",
  55. "模特图与实物图不同": "以实物图为准",
  56. "口袋有异物": "退回分析,需要拦截一下系统",
  57. },
  58. }
  59. # 定义需要查找的关键字段
  60. key_fields = {
  61. "购买平台": None,
  62. "订单号": None,
  63. "款号": None,
  64. "发货时间": None,
  65. "签收时间": None,
  66. "发货店铺": None,
  67. "反馈": None
  68. }
  69. try:
  70. # 解析输入字符串
  71. lines = input_str.strip().split('\n')
  72. for line in lines:
  73. line = line.strip()
  74. if not line: # 跳过空行
  75. continue
  76. # 移除所有表情符号和多余的空格
  77. # print(line)
  78. line = ''.join(char for char in line if not (0x1F300 <= ord(char) <= 0x1F9FF))
  79. line = line.strip()
  80. # print(line)
  81. # 检查是否包含任何关键字段
  82. for field in key_fields:
  83. if field in line:
  84. # 尝试用中文冒号分割
  85. if ':' in line:
  86. value = line.split(':', 1)[1].strip()
  87. # 尝试用英文冒号分割
  88. elif ':' in line:
  89. value = line.split(':', 1)[1].strip()
  90. else:
  91. continue
  92. # 如果值包含@,只取@之前的部分
  93. if '@' in value:
  94. value = value.split('@')[0].strip()
  95. key_fields[field] = value
  96. break
  97. # 处理签收时间
  98. sign_time = None
  99. print(key_fields)
  100. if key_fields["签收时间"]:
  101. try:
  102. sign_date = datetime.strptime(key_fields["签收时间"], "%Y-%m-%d %H:%M:%S")
  103. days_diff = (datetime.now() - sign_date).days
  104. if days_diff <= 2:
  105. sign_time = "2天内"
  106. else:
  107. sign_time = "2天前"
  108. except ValueError:
  109. return "日期格式错误,请使用正确的日期格式(YYYY-MM-DD HH:MM:SS)"
  110. # 处理店铺类型
  111. shop_type = None
  112. if key_fields["发货店铺"]:
  113. shop_type = "仓" if "仓" in key_fields["发货店铺"] else "门店"
  114. # 获取反馈内容
  115. feedback = key_fields["反馈"]
  116. # 验证必要信息
  117. if not all([sign_time, shop_type, feedback]):
  118. return "缺少必要信息,请确保包含签收时间、发货店铺和反馈。"
  119. # 查找回复
  120. print(sign_time, shop_type)
  121. response_dict = responses.get((sign_time, shop_type))
  122. if not response_dict:
  123. return "无法处理该类型的响应。"
  124. # 查找匹配的反馈关键词
  125. for key, value in response_dict.items():
  126. if any(i in feedback for i in key.split('#')):
  127. return value
  128. return "无法识别的反馈内容。"
  129. except Exception as e:
  130. return f"处理过程中出现错误:{str(e)}"
  131. # 测试代码
  132. if __name__ == "__main__":
  133. # 测试用例1:使用给定格式,包含表情符号
  134. input_str = """👉购买平台:微商城
  135. 👉订单号:4686380000181191
  136. 👉款号:1C8L6E55005WL0073
  137. 👉发货时间:2024-10-30 11:15:52
  138. 👉签收时间:2024-10-31 13:48:40
  139. 👉发货店铺:深圳君尚中航城 @宋丹丹 Stephanie Song-深圳
  140. 👉反馈:口袋有异物 @邹湖英 """
  141. print("测试结果:", asyncio.run(generate_response(input_str)))
  142. # 测试用例2:使用英文冒号,不同表情
  143. input_str2 = """⭐购买平台:微商城
  144. 📦订单号:4686380000181191
  145. 🔍款号:1C8L6E55005WL0073
  146. 📅发货时间:2024-10-30 11:15:52
  147. ⏰签收时间:2024-10-31 13:48:40
  148. 🏢发货店铺:北京仓 @宋丹丹
  149. ✍️反馈:勾了丝了都,行不行 @张三"""
  150. print("\n测试结果2:", asyncio.run(generate_response(input_str)))
  151. # 测试用例3:无表情符号
  152. input_str3 = """购买平台:微商城
  153. 订单号:4686380000181191
  154. 款号:1C8L6E55005WL0073
  155. 发货时间:2024-10-30 11:15:52
  156. 签收时间:2024-10-31 13:48:40
  157. 发货店铺:北京仓
  158. 反馈:起球了,tmd"""
  159. print("\n测试结果3:", asyncio.run(generate_response(input_str)))