#!/usr/bin/env python3
"""
初始化管理員帳號腳本

用於建立系統的第一個管理員帳號。
執行方式：python init_admin.py

預設帳號：admin
預設密碼：Wooo@2026!  (符合密碼複雜度要求)
"""

import os
import sys

# 確保專案根目錄在 sys.path
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, BASE_DIR)

from database.manager import DatabaseManager, get_session
from services.user_service import create_initial_admin
from database.user_models import User


def main():
    print("=" * 60)
    print("  WOOO TECH - 初始化管理員帳號")
    print("=" * 60)
    print()

    # 初始化資料庫（確保資料表已建立）
    print("1. 初始化資料庫...")
    try:
        db_manager = DatabaseManager()
        print("   資料庫連線成功")
    except Exception as e:
        print(f"   資料庫連線失敗: {e}")
        sys.exit(1)

    # 取得資料庫 session
    db_session = get_session()

    try:
        # 檢查是否已有管理員
        print()
        print("2. 檢查現有管理員...")
        existing_admin = db_session.query(User).filter(User.role == User.ROLE_ADMIN).first()

        if existing_admin:
            print(f"   已存在管理員帳號: {existing_admin.username}")
            print()
            print("   如需重設密碼，請使用用戶管理介面或直接修改資料庫。")
            print()
            return

        # 建立管理員
        print()
        print("3. 建立管理員帳號...")
        success, message = create_initial_admin(db_session)

        if success:
            print(f"   {message}")
            print()
            print("=" * 60)
            print("  管理員帳號建立成功！")
            print("=" * 60)
            print()
            print("  帳號: admin")
            print("  密碼: Wooo@2026!")
            print()
            print("  請登入後立即修改密碼！")
            print("=" * 60)
        else:
            print(f"   {message}")

    except Exception as e:
        print(f"   發生錯誤: {e}")
        import traceback
        traceback.print_exc()
    finally:
        db_session.close()


if __name__ == '__main__':
    main()
