- 통합 분류기 구현으로 키워드 우선순위 체계 적용 - HEX.PLUG → FITTING 분류 수정 (기존 VALVE 오분류 해결) - 플랜지/밸브가 볼트로 오분류되는 문제 해결 (A193, A194 재질 키워드 우선순위 적용) - 피팅 재질(A234, A403, A420) 기반 분류 추가 - 니플 길이 정보 보존 로직 개선 - 파이프 끝단 가공 정보를 구매 단계에서 제외 - PostgreSQL 사용으로 RULES.md 업데이트 - 상호 배타적 키워드 시스템 구현 (Level 1 키워드 우선)
41 lines
1.5 KiB
Python
41 lines
1.5 KiB
Python
from app.services.integrated_classifier import LEVEL1_TYPE_KEYWORDS
|
|
|
|
test = "NIPPLE, SMLS, SCH 80, ASTM A106 GR B PBE"
|
|
print(f"테스트: {test}")
|
|
|
|
desc_upper = test.upper()
|
|
desc_parts = [part.strip() for part in desc_upper.split(',')]
|
|
|
|
print(f"대문자 변환: {desc_upper}")
|
|
print(f"쉼표 분리: {desc_parts}")
|
|
|
|
# 단계별 디버깅
|
|
detected_types = []
|
|
for material_type, keywords in LEVEL1_TYPE_KEYWORDS.items():
|
|
type_found = False
|
|
for keyword in keywords:
|
|
# 전체 문자열에서 찾기
|
|
if keyword in desc_upper:
|
|
print(f"✓ {material_type}: '{keyword}' 전체 문자열에서 발견")
|
|
detected_types.append((material_type, keyword))
|
|
type_found = True
|
|
break
|
|
# 각 부분에서도 정확히 매칭되는지 확인
|
|
for part in desc_parts:
|
|
if keyword == part or keyword in part:
|
|
print(f"✓ {material_type}: '{keyword}' 부분 '{part}'에서 발견")
|
|
detected_types.append((material_type, keyword))
|
|
type_found = True
|
|
break
|
|
if type_found:
|
|
break
|
|
|
|
print(f"\n감지된 타입들: {detected_types}")
|
|
print(f"감지된 타입 개수: {len(detected_types)}")
|
|
|
|
if len(detected_types) == 1:
|
|
print(f"단일 타입 확정: {detected_types[0][0]}")
|
|
elif len(detected_types) > 1:
|
|
print(f"복수 타입 감지: {detected_types}")
|
|
else:
|
|
print("Level 1 키워드 없음 - 재질 기반 분류로 이동") |