OptimAIze Debug Tool"; echo ""; try { $auth = new Auth(); if (!$auth->isLoggedIn()) { die("
❌ Please log in first
"); } $db = Database::getInstance(); echo "
✅ Authentication and Database OK
"; // Check 1: Database Tables and Structure echo "
"; echo "

1. Database Structure Check

"; $requiredTables = ['panel_directives', 'optimization_analysis_state', 'attributes']; foreach ($requiredTables as $table) { $result = $db->query("SHOW TABLES LIKE '$table'"); if ($result && $result->num_rows > 0) { echo "
✅ Table '$table' exists
"; } else { echo "
❌ Table '$table' missing
"; } } // Check required columns $checkColumns = [ 'optimization_analysis_state' => ['should_pause'], 'panel_directives' => ['llm_checked', 'is_impossible', 'llm_reasoning'] ]; foreach ($checkColumns as $table => $columns) { foreach ($columns as $column) { $result = $db->query("SHOW COLUMNS FROM $table LIKE '$column'"); if ($result && $result->num_rows > 0) { echo "
✅ Column $table.$column exists
"; } else { echo "
❌ Column $table.$column missing
"; } } } echo "
"; // Check 2: Current Data Status echo "
"; echo "

2. Current Data Status

"; $totalDirectives = $db->query("SELECT COUNT(*) as count FROM panel_directives")->fetch_assoc()['count']; $checkedDirectives = $db->query("SELECT COUNT(*) as count FROM panel_directives WHERE llm_checked = 1")->fetch_assoc()['count']; $impossibleDirectives = $db->query("SELECT COUNT(*) as count FROM panel_directives WHERE llm_checked = 1 AND is_impossible = 1")->fetch_assoc()['count']; $attributeCount = $db->query("SELECT COUNT(*) as count FROM attributes")->fetch_assoc()['count']; echo "
📊 Total Directives: " . number_format($totalDirectives) . "
"; echo "
📊 Checked Directives: " . number_format($checkedDirectives) . "
"; echo "
📊 Impossible Directives: " . number_format($impossibleDirectives) . "
"; echo "
📊 Available Attributes: " . number_format($attributeCount) . "
"; if ($totalDirectives == 0) { echo "
⚠️ No directives found. Click button below to generate combinations.
"; echo ""; } if ($attributeCount < 2) { echo "
❌ Need at least 2 attributes for analysis
"; } echo "
"; // Check 3: Analysis State echo "
"; echo "

3. Analysis State

"; $analysisState = $db->query("SELECT * FROM optimization_analysis_state ORDER BY id DESC LIMIT 1"); if ($analysisState && $analysisState->num_rows > 0) { $state = $analysisState->fetch_assoc(); echo "
Is Running: " . ($state['is_running'] ? '✅ Yes' : '❌ No') . "
"; echo "
Should Pause: " . ($state['should_pause'] ? '⚠️ Yes' : '✅ No') . "
"; echo "
Total Combinations: " . number_format($state['total_combinations']) . "
"; echo "
Processed: " . number_format($state['processed_combinations']) . "
"; echo "
Started At: " . ($state['started_at'] ?? 'Never') . "
"; echo "
Last Updated: " . ($state['last_updated'] ?? 'Never') . "
"; } else { echo "
⚠️ No analysis state found
"; } echo "
"; // Check 4: File Permissions and Existence echo "
"; echo "

4. Required Files Check

"; $requiredFiles = [ 'analysis_control.php', 'get_recent_combinations.php', 'enhanced_process_optimization.php', 'get_optimization_progress.php' ]; foreach ($requiredFiles as $file) { if (file_exists($file)) { $perms = substr(sprintf('%o', fileperms($file)), -4); echo "
✅ $file exists (permissions: $perms)
"; } else { echo "
❌ $file missing
"; } } echo "
"; // Check 5: GPT Configuration echo "
"; echo "

5. GPT Configuration

"; if (defined('OPENAI_API_KEY') && !empty(OPENAI_API_KEY)) { echo "
✅ OpenAI API key configured
"; $keyLength = strlen(OPENAI_API_KEY); echo "
Key length: $keyLength characters
"; if (class_exists('GptHelper')) { echo "
✅ GptHelper class available
"; } else { echo "
❌ GptHelper class missing
"; } } else { echo "
❌ OpenAI API key not configured
"; } echo "
"; // Check 6: Process Status echo "
"; echo "

6. Background Process Check

"; // Check for recent activity $recentActivity = $db->query(" SELECT COUNT(*) as count FROM panel_directives WHERE llm_checked = 1 AND updated_at > DATE_SUB(NOW(), INTERVAL 5 MINUTE) ")->fetch_assoc()['count']; if ($recentActivity > 0) { echo "
✅ Recent activity: $recentActivity combinations processed in last 5 minutes
"; } else { echo "
⚠️ No recent activity in last 5 minutes
"; } // Check if PHP can execute background processes $canExec = function_exists('exec'); if ($canExec) { echo "
✅ PHP exec() function available
"; } else { echo "
❌ PHP exec() function disabled
"; } echo "
"; // Action Buttons echo "
"; echo "

7. Manual Actions

"; echo "

Use these buttons to test and control the system:

"; echo ""; echo ""; echo ""; echo ""; echo ""; echo "
"; echo "
"; } catch (Exception $e) { echo "
❌ Error: " . htmlspecialchars($e->getMessage()) . "
"; } ?>