Upscaling Service
The Upscaling Service coordinates AI image processing through Upsampler API integration and file management.
Processing Workflow
Upscaling Process
- Receive payment completion trigger
- Submit image to Upsampler API
- Monitor processing status
- Download completed high-resolution image
- Generate secure download token
- Send completion notification email
Service Coordination
// Triggered by payment completion
do_action('smi_payment_completed', $job_id);
// Process upscaling request
UpscalingService::process_upscale_request($job_id);
Upsampler Integration
API Submission
$response = Upsampler::submit_upscale_job([
'image_url' => $image_url,
'scale_factor' => $scale_factor,
'webhook_url' => home_url('/smi-webhook/upsampler/'),
'format' => 'auto'
]);
Status Monitoring
- Webhook-based completion notification
- Polling fallback for reliability
- Timeout handling (15-minute maximum)
- Error detection and retry logic
File Management
Download Process
- Receive completion notification
- Download from Upsampler CDN
- Store in secure WordPress directory
- Validate file integrity
- Generate download token
- Clean up temporary files
Storage Structure
/wp-content/uploads/smi-downloads/2023/10/
├── {job_id}_4x.jpg
├── {job_id}_8x.png
Error Handling
Processing Failures
Common failure scenarios and responses:
- Image format unsupported: Customer refund
- File too large: Automatic retry with compression
- API timeout: Queue for manual review
- Network errors: Exponential backoff retry
Recovery Actions
// Mark job as failed and trigger refund
UpscalingService::handle_processing_failure($job_id, $error_reason);
// Customer notification
UpscalingService::send_failure_notification($job_id, $customer_message);
Quality Assurance
Image Validation
Post-processing validation checks:
- File size verification
- Dimension accuracy
- Format compatibility
- Corruption detection
Success Criteria
- Output dimensions match expected scale
- File size appropriate for resolution
- No processing artifacts
- Download token generation successful
Webhook Processing
Upsampler Webhooks
Handles completion notifications:
// Webhook endpoint: /smi-webhook/upsampler/
public function handle_upsampler_webhook($payload) {
$job_id = $payload['job_id'];
$status = $payload['status'];
$download_url = $payload['result_url'];
if ($status === 'completed') {
$this->process_completion($job_id, $download_url);
}
}
Customer Communication
Email Notifications
Completion email with download link:
- Professional HTML template
- Download instructions
- Expiration notification
- Support contact information
Status Updates
Real-time status communication:
- JavaScript polling integration
- Modal status display
- Processing progress indication
- Error state handling
Performance Optimization
Concurrent Processing
- Multiple job processing support
- Queue management for high volume
- Resource utilization monitoring
- Load balancing considerations
Caching Strategy
- Temporary file caching
- CDN integration support
- Local storage optimization
- Cleanup automation
Admin Override
Manual Intervention
Admin retry functionality for failed jobs:
// Admin can retry any job
do_action('smi_payment_completed', $job_id, [
'admin_override' => true
]);
Monitoring Tools
- Processing status dashboard
- Error rate monitoring
- Performance metrics
- Queue depth tracking