o
    )h                     @   s0   d Z ddlZdd Zdd Zdd Zd	d
 ZdS )u:   
손상 데이터 처리를 위한 유틸리티 함수들
    Nc                 C   s   dd t dt| D S )u   
    자연스러운 정렬을 위한 키 생성 함수
    예: ['1', '2', '10'] -> ['1', '2', '10'] (문자열 정렬 시 '10'이 '2' 앞에 오는 것 방지)
    c                 S   s$   g | ]}|  rt|n| qS  )isdigitintlower).0textr   r   A/home/skpark/git/infrasmart_work/infrasmart/utils/damage_utils.py
<listcomp>   s    z$natural_sort_key.<locals>.<listcomp>z([0-9]+))resplitstr)sr   r   r   natural_sort_key   s   r   c                 C   s,   |    }tdd|}tdd|}|S )u   
    손상 내용 정규화
    
    Args:
        damage_desc (str): 원본 손상 내용
        
    Returns:
        str: 정규화된 손상 내용
    z[^\w\s()0-9.] z\s+ )stripr   r
   sub)damage_descdamager   r   r   normalize_damage   s   r   c                   C   s   ddddddddd	d
dddS )u   
    손상 유형별 설명 사전 반환
    
    Returns:
        dict: 손상 유형과 그에 대한 설명을 담은 사전
    u7   콘크리트나 강재의 표면에 발생한 갈라짐u1   구조물을 통해 물이 새어나오는 현상u;   콘크리트 표면에 하얀 가루가 피어나는 현상u1   콘크리트 표면이 떨어져 나가는 현상u>   콘크리트가 탈락하여 내부 철근이 드러난 상태u4   구조물의 일부가 깨지거나 부서진 상태u5   금속 재료가 산화되어 녹이 발생한 상태u.   연결부위의 높이가 서로 다른 상태u*   구조물이 아래로 가라앉은 상태u4   포장면이 하부와 분리되어 떠있는 상태u!   표면이 닳아 없어진 상태u+   부재의 일부가 떨어져 나간 상태)   균열   누수   백태   박리   철근노출   파손   부식   단차   침하   들뜸   마모   탈락r   r   r   r   r   get_damage_explanations#   s   r"   c                    s   t |  d v rt fdddD rdS dS d v sd v r!d	S d
 v s)d v r+dS d v r1dS d v r7dS d v s?d v rAdS d v rGdS d v rMdS d v rSdS dS )u   
    손상 내용에 따른 보수 방법 분류
    
    Args:
        damage_desc (str): 손상 내용
        
    Returns:
        str: 추천되는 보수 방법
    r   c                 3   s    | ]}| v V  qd S )Nr   )r   xr   r   r   	<genexpr>F   s    z"classify_repair.<locals>.<genexpr>)z0.3mmz0.5mmu   주입공법u   표면처리공법r   r   u   방수공법r   r   u   단면보수r   u   단면복구r   u   방청처리r   r!   u   교체r   u	   재설치r   u   기초보강r    u   표면보수u   상태점검 후 결정)r   any)r   r   r$   r   classify_repair9   s,   
r'   )__doc__r
   r   r   r"   r'   r   r   r   r   <module>   s    