o
    vi                     @   s   d dl Zd dlmZmZ d dlZd dlmZmZm	Z	 edZ
dededefdd	Zded
edefddZdefddZdedefddZ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fddZdedefddZdS )    N)get_db_configlogger)ListDictOptional
Sales_A_DB
session_id
step_orderquestion_textc              
   C      d}zCz,t jjdi t}| }d}||| ||f |  |jW W |r/|  |  S S  t	yE } z
t
d|  |d}~ww |rQ|  |  w 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connectA_DB_CONFIGcursorexecutecommit	lastrowidclose	Exceptionr   error)r   r	   r
   connr   sqler   r   </home/air/goalskill_sales/back/app/models/findgoal_module.pysave_question   s*   

r   question_idanswer_textc              
   C   r   )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   r   r   r   save_answer,   s*   

r    c              
   C   s   d}zMz(t jjdi t}| }dD ]\}}|d| d| d| f q|  W n ty@ } z	t	d|   d}~ww W |rN|
  |
  dS dS |r[|
  |
  w w )u@   해당 세션의 FindGoal 대화/결과 초기화 (재시작용)N))
findgoal_Ar   )
findgoal_Pr   )findgoal_Outputr   )
findgoal_Qr   zDELETE FROM z WHERE z = %szFindGoal clear_history Error: r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   tablecolr   r   r   r   clear_historyD   s(   
r(   c              
   C   s   d}zQz(t jjdi t}|jdd}|d| |f | W W |r+|  |  S S  tyS } zt	
d|  W Y d}~W |rM|  |  dS dS d}~ww |r_|  |  w w )uQ   해당 step_order의 질문 1건 조회 (답변 저장 시 question_id 확보용)NT
dictionaryzwSELECT id, step_order, question_text FROM findgoal_Q WHERE session_id = %s AND step_order = %s ORDER BY id DESC LIMIT 1z%FindGoal get_question_by_step Error: r   r   r   r   r   r   r   fetchoner   r   r   r   )r   r	   r   r   r   r   r   r   get_question_by_stepV   s4   


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|  W Y d}~W |rP|  |  dS dS d}~ww |rb|  |  w w )zGet the last questionNTr)   z
            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   resultr   r   r   r   get_last_questionj   s2   

r/   confidence_score	reasoningc              
   C   r   )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   r0   r1   r   r   r   r   r   r   r   save_processing   s0   

r2   
final_goalc              
   C   s   d}zCzt jjdi t}| }d}||| |f |  W n ty6 } z
t	d|  |d}~ww W |rD|
  |
  dS dS |rQ|
  |
  w 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   r3   r   r   r   r   r   r   r   save_or_update_output   s(   
r5   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 )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   r   r   r   get_conversation_history   s2   


r8   c              
   C   s   d}zKz%t jjdi t}| }d}||| |f |  td|   W n t	y> } z
t
d|  |d}~ww W |rL|  |  dS dS |rY|  |  w 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   r4   r   r   r   sync_to_user_profile_summary   s*   
r:   )mysql.connectorr   app.core.configr   r   jsontypingr   r   r   r   strintr   r    r(   r-   r/   floatr2   r5   r8   r:   r   r   r   r   <module>   s    