Files
momentry_core/scripts/test_face_api_final.py
Warren 8f05a7c188 feat: update Python processors and add utility scripts
- Update ASR, face, OCR, pose processors
- Add release pre-flight check script
- Add synonym generation, chunk processing scripts
- Add face recognition, stamp search utilities
2026-04-30 15:07:49 +08:00

143 lines
3.9 KiB
Python

#!/usr/bin/env python3
"""
最終人臉識別 API 測試
"""
import requests
import json
import sys
# API 配置
BASE_URL = "http://localhost:3002"
API_KEY = "muser_7ff810b88d6440c6ab31094ecae7dc32_1774870448_54b7c8e9"
def test_health():
"""測試健康檢查端點"""
try:
response = requests.get(f"{BASE_URL}/health", timeout=5)
if response.status_code == 200:
data = response.json()
print(f"✅ 健康檢查通過: {data}")
return True
else:
print(f"❌ 健康檢查失敗: {response.status_code}")
return False
except Exception as e:
print(f"❌ 健康檢查錯誤: {e}")
return False
def test_api_key():
"""測試 API 密鑰認證"""
try:
headers = {"Authorization": f"Bearer {API_KEY}"}
response = requests.get(
f"{BASE_URL}/api/v1/face/list", headers=headers, timeout=5
)
if response.status_code == 200:
print("✅ API 密鑰認證成功")
return True
elif response.status_code == 401:
print("❌ API 密鑰認證失敗 (401 Unauthorized)")
print(f" 使用的密鑰: {API_KEY[:20]}...")
return False
elif response.status_code == 404:
print("⚠️ API 端點未找到 (404)")
print(" 可能原因: 1) 路由未註冊 2) 服務器未重新編譯")
return False
else:
print(f"❌ API 請求失敗: {response.status_code}")
print(f" 響應: {response.text[:100]}")
return False
except Exception as e:
print(f"❌ API 測試錯誤: {e}")
return False
def test_database_data():
"""測試數據庫中的數據"""
import psycopg2
try:
conn = psycopg2.connect(
host="localhost",
port=5432,
database="momentry",
user="accusys",
password="accusys",
)
cursor = conn.cursor()
# 檢查人臉檢測記錄
cursor.execute("SELECT COUNT(*) FROM face_detections")
count = cursor.fetchone()[0]
print(f"✅ 數據庫中有 {count} 個人臉檢測記錄")
# 檢查視頻信息
cursor.execute("""
SELECT video_uuid, COUNT(*) as detections,
MIN(timestamp_secs), MAX(timestamp_secs)
FROM face_detections
GROUP BY video_uuid
""")
videos = cursor.fetchall()
for video in videos:
print(f" 視頻 UUID: {video[0]}")
print(f" 檢測數: {video[1]}")
print(f" 時間範圍: {video[2]:.1f}s - {video[3]:.1f}s")
cursor.close()
conn.close()
return True
except Exception as e:
print(f"❌ 數據庫檢查錯誤: {e}")
return False
def main():
print("=" * 60)
print("最終人臉識別系統測試")
print("=" * 60)
tests_passed = 0
total_tests = 3
# 測試 1: 健康檢查
print("\n1. 測試服務器健康檢查...")
if test_health():
tests_passed += 1
# 測試 2: API 密鑰認證
print("\n2. 測試 API 密鑰認證...")
if test_api_key():
tests_passed += 1
# 測試 3: 數據庫數據
print("\n3. 測試數據庫數據...")
if test_database_data():
tests_passed += 1
print("\n" + "=" * 60)
print(f"測試結果: {tests_passed}/{total_tests} 通過")
if tests_passed == total_tests:
print("✅ 所有測試通過!人臉識別系統正常運行")
else:
print("⚠️ 部分測試失敗,需要進一步檢查")
if tests_passed < 2:
print("\n建議的下一步:")
print("1. 檢查 API 密鑰是否正確")
print("2. 重新編譯並重啟 Momentry 服務器")
print("3. 檢查服務器日誌中的錯誤信息")
print("=" * 60)
if __name__ == "__main__":
main()