From 3f81081d88aa9ff57466f806d7f6ab6f89f66d5a Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Sat, 18 Apr 2026 01:52:06 +0000 Subject: [PATCH] Changes Co-authored-by: renee-png <262607627+renee-png@users.noreply.github.com> --- src/routes/settings.import.tsx | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/src/routes/settings.import.tsx b/src/routes/settings.import.tsx index 535d3d1..30bee66 100644 --- a/src/routes/settings.import.tsx +++ b/src/routes/settings.import.tsx @@ -549,12 +549,34 @@ function ImportPage() { const rawRows = parsed.data; const headers = parsed.meta.fields ?? []; - // Build header → db column map + // Allowed target columns = mapped alias targets + transform helper fields. + // Anything else (unknown columns / missing schema) is silently skipped. + const allowedTargets = new Set([ + ...Object.values(cfg.aliases), + ...(cfg.numeric ?? []), + ...(cfg.dateCols ?? []), + ...(cfg.datetimeCols ?? []), + ...(cfg.boolCols ?? []), + ...cfg.required, + "external_id", + "created_by", + ]); + // Build header → db column map (only keep known targets) const headerMap: Record = {}; + const unknownHeaders: string[] = []; for (const h of headers) { const n = norm(h); - const target = cfg.aliases[n] ?? n; - headerMap[h] = target; + const target = cfg.aliases[n]; + if (target && allowedTargets.has(target)) { + headerMap[h] = target; + } else if (allowedTargets.has(n)) { + headerMap[h] = n; + } else { + unknownHeaders.push(h); + } + } + if (unknownHeaders.length > 0) { + console.info(`[import:${cfg.key}] skipped unknown columns:`, unknownHeaders); } const mapped: Row[] = [];