#!/usr/bin/env python3
"""
详细调试LESKA边界问题
"""

import re
import sys
import os

# 添加项目根目录到路径
sys.path.insert(0, os.path.join(os.path.dirname(__file__)))

from app.utils.text_parser import ProductCodeExtractor

def debug_leska_boundary():
    """详细调试LESKA的边界问题"""
    extractor = ProductCodeExtractor()
    
    test_name = "小王国Bogner博格纳女款黑白拼接冰火系列夹克LESKA 8.16"
    
    print(f"原始商品名: {test_name}")
    
    # 1. 处理方括号内容
    bracket_result = extractor.bracket_processor.process_bracket_content(test_name)
    print(f"方括号处理结果: {bracket_result}")
    
    # 2. 清理品牌名
    clean_name = extractor._remove_brand(bracket_result["cleaned_text"], "Bogner")
    print(f"清理品牌后: '{clean_name}'")
    
    # 3. 分析LESKA周围的字符
    import re
    leska_matches = re.finditer(r'LESKA', clean_name)
    for match in leska_matches:
        start, end = match.span()
        before = clean_name[max(0, start-3):start] if start > 0 else ""
        after = clean_name[end:end+3] if end < len(clean_name) else ""
        print(f"LESKA位置: {start}-{end}")
        print(f"前面3个字符: '{before}' (unicode: {[ord(c) for c in before]})")
        print(f"后面3个字符: '{after}' (unicode: {[ord(c) for c in after]})")
    
    # 4. 测试不同的LESKA模式
    patterns_to_test = [
        r'\bLESKA\b',           # 标准word boundary
        r'LESKA\b',             # 只有后边界
        r'\bLESKA',             # 只有前边界
        r'(?<!\w)LESKA(?!\w)',   # 非字母边界
        r'(?<=[^A-Za-z])LESKA(?=[^A-Za-z])',  # 非字母字符边界
        r'LESKA(?=\s)',         # LESKA后面跟空格
        r'(?<=\w)LESKA(?=\s)',  # 字符后+LESKA+空格
        r'LESKA',               # 简单匹配
    ]
    
    for i, pattern in enumerate(patterns_to_test, 1):
        matches = re.findall(pattern, clean_name)
        print(f"模式 {i} ({pattern}): {matches}")

if __name__ == "__main__":
    debug_leska_boundary()