o
    i                     @   s`   d dl Zd dlmZ d dlmZ d dlmZmZ edZ	dd Z
defd	d
ZdefddZdS )    N)logger)get_db_config)CheckInRequestMorningAssessmentRequest
Sales_B_DBc                   C   s   t jjdi tS )N )mysql	connectorconnectB_DB_CONFIGr   r   r   >/home/air/goalskill_sales/back/app/models/today_goal_module.pyget_db_connection   s   r   checkin_datac           	   
   C   s   | j dd}zqz^|d|jf | }|std|jdk}|d|j|j||jf |d |j }|d||jf |   |rPd	}d
|j |d  d}n	d}d|j d}d|||dW W |  S  t	yw } z| 
  |d }~ww |  w )NT
dictionaryz!SELECT * FROM goals WHERE id = %su)   해당 목표를 찾을 수 없습니다.r   zsINSERT INTO check_in_logs (goal_id, increment_count, is_success, user_mood) 
               VALUES (%s, %s, %s, %s)current_countz1UPDATE goals SET current_count = %s WHERE id = %sPRAISEu$   수고하셨습니다! 30분 동안 unitu:   이나 해내셨네요. 이 기세로 계속 가볼까요?
COUNSELINGu   실적이 없으셨군요. 'u[   ' 때문이시군요. 괜찮습니다, 다음 30분은 어떻게 전략을 바꿔볼까요?success)status
is_successai_modemessage)cursorexecutegoal_idfetchone
ValueErrorincrement_count	user_moodcommitclose	Exceptionrollback)	db_connr   r   goalr   new_current_countr   r   er   r   r   process_30min_checkin   sD   



r)   request_datac              
   C   s  | j dd}zzd}|||jf | }|stdt|}tdd |D }|dkr1|| nd}tdtd	t	|d	 }d
d |D }	|d|jf | }
g }|dkrxd}dt	|d  d}d}|
D ]}|d|d |d f qhnUd}|	r|	d nd}dt	|d  d| d}d}|
D ]9}|d }|d }||kr|}n|| }|t	|d  }|d||d f ||kr|
|d |d ||d qd }|||||jf |   |||||d!W W |  S  ty } z|   |d }~ww |  w )"NTr   z
            SELECT c.is_success, c.user_mood, c.check_time 
            FROM check_in_logs c
            JOIN goals g ON c.goal_id = g.id
            WHERE g.plan_id = %s
            ORDER BY c.check_time ASC
        u2   평가할 오전 체크인 기록이 없습니다.c                 s   s    | ]	}|d  rdV  qdS )r      Nr   .0logr   r   r   	<genexpr>G   s    z.evaluate_morning_motivation.<locals>.<genexpr>r   r+   
   c                 S   s   g | ]
}|d  r|d  qS )r    r   r,   r   r   r   
<listcomp>K   s    z/evaluate_morning_motivation.<locals>.<listcomp>z&SELECT * FROM goals WHERE plan_id = %s   HIGHu   오전 달성률 d   u1   %. 좋은 페이스를 유지하고 있습니다.uP   오후にも 처음에 짠 '오늘의 목표' 대로 진행합니다. 파이팅!z9UPDATE goals SET adjusted_target_count = %s WHERE id = %soriginal_target_countidLOWu   피로 누적z%. 'u7   ' 등의 이유로 멘탈이 저하된 상태입니다.uu   모티베이션이 낮아 남은 오후 목표를 20% 하향 조정했습니다. 부담을 덜고 시작해봅시다.r   g?category)r   r9   original_targetadjusted_targetz
            UPDATE daily_plans 
            SET morning_motivation_score = %s, ai_feedback_summary = %s 
            WHERE id = %s
        )motivation_levelscore
ai_summaryafternoon_actionadjusted_goals)r   r   plan_idfetchallr   lensummaxminintappendr!   r"   r#   r$   )r%   r*   r   	log_querylogstotal_checkssuccess_checkssuccess_rater=   moodsgoalsadjusted_goals_listr<   r>   r?   r&   	last_moodoriginalcurrent
new_target	remainingupdate_queryr(   r   r   r   evaluate_morning_motivation6   s   


rW   )mysql.connectorr   app.corer   app.core.configr   app.schemas.today_goal_schemar   r   r   r   r)   rW   r   r   r   r   <module>   s    +