Upscaling Service

The Upscaling Service coordinates AI image processing through Upsampler API integration and file management.

Processing Workflow

Upscaling Process

  1. Receive payment completion trigger
  2. Submit image to Upsampler API
  3. Monitor processing status
  4. Download completed high-resolution image
  5. Generate secure download token
  6. 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

  1. Receive completion notification
  2. Download from Upsampler CDN
  3. Store in secure WordPress directory
  4. Validate file integrity
  5. Generate download token
  6. 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