Rene Fichtmueller
931588fffd
fix(verification): 100% Verified Badge war dramatisch zu großzügig
KERNPROBLEME BEHOBEN:
1. ATGBICS part_number = URL slug statt echte OEM-Nummer
extractOemPartNumber() entfernt -r-compatible-transceiver-* Suffix
+ trailing Vendor-Namen (nokia, cisco, juniper, ...)
Ergebnis: 3he16564aa-nokia-r-compatible-transceiver-... → 3HE16564AA
2. reach_label = '' (leer) wurde als details_verified akzeptiert
IS NOT NULL erlaubt leere Strings → Fix: AND reach_label != ''
3. details_verified = true trotz garbled part_number
Neue Kriterien: NOT ILIKE '%-compatible-transceiver%'
NOT ILIKE '%-r-compatible%'
4. data_confidence Werte falsch in Funktion ('scraped_unverified' etc)
Echte Werte: low/medium/high/garbage → NOT IN ('garbage','unknown')
ERGEBNIS nach recompute_all_verification():
fully_verified: 3.654 → 581 (Badge war 6x übertrieben)
details_verified: inflated → 1.075 (korrekt)
ATGBICS Scraper:
- extractOemPartNumber() für collection und product detail pages
- detectReach() jetzt auch auf URL-slug (120km im slug → reach_label)
Price Anomaly Detection:
- API: price_anomaly field wenn max/min ratio ≥ 10x
- Dashboard: ⚠ Preisanomalie Banner mit Ratio + EUR Range
SQL 025: Part number cleanup (30 records), reach from slug (12 records)
2026-04-04 15:41:57 +02:00
..
2026-04-02 02:02:44 +02:00
2026-04-02 01:09:05 +02:00
2026-04-04 15:41:57 +02:00
2026-04-02 01:09:05 +02:00
2026-03-28 02:30:19 +13:00
2026-03-31 08:51:22 +02:00
2026-04-02 08:39:17 +02:00
2026-04-01 22:46:27 +02:00
2026-04-02 02:02:44 +02:00
2026-04-01 22:46:27 +02:00
2026-04-02 02:02:44 +02:00
2026-03-30 08:07:12 +02:00
2026-04-02 01:09:05 +02:00
2026-04-04 07:50:01 +02:00
2026-03-30 08:07:12 +02:00
2026-03-27 23:17:42 +13:00
2026-04-03 21:13:03 +02:00
2026-03-31 09:18:27 +02:00
2026-04-02 01:09:05 +02:00
2026-03-31 08:51:22 +02:00
2026-04-02 02:02:44 +02:00
2026-04-02 01:09:05 +02:00
2026-03-28 02:30:19 +13:00
2026-04-01 22:04:33 +02:00
2026-04-02 08:39:17 +02:00
2026-03-31 08:51:22 +02:00
2026-04-02 22:38:00 +02:00
2026-04-03 21:13:03 +02:00
2026-04-02 08:39:17 +02:00
2026-03-31 08:51:22 +02:00
2026-04-02 08:39:17 +02:00
2026-04-02 02:02:44 +02:00
2026-03-28 02:30:19 +13:00
2026-04-02 01:09:05 +02:00
2026-04-03 21:13:03 +02:00
2026-03-30 08:07:12 +02:00
2026-04-02 02:02:44 +02:00
2026-03-30 08:07:12 +02:00
2026-03-30 08:07:12 +02:00
2026-03-30 08:07:12 +02:00
2026-03-30 08:07:12 +02:00
2026-03-30 08:07:12 +02:00
2026-04-01 22:50:10 +02:00
2026-03-30 08:07:12 +02:00
2026-03-28 02:30:19 +13:00
2026-04-02 01:09:05 +02:00
2026-03-30 08:07:12 +02:00
2026-03-30 08:07:12 +02:00
2026-04-02 08:39:17 +02:00