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