File size: 4,103 Bytes
89879a0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""
簡化的資料庫測試 - 檢查是否有貓砂相關商品
"""

import sys
import os

# 添加專案根目錄到 Python 路徑
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

def test_database_products():
    """測試資料庫中的商品資料"""
    try:
        from backend.database.connection import get_database_session, close_database_session
        from backend.database.models import Product, Category
        from sqlalchemy.orm import joinedload
        from sqlalchemy import or_
        
        print("🗄️ 連接資料庫...")
        db = get_database_session()
        
        if not db:
            print("❌ 無法連接資料庫")
            return
        
        print("✅ 資料庫連接成功")
        
        # 1. 檢查總商品數量
        total_products = db.query(Product).filter(Product.is_deleted == False).count()
        print(f"📊 總商品數量: {total_products}")
        
        # 2. 檢查是否有分類
        categories = db.query(Category).all()
        print(f"📂 分類數量: {len(categories)}")
        if categories:
            print("分類列表:")
            for cat in categories[:5]:  # 只顯示前5個
                print(f"  - {cat.name}")
        
        # 3. 搜尋貓砂相關商品
        print("\n🔍 搜尋貓砂相關商品...")
        
        search_terms = ["貓砂", "貓", "寵物", "cat", "litter", "pet"]
        
        for term in search_terms:
            print(f"\n--- 搜尋關鍵字: '{term}' ---")
            
            # 搜尋商品名稱、編號、條碼
            products = db.query(Product).options(
                joinedload(Product.category)
            ).filter(
                Product.is_deleted == False
            ).filter(
                or_(
                    Product.productName.ilike(f"%{term}%"),
                    Product.productCode.ilike(f"%{term}%"),
                    Product.barcode.ilike(f"%{term}%")
                )
            ).limit(5).all()
            
            print(f"找到 {len(products)} 個商品:")
            for product in products:
                print(f"  - {product.productName} (編號: {product.productCode}, 庫存: {product.stock})")
        
        # 4. 檢查分類中是否有寵物相關
        print("\n🐾 檢查寵物相關分類...")
        pet_categories = db.query(Category).filter(
            or_(
                Category.name.ilike("%寵物%"),
                Category.name.ilike("%貓%"),
                Category.name.ilike("%狗%"),
                Category.name.ilike("%pet%"),
                Category.name.ilike("%cat%"),
                Category.name.ilike("%dog%")
            )
        ).all()
        
        print(f"找到 {len(pet_categories)} 個寵物相關分類:")
        for cat in pet_categories:
            print(f"  - {cat.name}")
            
            # 檢查該分類下的商品
            products_in_cat = db.query(Product).filter(
                Product.category_id == cat.id,
                Product.is_deleted == False
            ).limit(3).all()
            
            for product in products_in_cat:
                print(f"    * {product.productName} (庫存: {product.stock})")
        
        # 5. 隨機顯示一些商品名稱,看看資料庫中有什麼
        print("\n📋 隨機商品樣本 (前10個):")
        sample_products = db.query(Product).filter(
            Product.is_deleted == False
        ).limit(10).all()
        
        for i, product in enumerate(sample_products, 1):
            category_name = product.category.name if product.category else "無分類"
            print(f"  {i}. {product.productName} ({category_name}) - 庫存: {product.stock}")
        
        close_database_session(db)
        
    except Exception as e:
        print(f"❌ 測試錯誤: {str(e)}")
        import traceback
        traceback.print_exc()

def main():
    """主函數"""
    print("🚀 開始簡化資料庫測試\n")
    test_database_products()
    print("\n✅ 測試完成!")

if __name__ == "__main__":
    main()