From 06cda68929832d8734cda41612bd7faa8abf6df6 Mon Sep 17 00:00:00 2001 From: Mathieu Date: Thu, 11 Jun 2026 12:51:27 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20match=20UGS=20comme=20mot=20entier=20n'i?= =?UTF-8?q?mporte=20o=C3=B9=20dans=20le=20nom=20de=20fichier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/api/products/search-sheets/route.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/app/api/products/search-sheets/route.ts b/src/app/api/products/search-sheets/route.ts index a72b9b7..d54ae21 100644 --- a/src/app/api/products/search-sheets/route.ts +++ b/src/app/api/products/search-sheets/route.ts @@ -46,14 +46,12 @@ export async function GET(req: NextRequest) { // col C = UGS (index 2 car on commence à A) const ugs = (row[2] ?? '').trim() - // L'UGS doit correspondre exactement au début du nom de fichier, - // suivi d'un séparateur (-_. espace) ou de la fin — évite "30" de matcher "30827" + // L'UGS doit apparaître comme mot entier dans le nom de fichier + // (entouré de séparateurs ou en début/fin) — ex: "dessus-30827-vue" ✓, "308270" ✗ const refLower = ref.toLowerCase() const ugsLower = ugs.toLowerCase() - const isMatch = ugs && shopifyId && ( - refLower === ugsLower || - refLower.startsWith(ugsLower) && /^[-_. ]/.test(ref.slice(ugs.length)) - ) + const wordBoundary = new RegExp(`(^|[^a-z0-9])${ugsLower.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}([^a-z0-9]|$)`) + const isMatch = ugs && shopifyId && wordBoundary.test(refLower) if (isMatch) { const title = (row[3] ?? '').trim() // col D = Nom