feat: 사용자 요구사항 기능 완전 구현 및 전체 카테고리 추가
Some checks failed
SonarQube Analysis / SonarQube Scan (push) Has been cancelled

- 사용자 요구사항 저장/로드/엑셀 내보내기 기능 완전 구현
- 백엔드 API 수정: Request Body 방식으로 변경
- 데이터베이스 스키마: material_id 컬럼 추가
- 프론트엔드 상태 관리 개선: 저장 후 자동 리로드
- 입력 필드 연결 문제 해결: 누락된 onChange 핸들러 추가
- NewMaterialsPage에 '전체' 카테고리 버튼 추가 (기본 선택)
- Docker 환경 개선: 프론트엔드 볼륨 마운트 및 포트 수정
- UI 개선: 벌레 이모지 제거, 디버그 코드 정리
This commit is contained in:
Hyungi Ahn
2025-09-30 08:55:20 +09:00
parent 0f9a5ad2ea
commit 50570e4624
34 changed files with 942 additions and 181 deletions

View File

@@ -1053,6 +1053,68 @@ def calculate_bolt_confidence(confidence_scores: Dict) -> float:
# ========== 특수 기능들 ==========
def extract_bolt_additional_requirements(description: str) -> str:
"""볼트 설명에서 추가요구사항 추출 (표면처리, 특수 요구사항 등)"""
desc_upper = description.upper()
additional_reqs = []
# 표면처리 패턴들
surface_treatments = {
'ELEC.GALV': '전기아연도금',
'ELEC GALV': '전기아연도금',
'GALVANIZED': '아연도금',
'GALV': '아연도금',
'HOT DIP GALV': '용융아연도금',
'HDG': '용융아연도금',
'ZINC PLATED': '아연도금',
'ZINC': '아연도금',
'STAINLESS': '스테인리스',
'SS': '스테인리스',
'PASSIVATED': '부동태화',
'ANODIZED': '아노다이징',
'BLACK OXIDE': '흑색산화',
'PHOSPHATE': '인산처리',
'DACROMET': '다크로메트',
'GEOMET': '지오메트'
}
# 특수 요구사항 패턴들
special_requirements = {
'HEAVY HEX': '중육각',
'FULL THREAD': '전나사',
'PARTIAL THREAD': '부분나사',
'FINE THREAD': '세나사',
'COARSE THREAD': '조나사',
'LEFT HAND': '좌나사',
'RIGHT HAND': '우나사',
'SOCKET HEAD': '소켓헤드',
'BUTTON HEAD': '버튼헤드',
'FLAT HEAD': '평머리',
'PAN HEAD': '팬헤드',
'TRUSS HEAD': '트러스헤드',
'WASHER FACE': '와셔면',
'SERRATED': '톱니형',
'LOCK': '잠금',
'SPRING': '스프링',
'WAVE': '웨이브'
}
# 표면처리 확인
for pattern, korean in surface_treatments.items():
if pattern in desc_upper:
additional_reqs.append(korean)
# 특수 요구사항 확인
for pattern, korean in special_requirements.items():
if pattern in desc_upper:
additional_reqs.append(korean)
# 중복 제거 및 정렬
additional_reqs = list(set(additional_reqs))
return ', '.join(additional_reqs) if additional_reqs else ''
def get_bolt_purchase_info(bolt_result: Dict) -> Dict:
"""볼트 구매 정보 생성"""