o
    Vi
                     @   sr   d dl mZmZ deeef dee deeef fddZdeeef defdd	Zdeeef defd
dZdS )    )DictListuser_responses	questionsreturnc           
      C   st   dddddd}d}|D ]+}t |d }|d }|d }| |d}|dkr)|}	n|d | }	||  |	7  < q|S )	ua   
    사용자의 답변과 질문 정보를 받아 각 Factor별 점수를 계산합니다.
    r   )EACSO   idfactorkey      )strget)
r   r   scores	max_scaleqq_idr   r   
user_scorefinal_score r   ;/home/air/goalskill_sales/back/app/services/mbti_scoring.pycalculate_scores   s   r   r   c                    s   d  fdd}d}||| d dkrdnd7 }||| d dkr#dnd	7 }||| d
 dkr1dnd7 }||| d dkr?dnd7 }|| d	 dkrLdnd}|| S )u   
    계산된 점수(Scores)를 MBTI 4글자 유형(String)으로 변환합니다.
    퍼센트 환산 후 50% 기준으로 판정 (convert_to_mbti_scores와 동일 기준)
    2   c                       |   d }t dtd|S Nd   g        g      Y@maxminvalpct	max_scorer   r   to_pct&      zconvert_to_mbti.<locals>.to_pct r   Ir   Nr
   r   FTr	   JPz-Az-Tr   )r   r)   mbti_resultsuffixr   r'   r   convert_to_mbti   s   r4   c                    s   d  fdd}|| d }|| d }|| d }|| d }|| d }t |d	t d
| d	dt d
| d	t |d	dt d
| d	t |d	dt |d	t d
| d	ddS )um   
    Big Five 원점수를 MBTI 축 퍼센트로 변환.
    각 축의 합이 100%가 되도록 계산.
    r   c                    r   r   r!   r$   r'   r   r   r)   =   r*   z&convert_to_mbti_scores.<locals>.to_pctr   r   r	   r
   r   r   r    )r   r,   )r
   r-   )r/   r.   )r0   r1   )EISNTFJP)round)r   r)   e_pcta_pctc_pcts_pcto_pctr   r'   r   convert_to_mbti_scores6   s   r?   N)	typingr   r   r   intdictr   r4   r?   r   r   r   r   <module>   s   *