transceiver-db/sync/history/2026-05-10-tip-price-status-and-oem-detail-resolution.md
2026-05-10 01:16:49 +02:00

109 lines
2.8 KiB
Markdown

# 2026-05-10 — TIP Price Status + OEM Detail Resolution
## Part-Number Details Verifier
Added `packages/scraper/src/utils/verify-part-number-details.ts`.
Purpose:
- close detail gaps where form factor, reach and fiber are already present but `speed_gbps=0`
- use conservative part-number inference only
- write canonical `details` evidence with robot `verify:part-number-details`
Safety catch:
- Cisco `GLC-FE-*` appeared in dry-run
- these are Fast Ethernet, so the generic `GLC-* => 1G` rule was rejected
- final rule only infers 1G for safe patterns such as `GLC-SX`, `GLC-LX`, `GLC-LH`, `GLC-ZX`, `GLC-EX`, `GLC-BX`, `GLC-T`, `GLC-TE`
Live apply:
- Juniper Networks:
- `375` candidates updated
- `375` details verified
- Cisco Systems:
- `176` candidates updated
- `176` details verified
- evidence:
- `details | verify:part-number-details | 551`
Result:
- `details_verified` increased to `16913`
- Juniper detail gaps dropped from `173` to `43`
- Cisco detail gaps dropped from `146` to `80`
## Price Status Model
Added migration `sql/105-price-status-and-unavailable-evidence.sql`.
New fields:
- `transceivers.price_status`
- `transceivers.price_status_updated_at`
- `transceivers.price_unavailable_verified_at`
- `transceivers.price_unavailable_reason`
Allowed states:
- `public_price`
- `no_public_price`
- `needs_research`
- `ambiguous`
- `unknown`
Important semantic rule:
- `price_verified=true` still requires a real public price observation
- quote-only/OEM/no-checkout cases use `price_status=no_public_price`
- no price rows are fabricated
Added `price_unavailable` evidence type.
Added `packages/scraper/src/utils/resolve-price-availability.ts`.
Live apply:
- resolved quote-only/OEM/manufacturer/test-equipment/hyperscaler vendors to `no_public_price`
- wrote `5361` `price_unavailable` evidence rows
- preserved real retail/source-discovery vendors as `needs_research`
Health API now exposes:
- `price_status.public_price`
- `price_status.no_public_price`
- `price_status.ambiguous`
- `price_status.needs_research`
Live health after this pass:
- active products: `17195`
- price verified: `11414`
- price status:
- `public_price=11414`
- `no_public_price=5595`
- `needs_research=186`
- `ambiguous=0`
- image verified: `12104`
- details verified: `16913`
- fully verified: `10505`
- competitor status:
- `matched=10775`
- `no_valid_match=74`
- `ambiguous=556`
- `needs_research=5790`
Remaining price research:
- `10Gtek=126`
- `SFPcables=31`
- `ShopFiber24=24`
- `ATGBICS=3`
- `Vcelink=2`
Interpretation:
- remaining price work is now real retail/source discovery
- SFPcables search tests for 10Gtek part numbers did not return reliable direct hits
- 10Gtek requires a source/alias discovery robot rather than no-public-price classification