o
    [h-                     @   sZ   d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ G dd	 d	ZdS )
u   データ同期サービス    N)Optional)	MCPClient)AIAgent)CandidateDates)PigeonCloudServicec                   @   sX   e Zd ZdZddee ddfddZddefddZd	efd
dZ	dee
 fddZdS )SyncServiceuN   MCPからデータを取得してデータベースに同期するサービスNpigeon_cloud_servicereturnc                 C   s   |pt  | _d S N)r   r   )selfr    r   8/var/www/html/openai_agents/src/services/sync_service.py__init__   s   zSyncService.__init__c              	      sb   t  4 I dH }t| |d}| I dH }|W  d  I dH  S 1 I dH s*w   Y  dS )u  
        面接データを取得してデータベースに同期

        Args:
            instructions: カスタム指示書（省略時はデフォルトのINSTRUCTIONSを使用）

        Returns:
            CandidateDates: 取得した候補者データ
        N)instructions)r   r   get_mcp_serversrun)r   r   
mcp_clientagentresultr   r   r   sync_interview_data   s   
0zSyncService.sync_interview_data_datac                    s   dS )u   
        データベースに候補者データを更新

        Args:
            _data: 更新する候補者データ

        Note:
            この関数は後ほど実装予定
        Nr   )r   r   r   r   r   _update_database&   s   zSyncService._update_databasejob_idc                    s    t | jj|||I dH  dS )u%   Pigeon Cloud へ面接日程を同期N)asyncio	to_threadr   sync_interview_dates)r   r   	full_nameinterview_dayinterview_startr   r   r   update_pigeon_cloud3   s   zSyncService.update_pigeon_cloudr
   )__name__
__module____qualname____doc__r   r   r   r   r   r   strr   r   r   r   r   r      s    r   )r#   r   typingr   src.mcp.clientr   src.ai_agents.interview_agentr   src.database.modelsr   !src.services.pigeon_cloud_servicer   r   r   r   r   r   <module>   s    