"""
问题诊断脚本
验证3个关键错误的存在
"""
import sys
from loguru import logger

logger.info("=" * 60)
logger.info("🔍 开始诊断问题...")
logger.info("=" * 60)

# 问题 1: 检查 IndexResult.skip 方法
logger.info("\n[问题 1] 检查 IndexResult.skip 方法是否存在...")
try:
    from src.types.result import IndexResult
    has_skip = hasattr(IndexResult, 'skip')
    logger.info(f"  - IndexResult 类存在: ✅")
    logger.info(f"  - IndexResult.skip 方法存在: {'✅' if has_skip else '❌'}")
    
    if not has_skip:
        logger.error(f"  ❌ 确认: IndexResult 缺少 skip 类方法")
        logger.info(f"     位置: src/core/index_builder.py:235 调用不存在的方法")
except Exception as e:
    logger.error(f"  ❌ 检查失败: {e}")

# 问题 2: 检查 IndexManager.vector_store_manager 属性
logger.info("\n[问题 2] 检查 IndexManager.vector_store_manager 属性...")
try:
    from src.config import get_config_manager
    from src.core.index_manager import IndexManager
    
    config = get_config_manager()
    manager = IndexManager(config)
    
    has_vector_store_manager = hasattr(manager, 'vector_store_manager')
    has_storage_provider = hasattr(manager, 'storage_provider')
    
    logger.info(f"  - IndexManager 创建成功: ✅")
    logger.info(f"  - vector_store_manager 属性存在: {'✅' if has_vector_store_manager else '❌'}")
    logger.info(f"  - storage_provider 属性存在: {'✅' if has_storage_provider else '❌'}")
    
    if not has_vector_store_manager and has_storage_provider:
        logger.error(f"  ❌ 确认: IndexManager 使用了不存在的 vector_store_manager")
        logger.info(f"     位置: src/core/index_manager.py:239")
        logger.info(f"     应该使用: storage_provider.get_current_strategy()")
except Exception as e:
    logger.error(f"  ❌ 检查失败: {e}")
    import traceback
    logger.debug(traceback.format_exc())

# 问题 3: 检查 QdrantVectorStore path 参数问题
logger.info("\n[问题 3] 检查 QdrantVectorStore path 参数要求...")
try:
    from llama_index.vector_stores.qdrant import QdrantVectorStore
    from qdrant_client import QdrantClient
    import inspect
    
    # 检查 __init__ 签名
    sig = inspect.signature(QdrantVectorStore.__init__)
    params = sig.parameters
    
    logger.info(f"  - QdrantVectorStore 导入成功: ✅")
    logger.info(f"  - __init__ 参数: {list(params.keys())}")
    
    # 检查 path 参数
    if 'path' in params:
        path_param = params['path']
        has_default = path_param.default != inspect.Parameter.empty
        logger.info(f"  - path 参数存在: ✅")
        logger.info(f"  - path 参数有默认值: {'✅' if has_default else '❌'}")
        logger.info(f"    默认值: {path_param.default if has_default else 'REQUIRED'}")
        
        if not has_default:
            logger.error(f"  ❌ 确认: path 参数必需，但没有默认值")
            logger.info(f"     修补方案: 在 src/utils/patches.py 中需要加强补丁")
    
    # 测试是否能创建客户端模式的实例（理论测试）
    logger.info("\n  测试创建 client 模式实例（不连接）...")
    try:
        # 应用补丁
        from src.utils.patches import apply_all_patches
        apply_all_patches()
        
        # 不实际连接，只检查参数
        logger.info(f"  - 补丁已应用: ✅")
        logger.info(f"  - 需要在实际初始化时验证补丁效果")
        
    except Exception as e:
        logger.error(f"  ❌ 应用补丁失败: {e}")
        
except Exception as e:
    logger.error(f"  ❌ 检查失败: {e}")
    import traceback
    logger.debug(traceback.format_exc())

logger.info("\n" + "=" * 60)
logger.info("📋 诊断总结")
logger.info("=" * 60)
logger.info("发现的主要问题：")
logger.info("  1. ❌ IndexResult 缺少 skip() 类方法")
logger.info("  2. ❌ IndexManager 使用不存在的 vector_store_manager 属性")
logger.info("  3. ❌ QdrantVectorStore 的 path 参数验证问题")
logger.info("=" * 60)
