"""面接日程取得エージェント"""
from agents import Agent, Runner
from src.database.models import CandidateDates


class AIAgent:

    INSTRUCTIONS = """
【指示書】
1.採用管理システムSonarにログイン
ログインURL
https://manager.snar.jp/agent.aspx
ID
info@career.cs-park.jp
パスワード
Kojikoji1007C

2.レイスグループの企業群が表示されているか確認
id="topBar"の中の企業名がレイスグループになっていることを確認

3.推薦者管理ボタンをクリック(推薦者一覧を表示)

4.推薦者を最終更新日順にソート
id="ctl00_ctl00_cph_MstBody_cph_SubBody_wuc_AgentOBSListTable_tlv_List_sort_LastUpdateDate"を2回押して、直近変更が加えられたデータを表示

5.最終更新日が本日で、ステータスが「未予約」となってるユーザーを確認

6.該当学生が何が未予約なのか(ステップ)を確認し、「99_dev」チャンネルに学生名、ステップ、未予約への具体的なアクションをSlack送付
"""

    def __init__(self, mcp_servers, instructions=None):
        """
        Args:
            mcp_servers: MCPサーバーのリスト
            instructions: カスタム指示書（省略時はデフォルトのINSTRUCTIONSを使用）
        """
        self.instructions = instructions if instructions is not None else self.INSTRUCTIONS
        self.agent = Agent(
            name="interview-schedule-agent",
            instructions="あなたは面接日程を取得するエージェントです。",
            model="gpt-5",
            mcp_servers=mcp_servers,
            output_type=CandidateDates,
        )

    async def run(self, max_turns: int = 75):
        """
        エージェントを実行して面接日程を取得

        Args:
            max_turns: 最大ターン数

        Returns:
            CandidateDates: 候補者の面接日程データ
        """
        prompt = f"""下記の採用管理システムにログインをして、面接日時が決まっているデータの面接日程を教えて下さい。

{self.instructions}"""

        run_result = await Runner.run(
            self.agent,
            prompt,
            max_turns=max_turns
        )

        return run_result.final_output