""" 緊急調試:貓砂查詢問題 """ def debug_keyword_expansion(): """調試關鍵字擴展邏輯""" def extract_keywords_with_expansion(query_text: str): """擴展版關鍵字提取""" # 移除常見的查詢詞彙 stop_words = ['推薦', '有沒有', '是否有', '請問', '想要', '需要', '找', '查詢', '搜尋', '還有嗎', '?', '?'] # 分割並清理關鍵字 words = query_text.replace('?', '').replace('?', '').split() keywords = [word for word in words if word not in stop_words and len(word) > 1] # 擴展相關關鍵字 expanded_keywords = [] for keyword in keywords: expanded_keywords.append(keyword) # 貓砂相關擴展 if '貓砂' in keyword or '貓' in keyword: expanded_keywords.extend(['礦砂', '豆腐砂', '水晶砂', '木屑砂', 'litter']) # 狗糧相關擴展 if '狗糧' in keyword or '狗' in keyword: expanded_keywords.extend(['犬糧', '犬種', '狗食', 'dog']) # 寵物相關擴展 if '寵物' in keyword: expanded_keywords.extend(['貓', '狗', '犬', 'pet', 'cat']) return expanded_keywords if expanded_keywords else [query_text.strip()] print("🔍 調試關鍵字擴展邏輯") print("=" * 50) test_query = "貓砂還有嗎?" print(f"原始查詢: '{test_query}'") keywords = extract_keywords_with_expansion(test_query) print(f"擴展關鍵字: {keywords}") return keywords def debug_product_matching(): """調試商品匹配邏輯""" # 實際商品資料 products = [ { "id": 2, "productCode": "SW-06-01", "productName": "Shovel well豪好鏟 破碎型礦砂", "stock": 50, "category_id": 1 }, { "id": 3, "productCode": "TL-03", "productName": "美國極冠貓砂 薰衣草12kg", "stock": 48, "category_id": 1 } ] print("\n🛍️ 調試商品匹配邏輯") print("=" * 50) keywords = debug_keyword_expansion() print(f"\n商品資料:") for product in products: print(f" - {product['productName']}") print(f"\n匹配測試:") for keyword in keywords: print(f"\n關鍵字: '{keyword}'") matches = [] for product in products: product_name_lower = product["productName"].lower() product_code_lower = product["productCode"].lower() keyword_lower = keyword.lower() if (keyword_lower in product_name_lower or keyword_lower in product_code_lower): matches.append(product) print(f" ✅ 匹配: {product['productName']}") if not matches: print(f" ❌ 無匹配") return keywords def debug_intent_analysis(): """調試意圖分析邏輯""" def analyze_query_intent_debug(message: str): """調試版意圖分析""" message_lower = message.lower() # 商品查詢關鍵字(擴展版) product_keywords = [ '推薦', '有沒有', '是否有', '請問有', '商品', '產品', '貨品', '查詢', '搜尋', '找', '庫存', '存貨', '價格', '多少錢', '貓砂', '狗糧', '寵物', '食品', '用品', '貓', '狗', '寵物用品', 'cat', 'dog', 'pet', 'litter', 'food', '還有嗎', '還有' ] # 推薦查詢關鍵字 recommendation_keywords = ['推薦', '建議', '介紹', '有什麼', '哪些', '什麼好', '推薦一些'] # 庫存查詢關鍵字 inventory_keywords = ['庫存', '存貨', '剩餘', '還有', '現貨', '有多少', '剩多少', '還有嗎'] is_product_query = any(keyword in message_lower for keyword in product_keywords) is_recommendation = any(keyword in message_lower for keyword in recommendation_keywords) is_inventory_check = any(keyword in message_lower for keyword in inventory_keywords) confidence = 0.5 if is_product_query: confidence += 0.3 if is_recommendation: confidence += 0.2 if is_inventory_check: confidence += 0.2 return { "is_product_query": is_product_query, "is_recommendation": is_recommendation, "is_inventory_check": is_inventory_check, "confidence": min(confidence, 1.0), "intent": "product_query" if is_product_query else "unknown", "matched_keywords": [kw for kw in product_keywords if kw in message_lower] } print("\n🤖 調試意圖分析邏輯") print("=" * 50) test_query = "貓砂還有嗎?" print(f"查詢: '{test_query}'") analysis = analyze_query_intent_debug(test_query) print(f"商品查詢: {analysis['is_product_query']}") print(f"推薦查詢: {analysis['is_recommendation']}") print(f"庫存查詢: {analysis['is_inventory_check']}") print(f"信心度: {analysis['confidence']:.2f}") print(f"匹配的關鍵字: {analysis['matched_keywords']}") return analysis def debug_search_logic(): """調試搜尋邏輯""" print("\n🔍 調試搜尋邏輯") print("=" * 50) # 模擬 search_products_advanced 邏輯 def simulate_search_products_advanced(query_text: str): """模擬進階商品搜尋""" # 1. 提取關鍵字 def extract_keywords_with_expansion(query_text: str): stop_words = ['推薦', '有沒有', '是否有', '請問', '想要', '需要', '找', '查詢', '搜尋', '還有嗎', '?', '?'] words = query_text.replace('?', '').replace('?', '').split() keywords = [word for word in words if word not in stop_words and len(word) > 1] expanded_keywords = [] for keyword in keywords: expanded_keywords.append(keyword) if '貓砂' in keyword or '貓' in keyword: expanded_keywords.extend(['礦砂', '豆腐砂', '水晶砂', '木屑砂', 'litter']) if '狗糧' in keyword or '狗' in keyword: expanded_keywords.extend(['犬糧', '犬種', '狗食', 'dog']) if '寵物' in keyword: expanded_keywords.extend(['貓', '狗', '犬', 'pet', 'cat']) return expanded_keywords if expanded_keywords else [query_text.strip()] # 2. 商品資料 products = [ { "id": 2, "productCode": "SW-06-01", "productName": "Shovel well豪好鏟 破碎型礦砂", "stock": 50, "is_deleted": False }, { "id": 3, "productCode": "TL-03", "productName": "美國極冠貓砂 薰衣草12kg", "stock": 48, "is_deleted": False } ] # 3. 搜尋邏輯 keywords = extract_keywords_with_expansion(query_text) print(f"搜尋關鍵字: {keywords}") matched_products = [] for product in products: if product["is_deleted"]: continue # 檢查是否有任一關鍵字匹配 for keyword in keywords: keyword_lower = keyword.lower() product_name_lower = product["productName"].lower() product_code_lower = product["productCode"].lower() if (keyword_lower in product_name_lower or keyword_lower in product_code_lower): matched_products.append(product) print(f" ✅ 匹配: {product['productName']} (關鍵字: {keyword})") break # 找到匹配就跳出 return { "success": True, "data": matched_products, "count": len(matched_products) } test_query = "貓砂還有嗎?" result = simulate_search_products_advanced(test_query) print(f"搜尋結果:") print(f" 成功: {result['success']}") print(f" 數量: {result['count']}") if result['data']: print(f" 找到的商品:") for product in result['data']: print(f" - {product['productName']} (庫存: {product['stock']})") else: print(f" ❌ 沒有找到商品") def main(): """主函數""" print("🚨 緊急調試:貓砂查詢問題") print("=" * 60) # 1. 調試意圖分析 intent_analysis = debug_intent_analysis() # 2. 調試關鍵字擴展和商品匹配 debug_product_matching() # 3. 調試完整搜尋邏輯 debug_search_logic() print("\n" + "=" * 60) print("🔍 問題診斷結果:") if intent_analysis["confidence"] >= 1.0: print("✅ 意圖識別正常 (信心度 1.00)") else: print("❌ 意圖識別有問題") print("\n💡 可能的問題:") print("1. 關鍵字擴展邏輯是否正確執行?") print("2. 資料庫查詢是否有錯誤?") print("3. 商品資料是否正確載入?") print("4. SQL 查詢條件是否正確?") if __name__ == "__main__": main()