/**
 * 错误信息友好化转换
 * ===================
 *
 * 将后端/底层技术错误翻译成终端用户能理解的提示文案。
 */

export function getFriendlyErrorMessage(error: unknown, defaultMsg = '操作失败'): string {
  const raw = error instanceof Error ? error.message : String(error);

  // 提示词缺失
  if (raw.includes('未找到提示词') || raw.includes('prompt')) {
    return '当前选择的创作类型暂不可用，请尝试其他类型或联系客服';
  }

  // 积分不足（通常由 usePointsCheck 拦截，兜底兼容）
  if (raw.includes('积分不足') || raw.includes('402')) {
    return '积分不足，请先充值后再尝试';
  }

  // 网络/连接异常
  if (
    raw.includes('timeout') ||
    raw.includes('超时') ||
    raw.includes('ETIMEDOUT') ||
    raw.includes('ECONNREFUSED')
  ) {
    return '服务响应超时，请稍后重试';
  }
  if (
    raw.includes('network') ||
    raw.includes('fetch') ||
    raw.includes('Failed to fetch') ||
    raw.includes('ECONNRESET') ||
    raw.includes('ENOTFOUND')
  ) {
    return '网络连接异常，请检查网络后重试';
  }

  // 生成结果为空
  if (raw.includes('任务结果为空') || raw.includes('生成分镜为空')) {
    return '生成内容为空，请调整创作主题后重试';
  }

  // 数据解析异常
  if (raw.includes('数据解析失败') || raw.includes('数据适配失败')) {
    return '数据解析异常，请稍后重试或联系客服';
  }

  return defaultMsg;
}
