#!/usr/bin/env python3
"""
使用 key_id 測試 API
"""

import requests
import json

# API 配置
BASE_URL = "http://localhost:3002"
# 使用數據庫中的 key_id
API_KEY_ID = "muser_d33ad12104964366a2f4ce82b1acbf10"


def test_api_with_key_id():
    """使用 key_id 測試 API"""
    try:
        headers = {"Authorization": f"Bearer {API_KEY_ID}"}
        print(f"測試 API 密鑰: {API_KEY_ID}")

        # 測試人臉列表 API
        response = requests.get(
            f"{BASE_URL}/api/v1/face/list", headers=headers, timeout=5
        )

        print(f"狀態碼: {response.status_code}")

        if response.status_code == 200:
            data = response.json()
            print(f"✅ API 請求成功")
            print(f"響應數據: {json.dumps(data, indent=2, ensure_ascii=False)}")
            return True
        elif response.status_code == 401:
            print("❌ API 密鑰認證失敗 (401 Unauthorized)")
            print(f"響應頭: {dict(response.headers)}")
            return False
        elif response.status_code == 404:
            print("⚠️  API 端點未找到 (404)")
            print(f"響應: {response.text[:200]}")
            return False
        else:
            print(f"❌ API 請求失敗: {response.status_code}")
            print(f"響應: {response.text[:200]}")
            return False
    except Exception as e:
        print(f"❌ API 測試錯誤: {e}")
        return False


def test_other_endpoints():
    """測試其他端點"""
    try:
        headers = {"Authorization": f"Bearer {API_KEY_ID}"}

        # 測試獲取特定視頻的人臉識別結果
        video_uuid = "384b0ff44aaaa1f1"
        response = requests.get(
            f"{BASE_URL}/api/v1/face/results/{video_uuid}", headers=headers, timeout=5
        )

        print(f"\n測試人臉識別結果端點:")
        print(f"視頻 UUID: {video_uuid}")
        print(f"狀態碼: {response.status_code}")

        if response.status_code == 200:
            data = response.json()
            print(f"✅ 成功獲取人臉識別結果")
            print(f"結果: {json.dumps(data, indent=2, ensure_ascii=False)[:500]}...")
            return True
        elif response.status_code == 404:
            print("⚠️  未找到該視頻的人臉識別結果")
            return True  # 這可能是正常的，如果還沒有處理結果
        else:
            print(f"響應: {response.text[:200]}")
            return False

    except Exception as e:
        print(f"❌ 測試錯誤: {e}")
        return False


def main():
    print("=" * 60)
    print("使用 key_id 測試 API")
    print("=" * 60)

    # 測試 1: 人臉列表 API
    print("\n1. 測試人臉列表 API...")
    api_test_passed = test_api_with_key_id()

    # 測試 2: 其他端點
    print("\n2. 測試其他 API 端點...")
    other_test_passed = test_other_endpoints()

    print("\n" + "=" * 60)
    if api_test_passed:
        print("✅ API 測試成功！")
    else:
        print("⚠️  API 測試失敗")

        print("\n可能的解決方案:")
        print("1. 檢查服務器是否正確編譯了人臉識別模塊")
        print("2. 檢查路由是否正確註冊")
        print("3. 查看服務器日誌中的錯誤信息")
        print("4. 嘗試重新編譯並重啟服務器")

    print("=" * 60)


if __name__ == "__main__":
    main()
