fix(catalog): catch basePath-prefixed external nav-crumb in read filter

Nissan's "Repair & Maintenance Information" persists as
`/nissan/nissan_parts/https://eu.nissan.biz/` — the parser prefixes the
external URL with basePath, so the anchored ^https check in isNavCrumbLink
missed it. Match `://` anywhere (non-.action) instead; real PL24 linkPaths
are relative and never contain `://`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-05 14:39:10 +03:00
parent 4dabf97f89
commit 69251edc45

View File

@@ -1242,9 +1242,12 @@ export class CatalogService {
if (/(portal|logout)\.action/i.test(linkPath)) return true;
if (/vehicle\.action/i.test(linkPath)) return true;
if (linkPath.includes("vin-group.action") && !linkPath.includes("group1=")) return true;
// External absolute URL that is not a partslink .action endpoint
// (e.g. Nissan "Repair & Maintenance Information" → https://eu.nissan.biz/).
if (/^https?:\/\//i.test(linkPath) && !/\.action(\?|$)/i.test(linkPath)) return true;
// External absolute URL embedded anywhere that is not a partslink .action
// endpoint. Nissan's "Repair & Maintenance Information" comes back as
// `/nissan/nissan_parts/https://eu.nissan.biz/` — the basePath prefix means an
// anchored ^https check misses it, so match `://` anywhere. Real PL24 linkPaths
// are relative (group.action / json-*.action / pcat: / emex:) and never contain `://`.
if (linkPath.includes("://") && !/\.action(\?|$)/i.test(linkPath)) return true;
return false;
}