o
    d
iW+                     @   s  d dl mZmZ d dlmZ d dlmZmZmZm	Z	m
Z
mZmZ d dlmZmZmZ d dlmZ d dlZG dd deZed	d
gdZeddefddZeddefddZeddefddZeddefddZeddefddZeddefddZdS )     )	APIRouterHTTPException)get_gemini_model)save_daily_logsave_structured_diaryget_yesterday_dataupdate_yesterday_ai_feedbackget_all_daily_notesupdate_boss_commentget_today_data)ReportAnalyzeRequestSystemMessageRequestYesterdayRequest)	BaseModelNc                   @   s&   e Zd ZU eed< eed< eed< dS )BossCommentRequest
session_iddateboss_commentN)__name__
__module____qualname__str__annotations__ r   r   ;/home/air/goalskill_sales/back/app/routers/report_router.pyr      s   
 r   z/goalskill-sales/apiReport)prefixtagsz/Report/boss-commentrequestc              
      sf   zt | j| j| jd}|rdddW S dddW S  ty2 } ztd|  tdd	d
d }~ww )N)r   r   r   successu-   フィードバックを保存しました。)statusmessageerroru?   該当する日付の記録が見つかりませんでした。zSave Boss Comment Error: i  u-   サーバーエラーが発生しました。)status_codedetail)r
   r   r   r   	Exceptionprintr   )r   r   er   r   r   save_boss_comment   s   r(   z/Report/all/{session_id}r   c                    s   z9t | }|sg ddW S g }|D ]#}|t|dd|dd|dd|dd|ddd	 qd
|iW S  tyX } ztd|  g ddW  Y d }~S d }~ww )Nu   記録はありません。datar!   r    learningtoday_mindsetadvicer   )r   r,   mindsetr.   r   r*   zFetch All Notes API Error: u0   データの読み取りに失敗しました。)r	   appendr   getr%   r&   )r   rowsresponse_datarowr'   r   r   r   fetch_all_logs"   s(   





r5   z/Report/system-messagec              
      s   z*t  }ddddd}|| jd}d| d}|jjd	|d
did}d|j iW S  tyT } ztd|  ddddd}d|| jdiW  Y d }~S d }~ww )Nu   カリキュラムを作成する前に、現在のコンディション（日記）を入力するよう優しく促すメッセージ（日本語、1文、親しみやすい敬語）u   生成されたパーソナライズカリキュラムを提示し、確認してみるよう勧めるメッセージ（日本語、1文、自信のある口調）um   提示したカリキュラムが気に入ったか、感想を尋ねるメッセージ（日本語、1文）u   ユーザーがカリキュラムを承諾した際、力強く学習を始めようと励ますメッセージ（日本語、1文、情熱的な口調）)check_conditionshow_curriculumask_feedbackstart_learninguI   ユーザーへの自然な挨拶のメッセージ（日本語、1文）zm
        Task: Generate a natural, friendly system message in Japanese for an AI Tutor app.
        Context: zt
        Constraint: Do not repeat the same phrase. Be creative but concise. Output only the Japanese text.
        gemini-2.5-flashtemperatureg?modelcontentsconfigr!   zSystem Message Error: u]   カリキュラムを作成する前に、今日のあなたの状態を把握しますね。uc   今日のパーソナライズされたカリキュラムです。確認してみてください。u3   今回のカリキュラムはいかがですか？uN   いいですね。では、すぐにカリキュラムを始めましょう！r+   )	r   r1   message_typemodelsgenerate_contenttextstripr%   r&   )r   clientcontext_maptarget_contextpromptresponser'   fallback_mapr   r   r   get_system_message:   s:   rK   z/Report/analyzec              
      s   zBt  }| jrd }t| j| j| j| j|d ddiW S t| jd| j d| j d}|j	j
d|d}|j }t| jd	| d|iW S  ty` } ztd
|  ddiW  Y d }~S d }~ww )N)r   r   r,   r/   
ai_commentansweru   デイリーチェックを書いてくれてありがとう！さあ、『カリキュラム』ボタンを押して、実習を始めよう！userz
            User Feedback: "zT"
            Task: Reply naturally in Japanese to the user's feedback.
            r:   )r=   r>   botzReport Analyze Error: u9   サーバー通信中にエラーが発生しました。)r   is_noter   r   r   r,   r/   r   r!   rA   rB   rC   rD   r%   r&   )r   rE   ai_replyrH   rI   r'   r   r   r   analyze_diarye   s:   


rR   z/Report/yesterdayc              
      s  zt | j}td|  |sd ddW S |d}|d}|r$|szGt }|dd}|dd}d	| d
| d}|jjd|ddid}dd l}	|	|j	}
|
dd}|
dd}t
|d || |}|}W n ty } ztd|  d}d}W Y d }~nd }~ww t|dd|dd|dd|dd||d}d|iW S  ty } ztd|  d ddW  Y d }~S d }~ww )NzDEBUG ROW DATA: u$   昨日の記録はありません。r)   rL   r.   r,   u   なしr-   z
                Task: Analyze the user's daily study log and provide feedback in JSON format.
                
                [User Log]
                Learning: z
                Mindset: a  
                
                [Requirements]
                1. "ai_comment": A warm, encouraging compliment about their learning or mindset (Japanese, polite tone).
                2. "advice": A brief, practical tip for better journaling or efficient studying based on the log (Japanese, polite tone).
                3. Output must be valid JSON only. No markdown formatting.
                
                Example format:
                {"ai_comment": "...", "advice": "..."}
                r:   response_mime_typezapplication/jsonr<   r   u'   素晴らしい取り組みですね！u   継続は力なりです。idzAI Feedback Generation Error: u!   素晴らしい進捗ですね！u0   今日もこの調子で頑張りましょう。r   r+   r   )r   r,   r/   r   rL   r.   r*   zYesterday API Error: u0   データの読み込みに失敗しました。)r   r   r&   r1   r   rA   rB   jsonloadsrC   r   r%   r   )r   r4   rL   r.   rE   user_learninguser_mindsetrH   rI   rU   generated_datanew_ai_comment
new_advicer'   r3   r   r   r   fetch_yesterday_log   sb   


	



	r\   z!/Report/today-status/{session_id}c              
      sx   zt | }|r|drd|dddW S dd ddW S  ty; } ztd|  dd dW  Y d }~S d }~ww )	Nr   Tu'   今日のコメントがあります。)has_commentr   r!   Fu0   今日のコメントはまだありません。zToday Status API Error: )r]   r   )r   r1   r%   r&   )r   r4   r'   r   r   r   fetch_today_status   s"   r^   )fastapir   r   app.core.configr   app.models.report_db_moduler   r   r   r   r	   r
   r   app.schemas.report_schemasr   r   r   pydanticr   rU   r   routerpostr(   r1   r   r5   rK   rR   r\   r^   r   r   r   r   <module>   s.    $*1T