from negotiation_agent.environment import NegotiationEnv
from negotiation_agent.agent import QLearningAgent
import config


def evaluate():
    env = NegotiationEnv(
        scenario=config.SCENARIO,
        target_price=config.TARGET_PRICE,
        threshold_price=config.THRESHOLD_PRICE,
    )

    # 에이전트를 생성하되, 학습된 Q-Table을 불러옵니다.
    agent = QLearningAgent(
        state_dims=env.observation_space.nvec,
        action_size=env.action_space.n,
        learning_rate=0,  # 평가 시에는 학습하지 않음
        gamma=0,
        epsilon=0,  # 평가 시에는 탐험하지 않고 최선의 행동만 선택
    )
    agent.load_q_table(config.Q_TABLE_SAVE_PATH)

    print("--- 학습된 에이전트 평가 시작 ---")
    state, info = env.reset()
    terminated = False
    total_reward = 0

    while not terminated:
        action = agent.get_action(state)
        state, reward, terminated, truncated, info = env.step(action)
        total_reward += reward
        print(f"상태: {state}, 선택한 행동: {action}, 보상: {reward:.4f}")

    print("\n✅ 평가 종료!")
    print(f"최종 협상 가격: {env.current_price:.2f} (목표가: {env.target_price})")
    print(f"총 보상: {total_reward:.4f}")
    env.close()


if __name__ == "__main__":
    evaluate()
