Daily sweep finds data_export_requests where status='pending'. For each, generates a JSON/CSV archive of the user's data, uploads to S3/object storage, sets downloadUrl + expiresAt (7 days), updates status to 'ready'. Also marks 'ready' requests with expiresAt < NOW() as 'failed' so users know their download has expired.
Type: nightly_batch Trigger: Scheduled: 0 1 * * * Entities: data_export_requests,users,projects,features,pipeline_runs,releases Recommendation: