o
    ]ij                     @   s   d dl Zd dlmZmZ d dlmZmZmZ de	de
de	defdd	Zde	d
e
de	fddZde	de
fddZde	dee fddZde	fddZde	de	fddZdS )    N)A_DB_CONFIGlogger)ListDictOptional
session_idquestion_idselected_answer
is_correctc              
   C   s   d}zDz-t jjdi t}| }d}||| |||f |  |jW W |r0|  |  S S  t	yF } z
t
d|  |d}~ww |rR|  |  w w )u   
    IT 테스트 답변 저장 (it_log 테이블)
    
    Args:
        session_id: 세션 ID
        question_id: 문제 ID
        selected_answer: 선택한 답변
        is_correct: 정답 여부
    Nz
            INSERT INTO it_log 
            (session_id, question_id, selected_answer, is_correct)
            VALUES (%s, %s, %s, %s)
        zIT Answer Save Error:  )mysql	connectorconnectr   cursorexecutecommit	lastrowidclose	Exceptionr   error)r   r   r	   r
   connr   sqler   r   6/home/air/goalskill_sales/back/app/models/it_module.pysave_answer   s*   


r   total_scorelevelc              
   C   s   d}zQz+t jjdi t}| }d}||| ||f |  td|   t	| | W n t
yD } z
td|  |d}~ww W |rR|  |  dS dS |r_|  |  w w )u   
    IT 테스트 최종 결과 저장 (it_Output 테이블)
    
    Args:
        session_id: 세션 ID
        total_score: 맞힌 문제 수 (0~20)
        level: 레벨 (上級/中級/初級/入門)
    Nz
            INSERT INTO it_Output 
            (session_id, total_score, level)
            VALUES (%s, %s, %s)
            ON DUPLICATE KEY UPDATE
                total_score = VALUES(total_score),
                level = VALUES(level)
        zIT Output saved for session: zIT Output Save Error: r   )r   r   r   r   r   r   r   r   infosync_to_user_profile_summaryr   r   r   )r   r   r   r   r   r   r   r   r   r   save_or_update_output1   s,   		
r   returnc              
   C   s   d}zTz+t jjdi t}| }d}||| f | d }|W W |r.|  |  S S  tyV } zt	
d|  W Y d}~W |rP|  |  dS dS d}~ww |rb|  |  w w )u   답변한 문제 수 조회Nz1SELECT COUNT(*) FROM it_log WHERE session_id = %sr   zIT Answer Count Error: r   )r   r   r   r   r   r   fetchoner   r   r   r   )r   r   r   r   countr   r   r   r   get_answer_count\   s2   

r#   c              
   C   s   d}zTz+t jjdi t}|jdd}d}||| f | }|W W |r.|  |  S S  tyV } zt	
d|  g W  Y d}~W |rQ|  |  S S d}~ww |rb|  |  w w )u   모든 답변 조회NT)
dictionaryz
            SELECT question_id, selected_answer, is_correct
            FROM it_log
            WHERE session_id = %s
            ORDER BY question_id
        zIT Get Answers Error: r   )r   r   r   r   r   r   fetchallr   r   r   r   )r   r   r   r   resultsr   r   r   r   get_all_answersr   s2   


r'   c              
   C   s   d}zNz$t jjdi t}| }d}||| f |  td|   W n t	yA } zt
d|  W Y d}~nd}~ww W |rO|  |  dS dS |r\|  |  w w )um   
    IT 테스트 재시작 시 이전 답변 기록 삭제
    
    Args:
        session_id: 세션 ID
    Nz(DELETE FROM it_log WHERE session_id = %szIT logs cleared for session: zIT Clear Logs Error: r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   clear_session_logs   s(   
r)   c              
   C   s   d}zRz(t jjdi t}| }d}||| |f |  td|  d|  W n t	yE } zt
d|  W Y d}~nd}~ww W |rS|  |  dS dS |r`|  |  w w )u   
    it_Output의 level을 user_profile_summary.it_level에 저장
    
    Args:
        session_id: 세션 ID
        level: 레벨 (上級/中級/初級/入門)
    Nz
            INSERT INTO user_profile_summary (session_id, it_level)
            VALUES (%s, %s)
            ON DUPLICATE KEY UPDATE
                it_level = VALUES(it_level)
        z)IT level synced to user_profile_summary: z -> zIT Sync to Summary Error: r   r(   )r   r   r   r   r   r   r   r   r   r      s(   
r   )mysql.connectorr   app.core.configr   r   typingr   r   r   strintboolr   r   r#   r'   r)   r   r   r   r   r   <module>   s   &+