"""
自动处理服务 - 处理文件监控和自动转写相关功能

这个服务日常不启用，开启需要在环境变量中设置 ENABLE_AUTO_PROCESSING=true 同时配置相关环境变量 后重启应用
"""
import logging

logger = logging.getLogger(__name__)


def initialize_file_monitor():
    """
    初始化文件监控
    
    在应用完全加载后调用此函数以避免循环导入
    
    Returns:
        bool: 初始化成功返回 True,失败返回 False
    """
    try:
        from flask import has_app_context, current_app
        # 延迟导入 file_monitor 以避免循环导入
        import src.services.file_monitor as file_monitor
        
        # 获取实际的 app 对象而不是 current_app 代理
        if has_app_context():
            app = current_app._get_current_object()
            file_monitor.start_file_monitor(app=app)
        else:
            # 如果不在应用上下文中，尝试无参数调用
            file_monitor.start_file_monitor()
        
        if has_app_context():
            current_app.logger.info("文件监控初始化完成")
        return True
    except Exception as e:
        logger.warning(f"文件监控初始化失败: {e}")
        return False


def get_file_monitor_functions():
    """
    获取文件监控相关函数
    
    优雅地处理导入错误,如果 file_monitor 模块不可用,降级为返回存根函数
    
    Returns:
        tuple: (start_file_monitor, stop_file_monitor, get_file_monitor_status)
    """
    try:
        from flask import current_app
        import src.services.file_monitor as file_monitor
        return (
            file_monitor.start_file_monitor,
            file_monitor.stop_file_monitor,
            file_monitor.get_file_monitor_status
        )
    except ImportError as e:
        logger.warning(f"文件监控模块不可用: {e}")
        
        # 如果 file_monitor 不可用,返回存根函数
        def start_file_monitor():
            pass
        
        def stop_file_monitor():
            pass
        
        def get_file_monitor_status():
            return {'running': False, 'error': '文件监控模块不可用'}
        
        return start_file_monitor, stop_file_monitor, get_file_monitor_status
