
    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
fdZde
ded	e
fd
Zde
fdZde
dede
fdZde
de
fdZde
fdZde
de
fdZde
fdZde
fdZdS )    N)A_DB_CONFIGlogger)ListDictOptional
session_id
step_orderquestion_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)u!   질문 저장 (user_id 제거됨)Nz
            INSERT INTO findgoal_Q 
            (session_id, step_order, question_text)
            VALUES (%s, %s, %s)
        zFindGoal Q Save Error:  mysql	connectorconnectr   cursorexecutecommit	lastrowidclose	Exceptionr   error)r   r	   r
   connr   sqles          "/app/app/models/findgoal_module.pysave_questionr   
   s   D&5555 	sZ]CDDD   	LLNNNJJLLLL	    2q22333
  	LLNNNJJLLLL	$   A$B 
B<B77B<<B? ?-C,question_id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)u+   Answer Save (user_id, step_order 제거됨)Nz
            INSERT INTO findgoal_A 
            (session_id, question_id, answer_text)
            VALUES (%s, %s, %s)
        zFindGoal A Save Error: r   r   )r   r   r   r   r   r   r   s          r   save_answerr!   )   s   D&5555
 	sZkBCCC
  	LLNNNJJLLLL		    2q22333  	LLNNNJJLLLL	r   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)zGet the last questionNT
dictionaryz
            SELECT id, step_order, question_text
            FROM findgoal_Q
            WHERE session_id = %s
            ORDER BY step_order DESC
            LIMIT 1
        zFindGoal Q Load Error: r   r   r   r   r   r   r   fetchoner   r   r   r   r   r   r   r   resultr   s         r   get_last_questionr)   A   s5   D&5555-- 	sZM***""  	LLNNNJJLLLL		    2q22333ttt 	LLNNNJJLLLLL	 		  	LLNNNJJLLLL	s*   AB 
C'C"0C* "C''C* *-Dconfidence_score	reasoningc                    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)uS   Save the AI processing result (P) - user_id, step_order, answer_id 모두 제거됨Nz
            INSERT INTO findgoal_P
            (session_id, confidence_score, reasoning)
            VALUES (%s, %s, %s)
        zFindGoal P Save Error: r   r   )r   r*   r+   r   r   r   r   s          r   save_processingr-   ^   s   D&5555 	si
 	 	 	 	  	LLNNNJJLLLL		    2q22333  	LLNNNJJLLLL	r   
final_goalc                    d}	 t          j        j        di t          }|                                }d}|                    || |f           |                                 n+# t          $ r}t          j	        d|            |d}~ww xY w	 |r*|
                                 |
                                 dS dS # |r)|
                                 |
                                 w w xY w)uH   Save or update the final result (Output) - user_id, updated_at 제거됨Nz
            INSERT INTO findgoal_Output
            (session_id, final_goal)
            VALUES (%s, %s)
            ON DUPLICATE KEY UPDATE
                final_goal = VALUES(final_goal)
        zFindGoal Output Save Error: r   r   r   r   r   r   r   r   r   r   r   r   r   r.   r   r   r   r   s         r   save_or_update_outputr2   {   s   D&5555 	sZ4555   7A77888 	  	LLNNNJJLLLLL	 	4 	LLNNNJJLLLL	s*   AA" !B< "
B
,BB

B< <-C)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)z2Get the entire conversation history of the sessionNTr#   a.  
            SELECT 
                Q.step_order,
                Q.question_text,
                A.answer_text
            FROM findgoal_Q Q
            LEFT JOIN findgoal_A A 
                ON Q.id = A.question_id
            WHERE Q.session_id = %s
            ORDER BY Q.step_order ASC
        zFindGoal History Load Error: r   )r   r   r   r   r   r   fetchallr   r   r   r   )r   r   r   r   resultsr   s         r   get_conversation_historyr6      s2   D&5555--
 	sZM***//##  	LLNNNJJLLLL		    8Q88999					 	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|            |d}~ww xY w	 |r*|                                 |                                 dS dS # |r)|                                 |                                 w w xY w)uB   FindGoal 완료 시 user_profile_summary 테이블에도 동기화Nz
            INSERT INTO user_profile_summary
            (session_id, final_goal)
            VALUES (%s, %s)
            ON DUPLICATE KEY UPDATE
                final_goal = VALUES(final_goal),
                updated_at = NOW()
        z5FindGoal synced to user_profile_summary for session: zFindGoal Summary Sync Error: r   )r   r   r   r   r   r   r   r   infor   r   r   r1   s         r   sync_to_user_profile_summaryr9      s   D&5555 	sZ4555XJXXYYYY   8Q88999 	Z  	LLNNNJJLLLLL	 	4 	LLNNNJJLLLL	s*   A4A9 8C 9
B!BB!!C -D c                 J   d}	 t          j        j        di t          }|                    d          }d}|                    || f           |                                }|r|d         n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)u0   findgoal_Output에서 최종 목표를 가져옴NTr#   z<SELECT final_goal FROM findgoal_Output WHERE session_id = %sr.   zFindGoal Output Load Error: r   r%   r'   s         r   
get_outputr;      sC   D&5555--LsZM***""'-7vl##47
  	LLNNNJJLLLL		    7A77888ttt 	LLNNNJJLLLLL	 		  	LLNNNJJLLLL	s*   A)B 
C2$C-;C5 -C22C5 5-D"c                 \   d}	 t          j        j        di t          }|                                }|                    d| f           |                    d| f           |                    d| f           |                    d| f           |                                 n+# t          $ r}t          j	        d|            |d}~ww xY w	 |r*|
                                 |
                                 dS dS # |r)|
                                 |
                                 w w xY w)u9   세션의 findgoal 데이터 전부 삭제 (재시작용)Nz,DELETE FROM findgoal_A WHERE session_id = %sz,DELETE FROM findgoal_P WHERE session_id = %sz1DELETE FROM findgoal_Output WHERE session_id = %sz,DELETE FROM findgoal_Q WHERE session_id = %szFindGoal Reset Error: r   r0   )r   r   r   r   s       r   reset_sessionr=      s<   D&5555E
}UUUE
}UUUJZMZZZE
}UUU   1a11222 	
  	LLNNNJJLLLLL	 	4 	LLNNNJJLLLL	s*   BB$ #C> $
C.CCC> >-D+)mysql.connectorr   app.core.configr   r   jsontypingr   r   r   strintr   r!   r)   floatr-   r2   r6   r9   r;   r=   r       r   <module>rF      s       / / / / / / / /  ' ' ' ' ' ' ' ' ' '
c s 3    >C c     0#    : u     :c s    4    @S c    <3    &c      rE   