
    Ui%              
           d dl Zd dlmZmZ d dl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
def
dZde
dee         fdZde
de
dede
def
dZde
defdZdS )    N)A_DB_CONFIGlogger)ListDictOptional
session_idquestion_numberquestion_textanswer_textc                    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)Nz
            INSERT INTO studyplan_log
            (session_id, question_number, question_text, answer_text)
            VALUES (%s, %s, %s, %s)
        zStudyPlan Question Save Error:  mysql	connectorconnectr   cursorexecutecommit	lastrowidclose	Exceptionr   error)r   r	   r
   r   connr   sqles           #/app/app/models/studyplan_module.pysave_studyplan_questionr      s   D&5555 	sZ-UVVV
  	LLNNNJJLLLL		    :q::;;;  	LLNNNJJLLLL	s$   A%B 
B=B88B==C   -C-total_duration
study_dayspreferred_time_slotweekday_hoursc                    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)Na  
            INSERT INTO studyplan_Output
            (session_id, total_duration, study_days, preferred_time_slot, weekday_hours)
            VALUES (%s, %s, %s, %s, %s)
            ON DUPLICATE KEY UPDATE
                total_duration = VALUES(total_duration),
                study_days = VALUES(study_days),
                preferred_time_slot = VALUES(preferred_time_slot),
                weekday_hours = VALUES(weekday_hours),
                updated_at = NOW()
        zStudyPlan Output Save Error: r   r   )	r   r   r   r    r!   r   r   r   r   s	            r   save_studyplan_outputr#       s   D&5555
 	sZEXZghiii  	LLNNNJJLLLL		    8Q88999  	LLNNNJJLLLL	s$   A&B 
B> B99B>>C -C.returnc                   	 d}	 t          j        j        di t          }|                    d          }d}|                    || f           |                                }i 	|D ])}|d         }|	vr|d         |d         |d         d	|<   *	fd	t          	                                          D             }||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   
    세션의 모든 답변 조회
    
    Returns:
        답변 리스트 (question_number, question_text, answer_text 포함)
    NT
dictionaryz
            SELECT question_number, question_text, answer_text, id
            FROM studyplan_log
            WHERE session_id = %s
            ORDER BY question_number ASC, id DESC
        r	   r
   r   )r	   r
   r   c                      g | ]
}|         S r   r   ).0q_numunique_answerss     r   
<listcomp>z*get_answers_by_session.<locals>.<listcomp>c   s    TTTU>%(TTT    zStudyPlan Get Answers Error: r   )r   r   r   r   r   r   fetchallsortedkeysr   r   r   r   )
r   r   r   r   all_resultsrowr*   resultsr   r+   s
            @r   get_answers_by_sessionr4   @   s    D%&5555-- 	sZM***oo''  	 	C)*EN**'*+<'=%(%9#&}#5) )u% UTTTf^=P=P=R=R6S6STTT  	LLNNNJJLLLL		    8Q88999					 	LLNNNJJLLLL		  	LLNNNJJLLLL	s0   B:C+ +
E5D>EE >EE -E3studyplan_durationstudyplan_study_daysstudyplan_time_slotstudyplan_weekday_hoursc                    d}	 t          j        j        di t          }|                                }d}|                    || ||||f           |                                 t          j        d|             n+# t          $ r}t          j
        d|            |d}~ww xY w	 |r*|                                 |                                 dS dS # |r)|                                 |                                 w w xY w)uC   StudyPlan 완료 시 user_profile_summary 테이블에도 동기화Na*  
            INSERT INTO user_profile_summary
            (session_id, studyplan_duration, studyplan_study_days, studyplan_time_slot, studyplan_weekday_hours)
            VALUES (%s, %s, %s, %s, %s)
            ON DUPLICATE KEY UPDATE
                studyplan_duration = VALUES(studyplan_duration),
                studyplan_study_days = VALUES(studyplan_study_days),
                studyplan_time_slot = VALUES(studyplan_time_slot),
                studyplan_weekday_hours = VALUES(studyplan_weekday_hours),
                updated_at = NOW()
        z6StudyPlan synced to user_profile_summary for session: zStudyPlan Summary Sync Error: r   )r   r   r   r   r   r   r   r   infor   r   r   )	r   r5   r6   r7   r8   r   r   r   r   s	            r   sync_to_user_profile_summaryr;   p   s3   D&5555
 	sZ);=QSfh  A  	B  	B  	BYZYYZZZZ   9a99::: 	[  	LLNNNJJLLLLL	 	4 	LLNNNJJLLLL	s*   A7A< ;C <
B$B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$  
    user_profile_summary 테이블에서 StudyPlan 데이터 가져오기
    
    Returns:
        {
            'studyplan_duration': str,
            'studyplan_study_days': int,
            'studyplan_time_slot': str,
            'studyplan_weekday_hours': int
        } 또는 None
    NTr&   z
            SELECT 
                studyplan_duration,
                studyplan_study_days,
                studyplan_time_slot,
                studyplan_weekday_hours
            FROM user_profile_summary
            WHERE session_id = %s
        z"StudyPlan Get From Summary Error: r   )r   r   r   r   r   r   fetchoner   r   r   r   )r   r   r   r   resultr   s         r   get_studyplan_from_summaryr?      s7    D&5555-- 	sZM***""  	LLNNNJJLLLL		    =!==>>>ttt 	LLNNNJJLLLLL	 		  	LLNNNJJLLLL	s*   AB 
C'C"0C* "C''C* *-D)mysql.connectorr   app.core.configr   r   jsontypingr   r   r   strintr   r#   r4   r;   dictr?   r   r-   r   <module>rG      sN       / / / / / / / /  ' ' ' ' ' ' ' ' ' ' c RU dg    2S   be ux    @-s -tDz - - - -`S c ad {~   Z]    B&3 &4 & & & & & &r-   