#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
測試時區修正是否正確
"""

import sys
import os
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))

from datetime import datetime
from app import create_app
from app.models.job import TranslationJob
from app.models.user import User
from app.utils.timezone import format_taiwan_time, now_taiwan, now_utc

def test_timezone_conversion():
    """測試時區轉換功能"""
    
    print("=" * 60)
    print("時區轉換測試")
    print("=" * 60)
    
    # 1. 測試當前時間
    print("\n1. 當前時間測試:")
    print(f"   系統本地時間: {datetime.now()}")
    print(f"   UTC 時間 (舊): {datetime.utcnow()}")
    print(f"   UTC 時間 (新): {now_utc()}")
    print(f"   台灣時間: {now_taiwan()}")
    
    # 2. 測試時間格式化
    print("\n2. 時間格式化測試:")
    utc_time = datetime.utcnow()
    print(f"   UTC 時間原始: {utc_time}")
    print(f"   轉換為台灣時間: {format_taiwan_time(utc_time)}")
    
    # 3. 測試模型的 to_dict 方法
    print("\n3. 測試資料模型時間輸出:")
    
    app = create_app()
    
    with app.app_context():
        # 創建測試資料
        from app import db
        
        # 查詢一筆任務記錄
        job = TranslationJob.query.first()
        if job:
            print(f"\n   任務 UUID: {job.job_uuid}")
            print(f"   資料庫中的 created_at (UTC): {job.created_at}")
            
            job_dict = job.to_dict()
            print(f"   to_dict 輸出的 created_at (台灣時間): {job_dict['created_at']}")
            
            if job.completed_at:
                print(f"   資料庫中的 completed_at (UTC): {job.completed_at}")
                print(f"   to_dict 輸出的 completed_at (台灣時間): {job_dict['completed_at']}")
        else:
            print("   沒有找到任務記錄")
        
        # 查詢使用者記錄
        user = User.query.first()
        if user:
            print(f"\n   使用者: {user.username}")
            print(f"   資料庫中的 created_at (UTC): {user.created_at}")
            
            user_dict = user.to_dict()
            print(f"   to_dict 輸出的 created_at (台灣時間): {user_dict['created_at']}")
            
            if user.last_login:
                print(f"   資料庫中的 last_login (UTC): {user.last_login}")
                print(f"   to_dict 輸出的 last_login (台灣時間): {user_dict['last_login']}")
        else:
            print("   沒有找到使用者記錄")
    
    print("\n" + "=" * 60)
    print("測試完成！")
    print("=" * 60)

if __name__ == "__main__":
    test_timezone_conversion()