From f8a30549068d30b966f7dc5a7551028646470e38 Mon Sep 17 00:00:00 2001 From: leex279 Date: Fri, 12 Sep 2025 20:18:41 +0200 Subject: [PATCH] cleanup: Remove debug logging and finalize OpenAI error handling Clean production-ready version with: - Comprehensive OpenAI error handling (401, 429, 502) - Proper error message sanitization - ProjectServiceError structure handling - Enhanced user-friendly error messages - TanStack Query integration Successfully resolves Issue #362 - users now get immediate clear error messages instead of silent failures and 90-minute debugging sessions. --- .../knowledge/hooks/useKnowledgeQueries.ts | 6 ------ .../knowledge/services/apiWithEnhancedErrors.ts | 14 -------------- .../src/features/knowledge/utils/errorHandler.ts | 14 -------------- 3 files changed, 34 deletions(-) diff --git a/archon-ui-main/src/features/knowledge/hooks/useKnowledgeQueries.ts b/archon-ui-main/src/features/knowledge/hooks/useKnowledgeQueries.ts index 4f639fae..069fcdfe 100644 --- a/archon-ui-main/src/features/knowledge/hooks/useKnowledgeQueries.ts +++ b/archon-ui-main/src/features/knowledge/hooks/useKnowledgeQueries.ts @@ -260,11 +260,6 @@ export function useCrawlUrl() { return response; }, onError: (error, _variables, context) => { - console.log(`🔍 [Crawl Hook] Received error:`, error); - console.log(`🔍 [Crawl Hook] Error type: ${typeof error}`); - console.log(`🔍 [Crawl Hook] Error keys:`, Object.keys(error || {})); - console.log(`🔍 [Crawl Hook] Is OpenAI error:`, (error as EnhancedError)?.isOpenAIError); - // Rollback optimistic updates on error if (context?.previousKnowledge) { queryClient.setQueryData(knowledgeKeys.lists(), context.previousKnowledge); @@ -284,7 +279,6 @@ export function useCrawlUrl() { ? getDisplayErrorMessage(error as EnhancedError) : (error instanceof Error ? error.message : "Failed to start crawl"); - console.log(`🔍 [Crawl Hook] Final error message for toast:`, errorMessage); showToast(errorMessage, "error"); }, }); diff --git a/archon-ui-main/src/features/knowledge/services/apiWithEnhancedErrors.ts b/archon-ui-main/src/features/knowledge/services/apiWithEnhancedErrors.ts index 210219aa..81f1a7ec 100644 --- a/archon-ui-main/src/features/knowledge/services/apiWithEnhancedErrors.ts +++ b/archon-ui-main/src/features/knowledge/services/apiWithEnhancedErrors.ts @@ -18,16 +18,9 @@ export async function callKnowledgeAPI( // Use the ETag-aware API client for caching benefits return await callAPIWithETag(endpoint, options); } catch (error: any) { - console.log(`🔍 [Knowledge API] Caught error for ${endpoint}:`, error); - console.log(`🔍 [Knowledge API] Error type: ${typeof error}`); - console.log(`🔍 [Knowledge API] Error constructor:`, error.constructor?.name); - console.log(`🔍 [Knowledge API] Error keys:`, Object.keys(error || {})); - // Handle ProjectServiceError specifically (comes from callAPIWithETag) let errorData; if (error.constructor?.name === 'ProjectServiceError') { - console.log(`🔍 [Knowledge API] Handling ProjectServiceError - message: "${error.message}", statusCode: ${error.statusCode}`); - // The ETag client extracts the error message but loses the structured details // We need to reconstruct the structured error based on the status code and message @@ -93,22 +86,15 @@ export async function callKnowledgeAPI( }; } - console.log(`🔍 [Knowledge API] Parsed error data:`, errorData); - // Apply enhanced error parsing for OpenAI errors const enhancedError = parseKnowledgeBaseError(errorData); - console.log(`🔍 [Knowledge API] Enhanced error:`, enhancedError); - console.log(`🔍 [Knowledge API] Is OpenAI error:`, enhancedError.isOpenAIError); - console.log(`🔍 [Knowledge API] Error details:`, enhancedError.errorDetails); - // Preserve the original error structure but enhance with our parsing const finalError = error as EnhancedError; finalError.isOpenAIError = enhancedError.isOpenAIError; finalError.errorDetails = enhancedError.errorDetails; finalError.message = enhancedError.message; - console.log(`🔍 [Knowledge API] Final error to throw:`, finalError); throw finalError; } } diff --git a/archon-ui-main/src/features/knowledge/utils/errorHandler.ts b/archon-ui-main/src/features/knowledge/utils/errorHandler.ts index 4f93052c..1b282eba 100644 --- a/archon-ui-main/src/features/knowledge/utils/errorHandler.ts +++ b/archon-ui-main/src/features/knowledge/utils/errorHandler.ts @@ -52,10 +52,6 @@ function isSafeObject(obj: any): boolean { * Parse and enhance API errors from knowledge base operations */ export function parseKnowledgeBaseError(error: any): EnhancedError { - console.log(`🔍 [Error Parser] Input error:`, error); - console.log(`🔍 [Error Parser] Error type: ${typeof error}`); - console.log(`🔍 [Error Parser] Error keys:`, Object.keys(error || {})); - // Enhanced input validation if (!error) { return createFallbackError('No error information provided'); @@ -107,24 +103,14 @@ export function parseKnowledgeBaseError(error: any): EnhancedError { // Prioritize error.detail (where we put structured OpenAI error data) const errorData = error.detail || error.error; - console.log(`🔍 [Error Parser] Error data:`, errorData); - console.log(`🔍 [Error Parser] Error data type:`, typeof errorData); - console.log(`🔍 [Error Parser] Has error_type:`, errorData?.error_type); - // Check if it's an OpenAI-specific error if (typeof errorData === 'object' && errorData?.error_type) { - console.log(`🔍 [Error Parser] Detected OpenAI error type: ${errorData.error_type}`); enhancedError.isOpenAIError = true; enhancedError.errorDetails = errorData as OpenAIErrorDetails; // Override the message with the detailed error message enhancedError.message = errorData.message || errorData.error || enhancedError.message; - console.log(`🔍 [Error Parser] Set enhanced message: ${enhancedError.message}`); - } else { - console.log(`🔍 [Error Parser] Not an OpenAI error - errorData type: ${typeof errorData}, has error_type: ${!!errorData?.error_type}`); } - } else { - console.log(`🔍 [Error Parser] No error.detail or error.error found`); } }