6f96bf50ac
当从外部目录(如D:\ccc)拖入文件时,输出文件会错误地写入源目录。 根因是所有路径使用相对路径 + os.getcwd() 解析,CWD不同则路径错误。 修复方案: - ConfigManager.get_path() 改为使用 app_root (exe所在目录/脚本所在目录) - 将 22 处裸硬编码 "data/result"/"data/output" 替换为 config.get_path() - 添加 result_folder 到默认配置和 config.ini - 修复 error_utils.py 中的路径匹配字符串 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
42 lines
1.6 KiB
Python
42 lines
1.6 KiB
Python
#!/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
|