diff --git a/supabase/functions/process-selective-approval/index.ts b/supabase/functions/process-selective-approval/index.ts index 4c15a90b..f360fbd6 100644 --- a/supabase/functions/process-selective-approval/index.ts +++ b/supabase/functions/process-selective-approval/index.ts @@ -632,6 +632,37 @@ serve(withRateLimit(async (req) => { } } + // ✅ CLEANUP: Delete temporary references for approved items + const approvedItemIds = approvalResults.filter(r => r.success).map(r => r.itemId); + if (approvedItemIds.length > 0) { + try { + const { error: cleanupError } = await supabase + .from('submission_item_temp_refs') + .delete() + .in('submission_item_id', approvedItemIds); + + if (cleanupError) { + edgeLogger.warn('Failed to cleanup temp refs for approved items', { + requestId: tracking.requestId, + approvedItemIds, + error: cleanupError.message + }); + // Don't throw - cleanup failure shouldn't block approval + } else { + edgeLogger.info('Cleaned up temp refs for approved items', { + requestId: tracking.requestId, + count: approvedItemIds.length + }); + } + } catch (cleanupErr) { + edgeLogger.warn('Exception during temp ref cleanup', { + requestId: tracking.requestId, + error: cleanupErr instanceof Error ? cleanupErr.message : 'Unknown error' + }); + // Continue - don't let cleanup errors affect approval + } + } + // Batch update all rejected items const rejectedItemIds = approvalResults.filter(r => !r.success).map(r => r.itemId); if (rejectedItemIds.length > 0) {