#!/usr/bin/env python3
"""
简单创建用户脚本
"""
import asyncio
import sys
import os

# 添加项目根目录到Python路径
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

# 加载本地配置
try:
    import local_config
    print("✅ 本地配置已加载")
except ImportError:
    print("⚠️  未找到local_config.py")

async def create_user_simple():
    """简单创建用户"""
    try:
        from app.core.database import AsyncSessionLocal
        from app.core.security import get_password_hash
        from sqlalchemy import text
        
        print("🔧 创建测试用户...")
        
        async with AsyncSessionLocal() as session:
            # 创建一个测试用户
            test_username = "test_dify"
            test_password = "password123"
            hashed_password = get_password_hash(test_password)
            
            # 检查用户是否存在
            result = await session.execute(
                text("SELECT id FROM users WHERE username = :username"),
                {"username": test_username}
            )
            existing = result.fetchone()
            
            if existing:
                print(f"⚠️  用户 '{test_username}' 已存在")
            else:
                # 插入新用户
                await session.execute(
                    text("""
                        INSERT INTO users (username, email, password_hash, role, is_active, full_name, created_at, updated_at)
                        VALUES (:username, :email, :password_hash, :role, :is_active, :full_name, NOW(), NOW())
                    """),
                    {
                        "username": test_username,
                        "email": "test_dify@example.com",
                        "password_hash": hashed_password,
                        "role": "trainee",
                        "is_active": 1,
                        "full_name": "Test Dify User"
                    }
                )
                await session.commit()
                
                print(f"\n✅ 用户创建成功:")
                print(f"   用户名: {test_username}")
                print(f"   密码: {test_password}")
                print(f"   角色: trainee")
                print(f"   邮箱: test_dify@example.com")
            
            # 创建管理员用户
            admin_username = "admin"
            admin_password = "admin123"
            admin_hashed_password = get_password_hash(admin_password)
            
            # 检查管理员是否存在
            result = await session.execute(
                text("SELECT id FROM users WHERE username = :username"),
                {"username": admin_username}
            )
            existing = result.fetchone()
            
            if existing:
                print(f"\n⚠️  用户 '{admin_username}' 已存在")
            else:
                # 插入管理员
                await session.execute(
                    text("""
                        INSERT INTO users (username, email, password_hash, role, is_active, full_name, is_superuser, created_at, updated_at)
                        VALUES (:username, :email, :password_hash, :role, :is_active, :full_name, :is_superuser, NOW(), NOW())
                    """),
                    {
                        "username": admin_username,
                        "email": "admin@kaopeilian.com",
                        "password_hash": admin_hashed_password,
                        "role": "admin",
                        "is_active": 1,
                        "full_name": "系统管理员",
                        "is_superuser": 1
                    }
                )
                await session.commit()
                
                print(f"\n✅ 管理员创建成功:")
                print(f"   用户名: {admin_username}")
                print(f"   密码: {admin_password}")
                print(f"   角色: admin")
                print(f"   邮箱: admin@kaopeilian.com")
        
        print("\n✅ 用户创建完成！")
        
    except Exception as e:
        print(f"❌ 创建用户失败: {e}")
        import traceback
        traceback.print_exc()

if __name__ == "__main__":
    asyncio.run(create_user_simple())
