diff --git a/backend/src/tasks/task-service.ts b/backend/src/tasks/task-service.ts index 4ef1ca9e..7222a344 100644 --- a/backend/src/tasks/task-service.ts +++ b/backend/src/tasks/task-service.ts @@ -1001,9 +1001,31 @@ class TaskService { const claimedAt = task.claimed_at || task.created_at; switch (task.role) { - case 'product_refresh': case 'product_discovery': { - // Verify payload was saved to raw_crawl_payloads after task was claimed + // For product_discovery, verify inventory snapshots were saved (always happens) + // Note: raw_crawl_payloads only saved during baseline window, so check snapshots instead + const snapshotResult = await pool.query( + `SELECT COUNT(*)::int as count + FROM inventory_snapshots + WHERE dispensary_id = $1 + AND captured_at > $2`, + [task.dispensary_id, claimedAt] + ); + + const snapshotCount = snapshotResult.rows[0]?.count || 0; + + if (snapshotCount === 0) { + return { + verified: false, + reason: `No inventory snapshots found for dispensary ${task.dispensary_id} after ${claimedAt}` + }; + } + + return { verified: true }; + } + + case 'product_refresh': { + // For product_refresh, verify payload was saved to raw_crawl_payloads const payloadResult = await pool.query( `SELECT id, product_count, fetched_at FROM raw_crawl_payloads