"""
FLANGE 분류 테스트
"""

from .flange_classifier import classify_flange, get_flange_purchase_info

def test_flange_classification():
    """FLANGE 분류 테스트"""
    
    test_cases = [
        {
            "name": "웰드넥 플랜지 (일반)",
            "dat_file": "FLG_WN_150",
            "description": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105",
            "main_nom": "4\"",
            "red_nom": None
        },
        {
            "name": "슬립온 플랜지 (일반)",
            "dat_file": "FLG_SO_300",
            "description": "FLG SLIP ON RF, 300LB, ASTM A105",
            "main_nom": "3\"",
            "red_nom": None
        },
        {
            "name": "블라인드 플랜지 (일반)",
            "dat_file": "FLG_BL_150",
            "description": "FLG BLIND RF, 150LB, ASTM A105",
            "main_nom": "6\"",
            "red_nom": None
        },
        {
            "name": "소켓웰드 플랜지 (고압)",
            "dat_file": "FLG_SW_3000",
            "description": "FLG SW, 3000LB, ASTM A105",
            "main_nom": "1\"",
            "red_nom": None
        },
        {
            "name": "오리피스 플랜지 (SPECIAL)",
            "dat_file": "FLG_ORI_150",
            "description": "FLG ORIFICE RF, 150LB, 0.5 INCH BORE, ASTM A105",
            "main_nom": "4\"",
            "red_nom": None
        },
        {
            "name": "스펙터클 블라인드 (SPECIAL)",
            "dat_file": "FLG_SPB_300",
            "description": "FLG SPECTACLE BLIND, 300LB, ASTM A105",
            "main_nom": "6\"",
            "red_nom": None
        },
        {
            "name": "리듀싱 플랜지 (SPECIAL)",
            "dat_file": "FLG_RED_300",
            "description": "FLG REDUCING, 300LB, ASTM A105",
            "main_nom": "6\"",
            "red_nom": "4\""
        },
        {
            "name": "스페이서 플랜지 (SPECIAL)",
            "dat_file": "FLG_SPC_600",
            "description": "FLG SPACER, 600LB, 2 INCH THK, ASTM A105",
            "main_nom": "3\"",
            "red_nom": None
        }
    ]
    
    print("🔩 FLANGE 분류 테스트 시작\n")
    print("=" * 80)
    
    for i, test in enumerate(test_cases, 1):
        print(f"\n테스트 {i}: {test['name']}")
        print("-" * 60)
        
        result = classify_flange(
            test["dat_file"],
            test["description"],
            test["main_nom"],
            test["red_nom"]
        )
        
        purchase_info = get_flange_purchase_info(result)
        
        print(f"📋 입력:")
        print(f"  DAT_FILE: {test['dat_file']}")
        print(f"  DESCRIPTION: {test['description']}")
        print(f"  SIZE: {result['size_info']['size_description']}")
        
        print(f"\n🔩 분류 결과:")
        print(f"  재질: {result['material']['standard']} | {result['material']['grade']}")
        print(f"  카테고리: {'🌟 SPECIAL' if result['flange_category']['is_special'] else '📋 STANDARD'}")
        print(f"  플랜지타입: {result['flange_type']['type']}")
        print(f"  특성: {result['flange_type']['characteristics']}")
        print(f"  면가공: {result['face_finish']['finish']}")
        print(f"  압력등급: {result['pressure_rating']['rating']} ({result['pressure_rating']['common_use']})")
        print(f"  제작방법: {result['manufacturing']['method']} ({result['manufacturing']['characteristics']})")
        
        if result['flange_type']['special_features']:
            print(f"  특수기능: {', '.join(result['flange_type']['special_features'])}")
        
        print(f"\n📊 신뢰도:")
        print(f"  전체신뢰도: {result['overall_confidence']}")
        print(f"  재질: {result['material']['confidence']}")
        print(f"  플랜지타입: {result['flange_type']['confidence']}")
        print(f"  면가공: {result['face_finish']['confidence']}")
        print(f"  압력등급: {result['pressure_rating']['confidence']}")
        
        print(f"\n🛒 구매 정보:")
        print(f"  공급업체: {purchase_info['supplier_type']}")
        print(f"  예상납기: {purchase_info['lead_time_estimate']}")
        print(f"  구매카테고리: {purchase_info['purchase_category']}")
        if purchase_info['special_requirements']:
            print(f"  특수요구사항: {', '.join(purchase_info['special_requirements'])}")
        
        print(f"\n💾 저장될 데이터:")
        print(f"  MAIN_NOM: {result['size_info']['main_size']}")
        print(f"  RED_NOM: {result['size_info']['reduced_size'] or 'NULL'}")
        print(f"  FLANGE_CATEGORY: {'SPECIAL' if result['flange_category']['is_special'] else 'STANDARD'}")
        print(f"  FLANGE_TYPE: {result['flange_type']['type']}")
        
        if i < len(test_cases):
            print("\n" + "=" * 80)

if __name__ == "__main__":
    test_flange_classification()
