
    Vi                        d dl mZ d dlmZ d dlmZ d dlZd dlmZm	Z	 d dl
mZ d dlmZ d dlmZmZ d d	lmZ  ed
dg          Ze                    d          defd            Ze                    d          defd            Ze                    d          defd            Ze                    d          defd            ZdS )    )	APIRouter)JSONResponse)classify_and_saveN)mbti_questionsmbti_scoring)get_mbti_description)get_mbti_tips)MbtiLogRequestMbtiCalcRequest)mbti_module MBTI)prefixtagsz/logreqc                     	 t          j        | j        | j        | j                   ddiS # t
          $ r=}t          d|            t          ddt          |          d          cY d }~S d }~ww xY w)Nstatussuccessz[MBTI Log Error]   errorr   messagestatus_codecontent)	r   insert_chat_log
session_idsenderr   	Exceptionprintr   str)r   es     /app/app/routers/mbti_router.pylog_mbti_chatr$      s    ]#CNCJLLL)$$ ] ] ]%!%%&&&TWXYTZTZ5[5[\\\\\\\\\]s   (+ 
A22A-'A2-A2z
/calculatec                 F  K   	 t          j                    }t          j        | j        |          }t          j        |          }t          |          }t          |          }d}t          j        |          }t          j
        |          }t          j        | j        ||||           d| d| }	t          | j        dd|	           d {V  d|||||dS # t          $ r=}
t!          d	|
            t#          d
dt%          |
          d          cY d }
~
S d }
~
ww xY w)Nz[SYSTEM] Diagnosis Completed.MBTI TYPE:  - IAr   r   parttextr   )r   	mbti_typembti_description	mbti_tipsmbti_scoresscoresz[MBTI Calc Error] r   r   r   r   )r   get_questionsr   calculate_scoresanswersconvert_to_mbtir   r	   convert_to_mbti_scoresjsondumpsr   save_mbti_result_transactionr   r   r   r    r   r!   )r   	questionsr1   r-   r.   r/   
system_msgr0   scores_jsonresult_textr"   s              r#   calculate_mbtir>       s     +]"022	.s{IFF 088	 0	::!),,	 5
"9&AAj-- 	0N	
 	
 	
 EIDD2BDD	
 
 
 	
 	
 	
 	
 	
 	
 	
  " 0"&
 
 	
  ] ] ]&1&&'''TWXYTZTZ5[5[\\\\\\\\\]s   CC 
D #2DD D z/directc                   K   	 |                      d          }|                      dd                                                                          }|r|st          dddd          S d	d
l}|                    d          }|                    |          st          dddd          S t          |          }t          |          }d}|	                    d          d	         }|d	         dk    rdddnddd|d         dk    rdddnddd|d         dk    rdddnddd|d         dk    rdddndddd}	t          j        |	          }
t          j        ||||
|           d| d| }t          |dd|            d
{V  d!||||	d"S # t          $ r+}t          d#dt!          |          d          cY d
}~S d
}~ww xY w)$uD   
    사용자가 직접 MBTI 타입을 입력한 경우 처리
    r   direct_mbti_typer   i  r   z,session_id and direct_mbti_type are requiredr   r   r   Nz^[EI][NS][FT][JP]-[AT]$z;Invalid MBTI type format. Expected format: XXXX-A or XXXX-Tz [SYSTEM] Direct MBTI Type Input.-r(   g        g      Y@)Er(      S)rD   N   T)rG   F   J)rJ   P)EISNTFJPr&   r'   r)   r*   r   )r   r-   r.   r/   r0   r   )getupperstripr   recompilematchr   r	   splitr7   r8   r   r9   r   r   r!   )r   r   r-   rS   mbti_patternr.   r/   r;   	core_typedirect_scoresr<   r=   r"   s                r#   set_direct_mbtirZ   P   s     
6]WW\**
GG.3399;;AACC	 	I 	ICG  YG  :H  :H  I  I  I  I 				zz"<==!!),, 	XCG  YV  :W  :W  X  X  X  X 0	::!),,	 8
OOC((+	,5aLC,?,?%(((5WZE[E[,5aLC,?,?C(((3UZE[E[,5aLC,?,?C(((3UZE[E[,5aLC,?,?C(((3UZE[E[	
 
 j//0	
 	
 	
 EIDD2BDD#	
 
 
 	
 	
 	
 	
 	
 	
 	
  " 0"(
 
 	
  ] ] ]TWXYTZTZ5[5[\\\\\\\\\]s,   A&F +AF -C&F 
G	 G>G	G	z/result/{session_id}r   c                 N  K   t          j        |           }|st          dddd          S |                    dd          }|                    dd          }|                    d	d
          }ddl}	  |j        |          }n	#  i }Y nxY wt          |          }d||||ddS )u   기존 MBTI 결과를 리턴i  r   zResult not foundr   r   resultr   descriptionr1   z{}r   Nr   )r-   r.   r/   r0   )r   r\   )r   
get_outputr   rP   r7   loadsr	   )r   outputr-   r.   r<   r7   r0   r/   s           r#   get_mbti_resultra      s       #J//F iTf5g5ghhhh

8R((Izz-44**Xt,,KKKK dj--i((I " 0"&	
 
  s   4B B)fastapir   fastapi.responsesr   !app.services.goalskill_classifierr   r7   app.servicesr   r   app.services.mbti_descriptionsr   app.services.mbti_tipsr	   app.schemas.mbtir
   r   
app.modelsr   routerpostr$   r>   dictrZ   rP   r!   ra        r#   <module>ro      s         * * * * * * ? ? ? ? ? ?  6 5 5 5 5 5 5 5 ? ? ? ? ? ? 0 0 0 0 0 0 < < < < < < < < " " " " " "	

 
 
 V]~ ] ] ] ] \,]o ,] ,] ,] ,]^ Y:]t :] :] :] :]z "##c    $#  rn   