
    iO                         d dl Zd dlZd dlZd dlmZmZmZ d dlmZm	Z	 d dl
mZ dZd Zd Zded	ed
efdZded
edz  fdZdefdZdedefdZdedededefdZdS )    N)datetimetimezone	timedelta)get_db_configB_DB_CONFIG)loggerGoalskill_loginc                  V    t          t                    } t          j        j        di | S N )r   LOGIN_DBmysql	connectorconnect)configs    '/app/app/models/supervisor_db_module.py_get_login_dbr   
   s(    8$$F?",,V,,,    c                  8    t          j        j        di t          S r   )r   r   r   r   r   r   r   _get_daily_dbr      s    ?"11[111r   supervisor_idpasswordreturnc                    t                      }|                    d          }	 |                    d| f           |                                }|s.dddd|                                 |                                 S t          j        |                    d          |d	                             d                    s.ddd
d|                                 |                                 S dt          j	                    j
        dd          t          t          j                                                               }|                    d||d         f           |                                 t!          j        d|             d|dd|                                 |                                 S # t$          $ rO}t!          j        d|            ddddcY d}~|                                 |                                 S d}~ww xY w# |                                 |                                 w xY w)u,   관리자 로그인 인증 및 토큰 발급T
dictionaryzVSELECT id, supervisor_id, password_hash FROM supervisor_users WHERE supervisor_id = %sFNu   存在しないIDです。)success
session_idmessagezutf-8password_hashu'   パスワードが一致しません。sup_   z9UPDATE supervisor_users SET session_id = %s WHERE id = %sidz[Supervisor Auth] Logged in: u   ログイン成功！z[Supervisor Auth] Error: u   アカウントなし)r   cursorexecutefetchoneclosebcryptcheckpwencodeuuiduuid4hexintr   now	timestampcommitr   info	Exceptionerror)r   r   connr$   userr   es          r   authenticate_supervisorr8      s>   ??D[[D[))For  rB  	C  	C  	C   	c$DEabb$ 	

# ~hoog66_8M8T8TU\8]8]^^ 	p$DEnoo 	

 UDJLL,SbS1T3x|~~7O7O7Q7Q3R3RTT
RU_aefjakTlmmmCMCCDDDzF]^^ 	

  Z Z Z444555 AXYYYYYYY

Z 	

s=   2F< AF< 0B#F< <
HH"H#H HH *Ir   c                    t                      }|                    d          }	 |                    d| f           |                                |                                 |                                 S # t
          $ rJ}t          j        d|            Y d }~|                                 |                                 d S d }~ww xY w# |                                 |                                 w xY w)NTr   zDSELECT id, supervisor_id FROM supervisor_users WHERE session_id = %sz#[Supervisor] session lookup error: )r   r$   r%   r&   r'   r3   r   r4   )r   r5   r$   r7   s       r   get_supervisor_by_sessionr:   /   s    ??D[[D[))F]`j_lmmm  
 	

    >1>>???ttt

 	

s)   *A9 9
CCC CC *C:c                    t                      }|                    d          }	 |                    d| f           |                                }nX# t          $ rK}t          j        d|            g cY d}~|                                 |                                 S d}~ww xY w	 |                                 |                                 n-# |                                 |                                 w xY w|sg S t                      }|                    d          }	 g }|D ]}|d         }	|                    d|	f           |	                                d         }
|                    d	|	f           |	                                }|
                    |	|d
         p|	|
|r|d         ndd           ||                                 |                                 S # t          $ rK}t          j        d|            g cY d}~|                                 |                                 S d}~ww xY w# |                                 |                                 w xY w)uL   자신에게 매핑된 학습자 세션 목록과 최신 진도 가져오기Tr   a  
            SELECT m.learner_session_id, l.user_id as learner_name
            FROM supervisor_learner_mapping m
            LEFT JOIN login l ON m.learner_session_id COLLATE utf8mb4_unicode_ci = l.session_id COLLATE utf8mb4_unicode_ci
            WHERE m.supervisor_id = %s
        z([Supervisor DB] Error fetching mapping: Nlearner_session_idzvSELECT COUNT(*) as pending_count FROM daily_note WHERE session_id = %s AND (boss_comment IS NULL OR boss_comment = '')pending_countzUSELECT date FROM daily_note WHERE session_id = %s ORDER BY date DESC, id DESC LIMIT 1learner_namedatez	No Record)r<   r>   r=   last_active_datez1[Supervisor DB] Error fetching daily_note stats: )r   r$   r%   fetchallr3   r   r4   r'   r   r&   append)r   r5   r$   learnersr7   
daily_conndaily_cursorresultslr   r=   last_records               r   get_mapped_learnersrI   <   s   ??D[[D[))F 
 	 	 	 ??$$   CCCDDD					

 	
 	

 	

 	 J$$$55L 	 	A/0J     "Z  ]g  \i  j  j  j(1133ODM   !x  |F  {H  I  I  I&//11KNN&0 !. 1 ?Z!.;F$WK$7$7K	      
 	    LLLMMM					 	sf   +A C 
B'B"4B'5C "B''C *C>*BG+ +
I 5H;I I ;I  I *I-r<   c                    t                      }|                    d          }	 |                    d| |f           |                                s+	 |                                 |                                 dS 	 |                                 |                                 n-# |                                 |                                 w xY wt                      }|                    d          }	 d}|                    ||f           |                                |                                 |                                 S # |                                 |                                 w xY w)u<   매핑이 올바른지 확인 후 학습자의 일지 반환Tr   ^SELECT id FROM supervisor_learner_mapping WHERE supervisor_id = %s AND learner_session_id = %sNzSELECT id, session_id, date, learning, today_mindset, ai_comment, boss_comment FROM daily_note WHERE session_id = %s ORDER BY date DESC, id DESC)r   r$   r%   r&   r'   r   rA   )r   r<   r5   r$   rD   rE   sqls          r   get_learner_daily_notesrM   q   sy    ??D[[D[))Fw  {H  J\  z]  	^  	^  	^   	

		 	

 	

 J$$$55L aS#5"7888$$&& 	s   ,B' '*C9,E *E8r?   commentc                    t                      }|                    d          }	 |                    d| |f           |                                s-ddd|                                 |                                 S 	 |                                 |                                 n-# |                                 |                                 w xY wt                      }|                                }	 d}|                    ||||f           |                                 d|j        d|                                 |                                 S # t          $ rD}	dt          |	          dcY d }	~	|                                 |                                 S d }	~	ww xY w# |                                 |                                 w xY w)	NTr   rK   Fu'   担当していない学習者です。)r   r   zKUPDATE daily_note SET boss_comment = %s WHERE session_id = %s AND date = %s)r   affected)
r   r$   r%   r&   r'   r   r1   rowcountr3   str)
r   r<   r?   rN   r5   r$   rD   rE   rL   r7   s
             r   update_boss_comment_for_learnerrS      s   ??D[[D[))Fw  {H  J\  z]  	^  	^  	^   	\$1Z[[

		\ 	

 	

J$$&&L	[S7,>"EFFF\-BCC 		  5 5 5 SVV4444444	5 	s;   0B) )*C98E 
F($F#5F(6F+ #F((F+ +*G)mysql.connectorr   r(   r+   r   r   r   app.core.configr   r   app.corer   r   r   r   rR   dictr8   r:   rI   rM   rS   r   r   r   <module>rX      sW         2 2 2 2 2 2 2 2 2 2 6 6 6 6 6 6 6 6      - - -2 2 23 # $    <# $+    3s 3 3 3 3j3 C    03 C WZ eh      r   