Rene Fichtmueller
4299e24e13
fix(scraper): parse FS.com delivery dates + lead_time; fix units_sold K/M inflation
...
FS.com renders per-warehouse availability as a bare word-date on each line
("2 Stk. im DE-Lager, 8. Juli 2026 Lieferbar"). The old regex only matched a
"Lieferung:"/"erwartet:" prefix or numeric dd.mm.yyyy, so warehouse_de/global
delivery_date + backorder_estimated_date were 0% populated across 85k rows, and
lead_time_days was never written at all.
- new fs-com-parse.ts: pure, unit-tested parsers (13 node:test cases).
- extractDeliveryDate finds the bare word/numeric date per warehouse, bounded to
its own line so a date never bleeds to a neighbouring warehouse.
- computeLeadTimeDays = min(delivery_date - today), floored at 0; threaded into
upsertStockObservation (now writes lead_time_days) and upsertPriceObservation.
- parseGermanQty: K/M abbreviations now treat '.' as a decimal ("4.8K"=4800,
"1.4M"=1.4M) instead of stripping it (was "1.4M"->14,000,000 — the outlier).
- units_sold sanity gate at ingest (FS_MAX_UNITS_SOLD, default 2,000,000).
- sql/122: purge impossible historical units_sold, re-document columns as collected.
2026-07-04 22:37:05 +02:00
..
2026-03-27 16:27:31 +13:00
2026-03-27 16:27:31 +13:00
2026-03-27 16:27:31 +13:00
2026-03-27 16:27:31 +13:00
2026-03-28 00:22:01 +13:00
2026-03-29 02:26:45 +08:00
2026-03-29 02:26:45 +08:00
2026-03-29 02:26:45 +08:00
2026-03-29 02:26:45 +08:00
2026-03-29 02:26:45 +08:00
2026-03-29 02:26:45 +08:00
2026-03-30 08:07:12 +02:00
2026-03-31 08:51:22 +02:00
2026-03-31 08:51:22 +02:00
2026-03-31 09:12:37 +02:00
2026-03-31 09:12:37 +02:00
2026-04-04 15:41:57 +02:00
2026-04-01 21:26:13 +02:00
2026-04-01 22:04:33 +02:00
2026-04-01 22:46:27 +02:00
2026-04-01 23:16:50 +02:00
2026-04-02 02:02:44 +02:00
2026-04-04 08:15:32 +02:00
2026-04-04 08:30:27 +02:00
2026-04-05 11:51:07 +02:00
2026-04-04 15:41:57 +02:00
2026-04-06 02:22:00 +02:00
2026-04-06 02:22:00 +02:00
2026-04-17 22:54:40 +02:00
2026-04-09 20:29:46 +02:00
2026-04-09 20:29:46 +02:00
2026-04-09 09:09:23 +02:00
2026-04-09 20:29:46 +02:00
2026-04-09 20:34:27 +02:00
2026-04-17 10:45:59 +02:00
2026-04-17 10:45:59 +02:00
2026-04-17 10:45:59 +02:00
2026-04-17 22:54:40 +02:00
2026-04-17 22:54:40 +02:00
2026-04-18 00:09:08 +02:00
2026-04-20 23:16:52 +02:00
2026-04-20 22:56:53 +02:00
2026-04-20 23:17:41 +02:00
2026-04-20 23:23:23 +02:00
2026-04-20 23:31:36 +02:00
2026-04-21 00:41:31 +02:00
2026-04-21 07:07:24 +02:00
2026-04-21 08:11:57 +02:00
2026-04-21 07:57:55 +02:00
2026-04-21 07:57:55 +02:00
2026-04-21 07:57:55 +02:00
2026-04-21 08:11:57 +02:00
2026-04-21 08:42:14 +02:00
2026-04-21 08:42:14 +02:00
2026-04-21 08:42:14 +02:00
2026-04-21 08:42:14 +02:00
2026-04-21 09:48:30 +02:00
2026-04-21 09:50:46 +02:00
2026-04-21 09:55:22 +02:00
2026-04-21 09:55:22 +02:00
2026-04-21 09:55:22 +02:00
2026-04-21 09:56:11 +02:00
2026-04-21 10:10:32 +02:00
2026-04-21 10:10:32 +02:00
2026-04-21 10:16:51 +02:00
2026-04-21 10:18:51 +02:00
2026-04-21 11:34:38 +02:00
2026-04-21 11:34:38 +02:00
2026-04-21 11:34:38 +02:00
2026-04-21 11:34:38 +02:00
2026-04-21 11:34:38 +02:00
2026-04-21 11:34:38 +02:00
2026-04-21 11:34:38 +02:00
2026-04-21 11:34:38 +02:00
2026-04-21 14:30:42 +02:00
2026-04-21 14:30:42 +02:00
2026-04-21 14:49:29 +02:00
2026-04-21 14:49:29 +02:00
2026-04-21 14:49:29 +02:00
2026-04-21 15:01:39 +02:00
2026-04-21 15:01:39 +02:00
2026-04-21 16:00:36 +02:00
2026-04-21 16:00:36 +02:00
2026-04-21 21:20:47 +02:00
2026-04-21 21:20:47 +02:00
2026-04-21 21:20:47 +02:00
2026-04-21 22:03:08 +02:00
2026-04-21 22:13:54 +02:00
2026-04-21 22:20:19 +02:00
2026-04-21 22:23:13 +02:00
2026-04-21 22:39:06 +02:00
2026-04-21 23:02:25 +02:00
2026-04-21 23:09:46 +02:00
2026-04-25 07:48:57 +02:00
2026-04-25 07:51:15 +02:00
2026-04-25 13:38:11 +02:00
2026-04-25 08:55:21 +02:00
2026-04-25 08:55:21 +02:00
2026-04-25 16:37:16 +02:00
2026-04-25 13:38:11 +02:00
2026-04-25 17:44:20 +02:00
2026-04-25 20:58:45 +02:00
2026-04-25 20:58:45 +02:00
2026-05-13 16:36:33 +02:00
2026-05-09 23:06:21 +02:00
2026-05-10 00:03:42 +02:00
2026-05-10 01:16:49 +02:00
2026-05-10 10:13:09 +02:00
2026-05-10 10:23:07 +02:00
2026-05-13 16:55:45 +02:00
2026-05-13 16:55:45 +02:00
2026-05-13 17:35:42 +02:00
2026-05-13 17:38:43 +02:00
2026-05-13 17:35:42 +02:00
2026-05-13 17:59:08 +02:00
2026-05-13 17:59:08 +02:00
2026-05-13 18:49:28 +02:00
2026-05-13 21:33:19 +02:00
2026-05-13 21:33:19 +02:00
2026-05-14 00:24:58 +02:00
2026-07-04 16:05:28 +00:00
2026-07-04 16:05:28 +00:00
2026-07-04 16:05:28 +00:00
2026-07-04 22:37:05 +02:00