#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""错误处理工具模块"""

from tkinter import messagebox
from typing import Optional

from app.core.utils.log_utils import get_logger

logger = get_logger(__name__)


def show_error_dialog(title: str, message: str, suggestion: Optional[str] = None):
    try:
        full_msg = message
        if suggestion:
            full_msg = f"{message}\n\n建议操作：\n- {suggestion}"
        messagebox.showerror(title, full_msg)
    except Exception as e:
        logger.debug(f"显示错误对话框失败: {e}")


def get_error_suggestion(message: str) -> Optional[str]:
    msg = (message or "").lower()
    if 'openpyxl' in msg or ('engine' in msg and 'xlsx' in msg):
        return '安装依赖：pip install openpyxl'
    if 'xlrd' in msg or ('engine' in msg and 'xls' in msg):
        return '安装依赖：pip install xlrd'
    if 'timeout' in msg or 'timed out' in msg:
        return '检查网络，增大API超时时间或稍后重试'
    if 'invalid access_token' in msg or 'access token' in msg:
        return '刷新百度OCR令牌或检查api_key/secret_key'
    if '429' in msg or 'too many requests' in msg:
        return '降低识别频率或稍后重试'
    if '模板文件不存在' in msg or ('no such file' in msg and '模板' in msg):
        return '在系统设置中选择正确的模板文件路径'
    if '没有找到采购单' in msg or '未在' in msg and '找到采购单' in msg:
        return '确认result目录内存在采购单文件'
    if 'permission denied' in msg:
        return '以管理员权限运行或更改目录写入权限'
    return None
