Merge dev → main: surveys, P/OEM page, trial upsell, catalog-issue report, pcat timings #127

Merged
root merged 36 commits from merge-dev-to-main into main 2026-06-11 16:28:16 +03:00
6 changed files with 7 additions and 2 deletions
Showing only changes of commit c2dfa5cd2e - Show all commits

View File

@@ -348,6 +348,7 @@ export const CATALOG_MAP: Record<string, CatalogEntry> = {
// Opel
W0L: { code: "GM_OP201809", brand: "Opel" },
W0V: { code: "GM_OP201809", brand: "Opel" }, // newer Stellantis-era WMI
VXK: { code: "GM_OP201809", brand: "Opel" }, // PSA/Stellantis-platform Opel (Corsa F, Mokka B)
// Chevrolet
KL1: { code: "GM_C201809", brand: "Chevrolet" },
// SsangYong

View File

@@ -565,6 +565,7 @@ export const PL24_WMI_SERVICE_MAP: Record<string, string> = {
// Opel / Vauxhall
W0L: "opel_parts", // Opel AG (Germany)
W0V: "opel_parts", // Opel (newer Stellantis-era WMI)
VXK: "opel_parts", // PSA/Stellantis-platform Opel (Corsa F, Mokka B — France/Spain plants)
// Citroën (PSA)
VF7: "citroen_parts", // Citroën SA (France)

View File

@@ -16,7 +16,8 @@ describe("vinResolveCacheKeys (Q4)", () => {
it("keeps the in-flight lock key version-independent (cross-deploy dedupe)", () => {
const { lockKey } = vinResolveCacheKeys(VIN);
expect(lockKey).toBe(`vin:lock:${VIN}`);
expect(lockKey).not.toContain(DECODE_CHAIN_VERSION);
// The VIN itself may contain the version digit — check the segment, not the char.
expect(lockKey).not.toContain(`:${DECODE_CHAIN_VERSION}:`);
});
it("bumping the version changes the namespace (old entries become unreachable)", () => {

View File

@@ -13,7 +13,7 @@
* Both the decode path (VehiclesService) and the admin cache-buster
* (InternalVehiclesService) MUST build keys through here so they stay in sync.
*/
export const DECODE_CHAIN_VERSION = "2";
export const DECODE_CHAIN_VERSION = "3";
export function vinResolveCacheKeys(vin: string): {
cacheKey: string;

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