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

php
// Triggered by payment completion
do_action('smi_payment_completed', $job_id);

// Process upscaling request
UpscalingService::process_upscale_request($job_id);

Upsampler Integration

API Submission

php
$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

php
// 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:

php
// 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:

php
// 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