fix(decode): recognize VXK WMI as Opel (PSA/Stellantis-platform Corsa F, Mokka B)

Customer entered VXKUPHNKSP4032040 (2023 Corsa F) and got a bare
'Marka desteklenmiyor' — VXK was missing from all three WMI maps, so
identifyBasic could not even name the brand. PL24's opel_parts catalog
ends at CORSA-E (2015-2019, verified via the model-picker page), so the
catalog itself stays a gap, but the user now gets the honest
'Opel 2023 olarak tanındı, katalog henüz mevcut değil' message and the
miss is logged for the coverage backlog.

- WMI_BRAND_MAP + PL24_WMI_SERVICE_MAP + EMEX CATALOG_MAP: VXK -> Opel
- DECODE_CHAIN_VERSION 2 -> 3 (brand-mapping change; invalidates the
  stale negative cache for the customer's VIN)
- vin-cache-keys.spec: lock-key assertion checked the bare version char,
  which now appears inside the test VIN — assert the ✌️ segment instead

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-06-10 12:36:51 +03:00
parent 02c8321023
commit c2dfa5cd2e
6 changed files with 7 additions and 2 deletions

View File

@@ -926,6 +926,7 @@ describe("getBrandFromWmi — RCA Q5 additions", () => {
["LSV", "Volkswagen"],
["LVV", "Chery"],
["ZCF", "Iveco"],
["VXK", "Opel"], // PSA/Stellantis-platform Opel (Corsa F 2023 customer case, 2026-06-10)
];
it.each(ADDED)("maps %s -> %s", (wmi, brand) => {
expect(getBrandFromWmi(wmi)).toBe(brand);

View File

@@ -118,6 +118,7 @@ export const WMI_BRAND_MAP: Record<string, string> = {
// Opel
W0L: "Opel",
W0V: "Opel", // newer Stellantis-era WMI
VXK: "Opel", // PSA/Stellantis-platform Opel (Corsa F, Mokka B — France/Spain plants)
// Skoda
TMB: "Skoda",
// Seat