wangdalin 8 mesi fa
commit
d4b72bb90a
4 ha cambiato i file con 231 aggiunte e 0 eliminazioni
  1. BIN
      __pycache__/functions.cpython-38.pyc
  2. 23 0
      client.py
  3. 192 0
      functions.py
  4. 16 0
      main.py

BIN
__pycache__/functions.cpython-38.pyc


+ 23 - 0
client.py

@@ -0,0 +1,23 @@
+import requests
+
+def generate_response_client(input_str: str):
+    url = "http://127.0.0.1:8111/generate/"
+    data = {"input_str": input_str}
+    
+    response = requests.post(url, json=data)
+    
+    if response.status_code == 200:
+        return response.json()
+    else:
+        return f"请求失败,状态码: {response.status_code}"
+
+if __name__ == "__main__":
+    input_str = input_str = """👉购买平台:微商城
+👉订单号:4686380000181191
+👉款号:1C8L6E55005WL0073
+👉发货时间:2024-10-30 11:15:52                 
+👉签收时间:2024-10-31 13:48:40                    
+👉发货店铺:深圳君尚中航城 @宋丹丹 Stephanie Song-深圳  
+👉反馈:口袋有异物 @邹湖英  """
+    response = generate_response_client(input_str)
+    print( response)

+ 192 - 0
functions.py

@@ -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)))

+ 16 - 0
main.py

@@ -0,0 +1,16 @@
+from functions import generate_response
+from pydantic import BaseModel
+from fastapi import FastAPI
+app = FastAPI()
+class InputData(BaseModel):
+    input_str: str
+
+@app.post("/generate/")
+async def create_response(data: InputData):
+    response = await generate_response(data.input_str)
+    return {"response": response}
+
+if __name__ == "__main__":
+    import uvicorn
+    uvicorn.run(app, host="127.0.0.1", port=8111)
+