{
  "generated_at": "2026-05-31T06:19:20+00:00",
  "filters": {
    "feed_id": 6,
    "component": null,
    "level": null,
    "limit": 1000
  },
  "stats_last_24h": {
    "total_events": 0,
    "error_events": 0,
    "warning_events": 0,
    "feeds_with_errors": 0,
    "last_event_at": null
  },
  "events": [
    {
      "id": 5719,
      "created_at": "2026-05-26T10:55:23+00:00",
      "level": "info",
      "component": "feed_import_worker",
      "event_type": "queued",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": null,
      "status": "queued",
      "message": "feed #6 queued for XML import",
      "details_json": "{\"brand_name\": \"Beach Riot\"}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 667,
      "created_at": "2026-04-22T13:51:56+00:00",
      "level": "info",
      "component": "feed_import_worker",
      "event_type": "queued",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": null,
      "status": "queued",
      "message": "feed #6 queued for XML import",
      "details_json": "{\"brand_name\": \"Beach Riot\"}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 626,
      "created_at": "2026-04-22T13:50:52+00:00",
      "level": "warning",
      "component": "feed_import_worker",
      "event_type": "manual_queue_blocked",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": null,
      "status": "blocked",
      "message": "feed #6 manual XML sync blocked while AI jobs are running",
      "details_json": null,
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 539,
      "created_at": "2026-04-20T15:59:41+00:00",
      "level": "info",
      "component": "site_info",
      "event_type": "job_queued",
      "feed_id": 6,
      "product_id": null,
      "job_id": 133,
      "run_id": null,
      "status": "queued",
      "message": "queued job #133 scope=feed feed_id=6 product_id=None force_refresh=False batch_limit=1000",
      "details_json": "{\"batch_limit\": 1000, \"force_refresh\": false, \"scope\": \"feed\"}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": "site_info_fetch"
    },
    {
      "id": 476,
      "created_at": "2026-04-20T01:51:05+00:00",
      "level": "info",
      "component": "site_info",
      "event_type": "job_queued",
      "feed_id": 6,
      "product_id": null,
      "job_id": 120,
      "run_id": null,
      "status": "queued",
      "message": "queued job #120 scope=feed feed_id=6 product_id=None force_refresh=False batch_limit=1000",
      "details_json": "{\"batch_limit\": 1000, \"force_refresh\": false, \"scope\": \"feed\"}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": "site_info_fetch"
    },
    {
      "id": 446,
      "created_at": "2026-04-20T01:19:31+00:00",
      "level": "info",
      "component": "site_info",
      "event_type": "job_queued",
      "feed_id": 6,
      "product_id": null,
      "job_id": 106,
      "run_id": null,
      "status": "queued",
      "message": "queued job #106 scope=feed feed_id=6 product_id=None force_refresh=False batch_limit=1000",
      "details_json": "{\"batch_limit\": 1000, \"force_refresh\": false, \"scope\": \"feed\"}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": "site_info_fetch"
    },
    {
      "id": 179,
      "created_at": "2026-04-20T00:30:23+00:00",
      "level": "info",
      "component": "feed_import_worker",
      "event_type": "worker_run_completed",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": "f9e51a6e70e243d1a1ee53b532654de4",
      "status": "completed",
      "message": "feed #6 completed xml_products=768 errors=0",
      "details_json": "{\"duration_seconds\": 151.73, \"product_errors\": 0, \"product_urls_discovered\": 768, \"products_synced\": 768, \"sitemap_count\": 3}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 178,
      "created_at": "2026-04-20T00:30:21+00:00",
      "level": "info",
      "component": "feed_import",
      "event_type": "run_completed",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": "f9e51a6e70e243d1a1ee53b532654de4",
      "status": "completed",
      "message": "feed #6 import completed active_products=768 variants=60 duration=151.73s",
      "details_json": "{\"active_product_count\": 768, \"duration_seconds\": 151.73, \"next_import_at\": null, \"product_errors\": 0, \"product_url_count\": 768, \"sitemap_count\": 3, \"synced_products\": 768, \"variant_count\": 60}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 177,
      "created_at": "2026-04-20T00:30:20+00:00",
      "level": "info",
      "component": "feed_import",
      "event_type": "xml_sync_finished",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": "f9e51a6e70e243d1a1ee53b532654de4",
      "status": "running",
      "message": "feed #6 synced xml products=768 site-info-pending=768 errors=0",
      "details_json": "{\"product_errors\": 0, \"site_info_pending\": 768, \"synced_products\": 768}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 176,
      "created_at": "2026-04-20T00:30:19+00:00",
      "level": "info",
      "component": "feed_import",
      "event_type": "progress",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": "f9e51a6e70e243d1a1ee53b532654de4",
      "status": "running",
      "message": "feed #6 import progress 768/768 synced=768 errors=0",
      "details_json": "{\"processed_products\": 768, \"product_errors\": 0, \"synced_products\": 768, \"total_product_urls\": 768}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 175,
      "created_at": "2026-04-20T00:30:07+00:00",
      "level": "info",
      "component": "feed_import",
      "event_type": "progress",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": "f9e51a6e70e243d1a1ee53b532654de4",
      "status": "running",
      "message": "feed #6 import progress 700/768 synced=700 errors=0",
      "details_json": "{\"processed_products\": 700, \"product_errors\": 0, \"synced_products\": 700, \"total_product_urls\": 768}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 174,
      "created_at": "2026-04-20T00:29:49+00:00",
      "level": "info",
      "component": "feed_import",
      "event_type": "progress",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": "f9e51a6e70e243d1a1ee53b532654de4",
      "status": "running",
      "message": "feed #6 import progress 600/768 synced=600 errors=0",
      "details_json": "{\"processed_products\": 600, \"product_errors\": 0, \"synced_products\": 600, \"total_product_urls\": 768}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 173,
      "created_at": "2026-04-20T00:29:33+00:00",
      "level": "info",
      "component": "feed_import",
      "event_type": "progress",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": "f9e51a6e70e243d1a1ee53b532654de4",
      "status": "running",
      "message": "feed #6 import progress 500/768 synced=500 errors=0",
      "details_json": "{\"processed_products\": 500, \"product_errors\": 0, \"synced_products\": 500, \"total_product_urls\": 768}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 172,
      "created_at": "2026-04-20T00:29:16+00:00",
      "level": "info",
      "component": "feed_import",
      "event_type": "progress",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": "f9e51a6e70e243d1a1ee53b532654de4",
      "status": "running",
      "message": "feed #6 import progress 400/768 synced=400 errors=0",
      "details_json": "{\"processed_products\": 400, \"product_errors\": 0, \"synced_products\": 400, \"total_product_urls\": 768}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 171,
      "created_at": "2026-04-20T00:28:59+00:00",
      "level": "info",
      "component": "feed_import",
      "event_type": "progress",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": "f9e51a6e70e243d1a1ee53b532654de4",
      "status": "running",
      "message": "feed #6 import progress 300/768 synced=300 errors=0",
      "details_json": "{\"processed_products\": 300, \"product_errors\": 0, \"synced_products\": 300, \"total_product_urls\": 768}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 170,
      "created_at": "2026-04-20T00:28:41+00:00",
      "level": "info",
      "component": "feed_import",
      "event_type": "progress",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": "f9e51a6e70e243d1a1ee53b532654de4",
      "status": "running",
      "message": "feed #6 import progress 200/768 synced=200 errors=0",
      "details_json": "{\"processed_products\": 200, \"product_errors\": 0, \"synced_products\": 200, \"total_product_urls\": 768}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 169,
      "created_at": "2026-04-20T00:28:25+00:00",
      "level": "info",
      "component": "feed_import",
      "event_type": "progress",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": "f9e51a6e70e243d1a1ee53b532654de4",
      "status": "running",
      "message": "feed #6 import progress 100/768 synced=100 errors=0",
      "details_json": "{\"processed_products\": 100, \"product_errors\": 0, \"synced_products\": 100, \"total_product_urls\": 768}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 168,
      "created_at": "2026-04-20T00:28:08+00:00",
      "level": "info",
      "component": "feed_import",
      "event_type": "product_urls_discovered",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": "f9e51a6e70e243d1a1ee53b532654de4",
      "status": "running",
      "message": "feed #6 discovered 768 product URL(s)",
      "details_json": "{\"product_url_count\": 768}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 167,
      "created_at": "2026-04-20T00:28:07+00:00",
      "level": "info",
      "component": "feed_import",
      "event_type": "sitemap_processed",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": "f9e51a6e70e243d1a1ee53b532654de4",
      "status": "running",
      "message": "feed #6 parsed sitemap https://beachriot.com/sitemap_blogs_1.xml",
      "details_json": "{\"duration_seconds\": 0.54, \"new_product_urls\": 0, \"sitemap_url\": \"https://beachriot.com/sitemap_blogs_1.xml\", \"total_product_urls\": 768}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 166,
      "created_at": "2026-04-20T00:28:06+00:00",
      "level": "info",
      "component": "feed_import",
      "event_type": "sitemap_processed",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": "f9e51a6e70e243d1a1ee53b532654de4",
      "status": "running",
      "message": "feed #6 parsed sitemap https://beachriot.com/sitemap_products_1.xml?from=1489139105845&to=15035134083438",
      "details_json": "{\"duration_seconds\": 4.3, \"new_product_urls\": 73, \"sitemap_url\": \"https://beachriot.com/sitemap_products_1.xml?from=1489139105845&to=15035134083438\", \"total_product_urls\": 768}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 165,
      "created_at": "2026-04-20T00:28:01+00:00",
      "level": "info",
      "component": "feed_import",
      "event_type": "sitemap_processed",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": "f9e51a6e70e243d1a1ee53b532654de4",
      "status": "running",
      "message": "feed #6 parsed sitemap https://beachriot.com/sitemap_products_1.xml?from=1489139105845&to=14969551913326",
      "details_json": "{\"duration_seconds\": 3.77, \"new_product_urls\": 695, \"sitemap_url\": \"https://beachriot.com/sitemap_products_1.xml?from=1489139105845&to=14969551913326\", \"total_product_urls\": 695}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 164,
      "created_at": "2026-04-20T00:27:56+00:00",
      "level": "info",
      "component": "feed_import",
      "event_type": "sitemap_discovery_completed",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": "f9e51a6e70e243d1a1ee53b532654de4",
      "status": "running",
      "message": "feed #6 discovered 3 sitemap(s) mode=xml-discovery",
      "details_json": "{\"sitemap_count\": 3, \"sitemaps\": [\"https://beachriot.com/sitemap_products_1.xml?from=1489139105845&to=14969551913326\", \"https://beachriot.com/sitemap_products_1.xml?from=1489139105845&to=15035134083438\", \"https://beachriot.com/sitemap_blogs_1.xml\"]}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 163,
      "created_at": "2026-04-20T00:27:51+00:00",
      "level": "info",
      "component": "feed_import",
      "event_type": "sitemap_discovery_started",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": "f9e51a6e70e243d1a1ee53b532654de4",
      "status": "running",
      "message": "feed #6 starting sitemap discovery",
      "details_json": null,
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 162,
      "created_at": "2026-04-20T00:27:51+00:00",
      "level": "info",
      "component": "feed_import",
      "event_type": "run_started",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": "f9e51a6e70e243d1a1ee53b532654de4",
      "status": "running",
      "message": "feed #6 starting import source=https://beachriot.com/sitemap_products_1.xml?from=1489139105845&to=14969551913326",
      "details_json": "{\"brand_name\": \"Beach Riot\", \"progress_interval\": 100, \"source_url\": \"https://beachriot.com/sitemap_products_1.xml?from=1489139105845&to=14969551913326\"}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 161,
      "created_at": "2026-04-20T00:27:48+00:00",
      "level": "info",
      "component": "feed_import_worker",
      "event_type": "worker_run_started",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": null,
      "status": "running",
      "message": "feed #6 started",
      "details_json": "{\"concurrency\": 1}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    },
    {
      "id": 56,
      "created_at": "2026-04-20T00:14:24+00:00",
      "level": "info",
      "component": "feed_import_worker",
      "event_type": "queued",
      "feed_id": 6,
      "product_id": null,
      "job_id": null,
      "run_id": null,
      "status": "queued",
      "message": "feed #6 queued for XML import",
      "details_json": "{\"brand_name\": \"Beach Riot\"}",
      "brand_name": "Beach Riot",
      "product_title": null,
      "job_type": null
    }
  ]
}