transceiver-db/sql/028-stock-observations-warehouse-columns.sql
Rene Fichtmueller 75cbd7cd86 feat: stock quality schema + QSFPTEK/NADDOD v2 scrapers with real-time stock counts
- Migration 028 (retroactive): document warehouse columns added to stock_observations
- Migration 037: composite indexes for DISTINCT ON (transceiver_id, source_vendor_id) queries
- Migration 038: add stock_confidence (1/2/3), price_currency, price_includes_tax,
  stock_vendor_ts to stock_observations + TRUNCATE test-run data

db.ts: upsertStockObservation now accepts stockConfidence, priceCurrency,
priceIncludesTax, stockVendorTs; delta detection includes quantity_available

fs-com.ts: passes stockConfidence=3 + priceCurrency=EUR + priceIncludesTax=false

qsfptek.ts v2: Phase 1 API listing + Phase 2 detail-page stock extraction
- Parses 'X in real-time stock, DATE' from product detail pages
- Writes stock_observations with confidence=2 + stockVendorTs
- Up to 500 detail pages/run at 2s rate limit

naddod.ts v2: complete rewrite from WooCommerce to Astro sitemap-based
- Discovers products via /sitemaps/products.xml (600+ products)
- URL format: /products/XXXXX.html
- Extracts 'In Stock: X' exact counts from SSR HTML
- Writes both price + stock observations (confidence 1 or 2)
2026-04-17 22:54:40 +02:00

18 lines
1.0 KiB
SQL

-- Migration 028: Extend stock_observations with full warehouse breakdown
-- Adds FS.com warehouse columns: DE-Lager, Global-Lager, Nachlieferung,
-- units_sold, compatible_brands, price_net, product_url.
-- NOTE: This migration was applied directly on Erik before being committed to the repo.
-- All ADD COLUMN statements use IF NOT EXISTS guards for safe re-application.
ALTER TABLE stock_observations
ADD COLUMN IF NOT EXISTS warehouse_de_qty INTEGER,
ADD COLUMN IF NOT EXISTS warehouse_de_delivery_date DATE,
ADD COLUMN IF NOT EXISTS warehouse_global_qty INTEGER,
ADD COLUMN IF NOT EXISTS warehouse_global_delivery_date DATE,
ADD COLUMN IF NOT EXISTS backorder_qty INTEGER,
ADD COLUMN IF NOT EXISTS backorder_estimated_date DATE,
ADD COLUMN IF NOT EXISTS units_sold BIGINT,
ADD COLUMN IF NOT EXISTS compatible_brands TEXT[],
ADD COLUMN IF NOT EXISTS price_net NUMERIC(12,4),
ADD COLUMN IF NOT EXISTS product_url TEXT;