""" 測試調試日誌是否正常工作 """ import logging # 設置日誌格式 logging.basicConfig( level=logging.INFO, format='%(levelname)s:%(name)s:%(message)s' ) def test_keyword_extraction_with_logs(): """測試關鍵字提取並顯示日誌""" def extract_keywords_with_logs(query_text: str): """帶日誌的關鍵字提取""" logger = logging.getLogger("test_keyword_extraction") # 移除常見的查詢詞彙 stop_words = ['推薦', '有沒有', '是否有', '請問', '想要', '需要', '找', '查詢', '搜尋', '還有嗎', '還有', '嗎', '可以'] # 清理查詢文字 cleaned_text = query_text.replace('?', '').replace('?', '').strip() logger.info(f"清理後的文字: '{cleaned_text}'") # 先嘗試提取核心商品詞彙 core_product_words = ['貓砂', '狗糧', '寵物', '商品', '產品', '貓', '狗', '犬', '礦砂'] extracted_core_words = [] for core_word in core_product_words: if core_word in cleaned_text: extracted_core_words.append(core_word) logger.info(f"提取的核心詞彙: {extracted_core_words}") # 分割並清理關鍵字 words = cleaned_text.split() keywords = [] for word in words: if word not in stop_words and len(word) > 1: keywords.append(word) logger.info(f"分割後的關鍵字: {keywords}") # 合併核心詞彙和分割的關鍵字 all_keywords = list(set(extracted_core_words + keywords)) logger.info(f"合併後的關鍵字: {all_keywords}") # 如果沒有有效關鍵字,使用清理後的文字 if not all_keywords: all_keywords = [cleaned_text] logger.warning(f"沒有有效關鍵字,使用原始文字: {all_keywords}") # 擴展相關關鍵字 expanded_keywords = [] for keyword in all_keywords: expanded_keywords.append(keyword) # 貓砂相關擴展 if '貓砂' in keyword or '貓' in keyword: expanded_keywords.extend(['礦砂', '豆腐砂', '水晶砂', '木屑砂', 'litter', '貓砂']) logger.info(f"貓砂相關擴展: {keyword} → 添加貓砂相關詞彙") # 狗糧相關擴展 if '狗糧' in keyword or '狗' in keyword: expanded_keywords.extend(['犬糧', '犬種', '狗食', 'dog']) logger.info(f"狗糧相關擴展: {keyword} → 添加狗糧相關詞彙") # 寵物相關擴展 if '寵物' in keyword: expanded_keywords.extend(['貓', '狗', '犬', 'pet', 'cat']) logger.info(f"寵物相關擴展: {keyword} → 添加寵物相關詞彙") # 商品相關擴展 if '商品' in keyword or '產品' in keyword: expanded_keywords.extend(['貓砂', '狗糧', '寵物', '食品', '用品']) logger.info(f"商品相關擴展: {keyword} → 添加商品相關詞彙") # 去除重複並返回 unique_keywords = list(set(expanded_keywords)) # 記錄關鍵字提取結果用於調試 logger.info(f"關鍵字提取: '{query_text}' → 核心詞: {extracted_core_words} → 最終: {unique_keywords}") return unique_keywords, extracted_core_words print("🔍 測試關鍵字提取日誌") print("=" * 50) test_queries = [ "請問貓砂還有嗎?", "貓砂還有嗎?", "請問有商品可以推薦嗎?" ] for query in test_queries: print(f"\n測試查詢: '{query}'") print("-" * 30) keywords, core_words = extract_keywords_with_logs(query) print(f"最終結果: {keywords}") def test_product_matching_simulation(): """模擬商品匹配過程""" logger = logging.getLogger("test_product_matching") # 實際商品資料 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 } ] print(f"\n🛍️ 測試商品匹配模擬") print("=" * 50) test_query = "貓砂還有嗎?" logger.info(f"開始商品匹配測試: '{test_query}'") # 模擬關鍵字提取 keywords = ['貓', '水晶砂', '貓砂', '豆腐砂', 'litter', '木屑砂', '礦砂', '貓砂還有嗎'] logger.info(f"使用關鍵字: {keywords}") # 模擬商品匹配 matched_products = [] for product in products: if product["is_deleted"]: continue # 檢查哪個關鍵字匹配了這個商品 matched_keywords = [] for keyword in keywords: if (keyword.lower() in product["productName"].lower() or keyword.lower() in product["productCode"].lower()): matched_keywords.append(keyword) if matched_keywords: matched_products.append(product) logger.info(f"📦 商品: {product['productName']} - 匹配關鍵字: {matched_keywords}") logger.info(f"✅ 匹配完成,找到 {len(matched_products)} 個商品") print(f"匹配結果: 找到 {len(matched_products)} 個商品") for product in matched_products: print(f" - {product['productName']}") def main(): """主函數""" print("🚀 測試調試日誌功能") print("=" * 60) test_keyword_extraction_with_logs() test_product_matching_simulation() print("\n" + "=" * 60) print("✅ 日誌測試完成!") print("\n💡 現在重啟服務,應該能看到詳細的調試日誌") if __name__ == "__main__": main()