Rene Fichtmueller
d1bde66e39
feat: deterministic equivalence matcher + full wavelength/connector enrichment
Replace confidence-based matcher with deterministic 6-field exact match:
- form_factor (exact), speed_gbps (±0.1G), fiber_type (exact),
reach (±10%), wavelength_tx (±5nm), connector_type (exact)
- Complete products → confidence=1.0, never creates pending records
- Incomplete products → enhanced confidence ≥0.85, still auto_approved
- PENDING CREATED: 0 (by design, permanent)
Migrations:
- sql/113: Connector type inference from IEEE lookup + form-factor rules
(970→479 missing connector for FX products)
- sql/114: Extend IEEE lookup with 400G/800G/1.6T OSFP/QSFP-DD standards,
wavelength fallback (SMF→1310nm, MMF→850nm), clear pending queue to 0
Enrichment results (before→after):
- FX fully complete: 50 → 555 / 1,089 (+505)
- Total fully complete: ~3,600 → 15,431 / 18,133 (+11,800)
- FX coverage: 54.7% → 55.8% (608/1,089 matched)
- Deterministic matches: 0 → 44,596 (confidence=1.0)
- Wavelength-mismatched records rejected: 521
- Pending queue: 42 → 0 (permanent)
New match stats:
- 55,743 new deterministic auto_approved matches
- 521 legacy wavelength-mismatch records rejected
- Total active: 53,447 auto_approved + 1,987 approved
2026-05-13 17:59:08 +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