
    Ui                         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Zde	d	e
d
e	de	fdZde	de
fdZde	dee         fdZde	fdZde	d
e	fdZde	fdZdS )    N)A_DB_CONFIGlogger)ListDictOptional
session_idquestion_idselected_answer
is_correctc                    d}	 t          j        j        di t          }|                                }d}|                    || |||f           |                                 |j        |r)|                                 |                                 S S # t          $ r}t          j        d|            |d}~ww xY w# |r)|                                 |                                 w w xY 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es           /app/app/models/it_module.pysave_answerr      s    D&5555 	sZozRSSS  	LLNNNJJLLLL		    1a11222  	LLNNNJJLLLL	s$   A%B 
B=B88B==C   -C-total_scoreleveldescriptionc                 *   d}	 t          j        j        di t          }|                                }d}|                    || |||f           |                                 t          j        d|             t          | |           n+# t          $ r}t          j        d|            |d}~ww xY w	 |r*|                                 |                                 dS dS # |r)|                                 |                                 w w xY w)u   
    IT 테스트 최종 결과 저장 (it_Output 테이블)
    
    Args:
        session_id: 세션 ID
        total_score: 맞힌 문제 수 (0~20)
        level: 레벨 (上級/中級/初級/入門)
    Na:  
            INSERT INTO it_Output 
            (session_id, total_score, level, description)
            VALUES (%s, %s, %s, %s)
            ON DUPLICATE KEY UPDATE
                total_score = VALUES(total_score),
                level = VALUES(level),
                description = VALUES(description)
        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   s           r   save_or_update_outputr#   1   s4    D&5555 	sZe[IJJJ@J@@AAA 	%Z7777   1a11222 	8  	LLNNNJJLLLLL	 	4 	LLNNNJJLLLL	s*   BB 
C% 
B3B..B33C% %-Dreturnc                 <   d}	 t          j        j        di t          }|                                }d}|                    || f           |                                d         }||r)|                                 |                                 S S # t          $ rN}t          j
        d|            Y d}~|r*|                                 |                                 dS dS d}~ww xY w# |r)|                                 |                                 w w xY 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   s         r   get_answer_countr)   ]   s0   D&5555AsZM***!!!$  	LLNNNJJLLLL		    2q22333qqq 	LLNNNJJLLLLL	 		  	LLNNNJJLLLL	s*   A#B 
C+C&4C. &C++C. .-Dc                 4   d}	 t          j        j        di t          }|                    d          }d}|                    || f           |                                }||r)|                                 |                                 S S # t          $ rN}t          j
        d|            g cY d}~|r)|                                 |                                 S S d}~ww xY w# |r)|                                 |                                 w w xY 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   s         r   get_all_answersr/   s   s2   D&5555-- 	sZM***//##  	LLNNNJJLLLL		    1a11222					 	LLNNNJJLLLL		  	LLNNNJJLLLL	s0   AB 
C'C"1C'2C* "C''C* *-Dc                    d}	 t          j        j        di t          }|                                }d}|                    || f           |                                 t          j        d|             n.# t          $ r!}t          j
        d|            Y d}~nd}~ww xY w|r*|                                 |                                 dS dS # |r)|                                 |                                 w w xY 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   s        r   clear_session_logsr2      s    D&55558sZM***@J@@AAAA 2 2 20Q00111111112  	LLNNNJJLLLLL	 	4 	LLNNNJJLLLL	s0   A3A8 7C 8
B#BC B##C -Dc                    d}	 t          j        j        di t          }|                                }d}|                    || |f           |                                 t          j        d|  d|            n.# t          $ r!}t          j
        d|            Y d}~nd}~ww xY w|r*|                                 |                                 dS dS # |r)|                                 |                                 w w xY 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   r1   )r   r   r   r   r   r   s         r   r"   r"      s,    D&5555 	sZ/000W
WWPUWWXXXX 7 7 75!55666666667  	LLNNNJJLLLLL	 	4 	LLNNNJJLLLL	s0   A7A< ;C <
B'B"C "B''C -Dc                 4   d}	 t          j        j        di t          }|                    d          }d}|                    || f           |                                }||r)|                                 |                                 S S # t          $ rN}t          j
        d|            Y d}~|r*|                                 |                                 dS dS d}~ww xY w# |r)|                                 |                                 w w xY w)u   IT 최종 결과 조회NTr+   z-SELECT * FROM it_Output WHERE session_id = %szIT Output Get Error: r   r&   )r   r   r   r   resultr   s         r   
get_outputr6      s1   D&5555--=sZM***""
  	LLNNNJJLLLL		    0Q00111ttt 	LLNNNJJLLLLL	 		  	LLNNNJJLLLL	s*   AB 
C'C"0C* "C''C* *-D)mysql.connectorr   app.core.configr   r   typingr   r   r   strintboolr   r#   r)   r/   r2   r"   r6   r       r   <module>r>      sX       / / / / / / / / ' ' ' ' ' ' ' ' ' ' C  c  C  UY        L&c & &C &WZ & & & &X     , T
    <3    <S     B3      r=   