![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/soundstudiopro.com/private_html/api/ |
<?php
session_start();
header('Content-Type: application/json');
// Check if user is logged in
if (!isset($_SESSION['user_id'])) {
echo json_encode([
'success' => false,
'message' => 'User not logged in'
]);
exit;
}
$track_id = $_GET['track_id'] ?? null;
if (!$track_id) {
echo json_encode([
'success' => false,
'message' => 'Track ID required'
]);
exit;
}
try {
require_once '../config/database.php';
$pdo = getDBConnection();
// Get track information
$stmt = $pdo->prepare("
SELECT id, title, prompt, status, created_at, api_task_id, failure_reason
FROM music_tracks
WHERE id = ? AND user_id = ? AND status = 'failed'
");
$stmt->execute([$track_id, $_SESSION['user_id']]);
$track = $stmt->fetch();
if (!$track) {
echo json_encode([
'success' => false,
'message' => 'Failed track not found'
]);
exit;
}
// Get failure statistics for this user
$stmt = $pdo->prepare("
SELECT
COUNT(*) as total_tracks,
COUNT(CASE WHEN status = 'failed' THEN 1 END) as failed_tracks,
COUNT(CASE WHEN status = 'complete' THEN 1 END) as completed_tracks
FROM music_tracks
WHERE user_id = ?
");
$stmt->execute([$_SESSION['user_id']]);
$stats = $stmt->fetch();
// Calculate failure rate
$failure_rate = $stats['total_tracks'] > 0 ? round(($stats['failed_tracks'] / $stats['total_tracks']) * 100, 1) : 0;
// Determine failure reason and suggestions
$failure_analysis = analyzeFailure($track, $failure_rate);
echo json_encode([
'success' => true,
'data' => [
'track' => $track,
'stats' => $stats,
'failure_rate' => $failure_rate,
'analysis' => $failure_analysis
]
]);
} catch (Exception $e) {
error_log("Track failure notification error: " . $e->getMessage());
echo json_encode([
'success' => false,
'message' => 'Database error occurred'
]);
}
function analyzeFailure($track, $failure_rate) {
$analysis = [
'likely_cause' => 'Unknown',
'suggestions' => [],
'severity' => 'normal'
];
// Analyze based on failure rate
if ($failure_rate > 50) {
$analysis['severity'] = 'high';
$analysis['likely_cause'] = 'High failure rate detected';
$analysis['suggestions'][] = 'Consider reviewing your prompt writing style';
$analysis['suggestions'][] = 'Try simpler, more specific prompts';
$analysis['suggestions'][] = 'Contact support if issues persist';
} elseif ($failure_rate > 20) {
$analysis['severity'] = 'medium';
$analysis['likely_cause'] = 'Moderate failure rate';
$analysis['suggestions'][] = 'Try different music styles or genres';
$analysis['suggestions'][] = 'Keep prompts clear and specific';
} else {
$analysis['severity'] = 'low';
$analysis['likely_cause'] = 'Occasional failure (normal)';
$analysis['suggestions'][] = 'This is likely a temporary issue';
$analysis['suggestions'][] = 'Try the retry button';
}
// Analyze prompt content if available
if (!empty($track['prompt'])) {
$prompt = strtolower($track['prompt']);
// Check for potential issues
if (strpos($prompt, 'copyright') !== false || strpos($prompt, 'cover') !== false) {
$analysis['likely_cause'] = 'Copyright-related content';
$analysis['suggestions'][] = 'Avoid referencing copyrighted material';
$analysis['suggestions'][] = 'Create original content instead';
} elseif (strpos($prompt, 'explicit') !== false || strpos($prompt, 'profanity') !== false) {
$analysis['likely_cause'] = 'Inappropriate content';
$analysis['suggestions'][] = 'Keep content family-friendly';
$analysis['suggestions'][] = 'Avoid explicit language';
} elseif (strlen($track['prompt']) > 500) {
$analysis['likely_cause'] = 'Prompt too long';
$analysis['suggestions'][] = 'Keep prompts under 500 characters';
$analysis['suggestions'][] = 'Be more concise and specific';
}
}
// Add general suggestions
$analysis['suggestions'][] = 'Try different music styles (pop, rock, electronic, etc.)';
$analysis['suggestions'][] = 'Use clear, descriptive language';
$analysis['suggestions'][] = 'Specify mood, tempo, or instruments';
return $analysis;
}
?>