File size: 6,207 Bytes
3887148
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
"""
測試調試日誌是否正常工作
"""

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