Merge branch 'main' of 47.107.44.202:xionglijia/18xchat

# Conflicts:
#	assets/Scripts/chat18x/core/ChatAIService.ts
#	assets/Scripts/chat18x/utils/ErrorHandler.ts
#	xchat_cfg
This commit is contained in:
2025-09-21 20:51:31 +08:00
75 changed files with 1094 additions and 899 deletions
+60 -56
View File
@@ -9,6 +9,7 @@
import LanguageUtils from "../../Main/Common/LanguageUtils";
import { TipsPanel } from "../ui/panels/TipsPanel";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
export enum ErrorType {
/** API调用错误 */
@@ -158,54 +159,6 @@ export class ErrorHandler {
);
}
/**
* 记录错误到内部日志
*/
private logError(errorInfo: ErrorInfo): void {
this.errorLog.push(errorInfo);
// 限制日志大小
if (this.errorLog.length > this.MAX_LOG_SIZE) {
this.errorLog.shift();
}
}
/**
* 输出错误到控制台
*/
private logToConsole(errorInfo: ErrorInfo): void {
const logMessage = `[${errorInfo.type}] ${errorInfo.message}`;
switch (errorInfo.type) {
case ErrorType.API_ERROR:
case ErrorType.NETWORK_ERROR:
console.error(logMessage, errorInfo.details);
break;
case ErrorType.VALIDATION_ERROR:
console.warn(logMessage, errorInfo.details);
break;
default:
console.log(logMessage, errorInfo.details);
}
// 如果有堆栈信息,也输出
if (errorInfo.stack) {
console.error("Stack trace:", errorInfo.stack);
}
}
/**
* 向用户显示友好的错误信息
*/
private showUserFriendlyError(errorInfo: ErrorInfo): void {
let userMessage: string;
TipsPanel.show(LanguageUtils.getText("chat_error_code_2005"));
// TODO: 这里应该显示UI提示,比如Toast或对话框
console.log("用户提示:", userMessage);
}
/**
* 获取错误日志
*/
@@ -229,14 +182,65 @@ export class ErrorHandler {
}
/**
* 检查是否有未处理的关键错误
* 记录错误到内部日志
*/
public hasCriticalErrors(): boolean {
const criticalTypes = [ErrorType.API_ERROR, ErrorType.CONFIG_ERROR];
return this.errorLog.some(
(error) =>
criticalTypes.includes(error.type) &&
Date.now() - error.timestamp < 60000 // 1分钟内的错误
);
private logError(errorInfo: ErrorInfo): void {
this.errorLog.push(errorInfo);
// 限制日志大小
if (this.errorLog.length > this.MAX_LOG_SIZE) {
this.errorLog.shift();
}
}
/**
* 输出错误到控制台
*/
private logToConsole(errorInfo: ErrorInfo): void {
const logMessage = `[${errorInfo.type}] ${errorInfo.message}`;
switch (errorInfo.type) {
case ErrorType.API_ERROR:
case ErrorType.NETWORK_ERROR:
logger.error(logMessage, errorInfo.details);
break;
case ErrorType.VALIDATION_ERROR:
logger.warn(logMessage, errorInfo.details);
break;
default:
logger.log(logMessage, errorInfo.details);
}
// 如果有堆栈信息,也输出
if (errorInfo.stack) {
logger.error("Stack trace:", errorInfo.stack);
}
}
/**
* 向用户显示友好的错误信息
*/
private showUserFriendlyError(errorInfo: ErrorInfo): void {
let userMessage: string;
switch (errorInfo.type) {
case ErrorType.API_ERROR:
userMessage = "AI服务暂时不可用,请稍后再试";
break;
case ErrorType.NETWORK_ERROR:
userMessage = "网络连接失败,请检查网络设置";
break;
case ErrorType.CONFIG_ERROR:
userMessage = "系统配置错误,请联系管理员";
break;
case ErrorType.STORAGE_ERROR:
userMessage = "数据保存失败,请重试";
break;
default:
userMessage = "发生了未知错误,请重试或联系客服";
}
// TODO: 这里应该显示UI提示,比如Toast或对话框
logger.log("用户提示:", userMessage);
}
}