BF-WAB / test_variant.py
SamiKoen's picture
Upload 7 files
4fa4ebe verified
#!/usr/bin/env python3
import requests
import xml.etree.ElementTree as ET
def test_variant_search(product_name):
"""B2B API'den variant field'ı kontrol et"""
try:
warehouse_url = 'https://video.trek-turkey.com/bizimhesap-warehouse-xml.php'
response = requests.get(warehouse_url, verify=False, timeout=15)
if response.status_code != 200:
return None
root = ET.fromstring(response.content)
# Turkish character normalization function
turkish_map = {'ı': 'i', 'ğ': 'g', 'ü': 'u', 'ş': 's', 'ö': 'o', 'ç': 'c', 'İ': 'i', 'I': 'i'}
def normalize_turkish(text):
import unicodedata
text = unicodedata.normalize('NFD', text)
text = ''.join(char for char in text if unicodedata.category(char) != 'Mn')
for tr_char, en_char in turkish_map.items():
text = text.replace(tr_char, en_char)
return text
# Normalize search product name
search_name = normalize_turkish(product_name.lower().strip())
search_words = search_name.split()
print(f"DEBUG: Aranan: '{product_name}' -> normalize: '{search_name}' -> kelimeler: {search_words}")
variant_matches = []
# Check variant field for M-TURUNCU like patterns
for product in root.findall('Product'):
product_name_elem = product.find('ProductName')
variant_elem = product.find('Variant')
if product_name_elem is not None and product_name_elem.text:
xml_product_name = product_name_elem.text.strip()
# Check variant field
if variant_elem is not None and variant_elem.text:
variant_text = variant_elem.text.strip()
variant_normalized = normalize_turkish(variant_text.lower().replace('-', ' '))
# Check if all search words are in variant field
if all(word in variant_normalized for word in search_words):
# Check for stock
warehouses = product.find('Warehouses')
stock_info = []
if warehouses is not None:
for warehouse in warehouses.findall('Warehouse'):
name_elem = warehouse.find('Name')
stock_elem = warehouse.find('Stock')
if name_elem is not None and stock_elem is not None:
warehouse_name = name_elem.text if name_elem.text else "Bilinmeyen"
try:
stock_count = int(stock_elem.text) if stock_elem.text else 0
if stock_count > 0:
stock_info.append(f"{warehouse_name}: {stock_count}")
except (ValueError, TypeError):
pass
variant_matches.append({
'product_name': xml_product_name,
'variant': variant_text,
'variant_normalized': variant_normalized,
'stock_info': stock_info
})
print(f"DEBUG: VARIANT MATCH - {xml_product_name}")
print(f" Variant: {variant_text} -> {variant_normalized}")
if stock_info:
print(f" Stok: {', '.join(stock_info)}")
else:
print(f" Stokta yok")
return variant_matches
except Exception as e:
print(f"Hata: {e}")
return None
if __name__ == "__main__":
# Test different cases
test_cases = [
"M Turuncu",
"m turuncu",
"L Siyah",
"S Beyaz"
]
for test_case in test_cases:
print(f"\n=== Testing: {test_case} ===")
result = test_variant_search(test_case)
if result:
print(f"Toplam {len(result)} variant match bulundu:")
for i, match in enumerate(result, 1):
print(f"{i}. {match['product_name']} - {match['variant']}")
if match['stock_info']:
print(f" Stokta: {', '.join(match['stock_info'])}")
else:
print(f" Stokta değil")
else:
print("Variant match bulunamadı")
print("-" * 50)