#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
配置文件诊断脚本
"""

import json
import os
import sys

def check_config():
    """检查配置文件"""

    print("="*60)
    print("  配置文件诊断")
    print("="*60)
    print()

    config_file = "config.json"

    # 检查文件是否存在
    if not os.path.exists(config_file):
        print(f"❌ 配置文件不存在: {config_file}")
        print(f"\n请运行: python mdp_termination.py --config")
        return False

    print(f"✅ 配置文件存在: {config_file}")
    print()

    # 读取配置文件
    try:
        with open(config_file, 'r', encoding='utf-8') as f:
            config = json.load(f)
        print(f"✅ 配置文件格式正确")
        print()
    except json.JSONDecodeError as e:
        print(f"❌ 配置文件格式错误: {e}")
        print(f"\n建议: 删除配置文件并重新运行配置向导")
        return False

    # 显示配置内容
    print("当前配置内容:")
    print("-"*60)
    print(json.dumps(config, indent=2, ensure_ascii=False))
    print("-"*60)
    print()

    # 检查必需字段
    required_fields = {
        'crm_url': 'CRM URL',
        'ad_domain': 'AD 域名',
        'crm_username': 'CRM 用户名',
        'password_file': '密码文件路径'
    }

    missing_fields = []

    for field, description in required_fields.items():
        if field not in config or not config[field]:
            print(f"❌ 缺少必需字段: {field} ({description})")
            missing_fields.append(field)
        else:
            value = config[field]
            if field == 'password_file':
                print(f"✅ {field}: {value}")
                # 检查密码文件是否存在
                if os.path.exists(value):
                    print(f"   ✅ 密码文件存在")
                else:
                    print(f"   ❌ 密码文件不存在: {value}")
                    missing_fields.append('password_file (文件)')
            else:
                # 隐藏部分敏感信息
                if field == 'crm_username':
                    display_value = value
                else:
                    display_value = value
                print(f"✅ {field}: {display_value}")

    print()

    if missing_fields:
        print("="*60)
        print("❌ 配置不完整")
        print("="*60)
        print(f"\n缺少字段: {', '.join(missing_fields)}")
        print("\n建议:")
        print("  1. 删除当前配置文件: del config.json")
        print("  2. 重新运行配置向导: python mdp_termination.py --config")
        return False

    print("="*60)
    print("✅ 配置文件完整")
    print("="*60)
    print()

    # 测试密码解密
    print("测试密码解密...")
    password_file = config.get('password_file', 'password.enc')

    try:
        from mdp_termination import PasswordManager
        password = PasswordManager.decrypt_password(password_file)
        print(f"✅ 密码解密成功 (长度: {len(password)} 字符)")
    except Exception as e:
        print(f"❌ 密码解密失败: {e}")
        print("\n建议:")
        print("  1. 删除密码文件: del " + password_file)
        print("  2. 重新运行配置向导: python mdp_termination.py --config")
        return False

    print()
    print("="*60)
    print("✅ 所有检查通过!")
    print("="*60)
    print("\n可以运行:")
    print("  python mdp_termination.py --employee-id 000 --what-if")
    return True

if __name__ == "__main__":
    try:
        success = check_config()
        sys.exit(0 if success else 1)
    except Exception as e:
        print(f"\n错误: {e}")
        import traceback
        traceback.print_exc()
        sys.exit(1)
