From cb913b9d72e71e3eed5211a3dc5586061834654e Mon Sep 17 00:00:00 2001 From: Christian Vidal Wolf Date: Wed, 20 May 2026 14:56:55 +0200 Subject: [PATCH] restore cpnp values from history --- src/App.tsx | 1 + src/lib/supabase.ts | 29 +++++++++++++++++++++-------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index b233aae..4f573ee 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -323,6 +323,7 @@ export default function App() { [COLUMNS.ITEM_TO_LOGISTIC]: 'Item to Logistic', [COLUMNS.ANNA_CHECK]: 'Anna Check', [COLUMNS.ANNA_NOTE]: 'Anna Note', + [COLUMNS.CPNP_NO]: 'CPNP No.', }; Object.entries(VIRTUAL_COLS).forEach(([idxStr, name]) => { const idx = Number(idxStr); diff --git a/src/lib/supabase.ts b/src/lib/supabase.ts index 6f214ec..9e24ec2 100644 --- a/src/lib/supabase.ts +++ b/src/lib/supabase.ts @@ -279,16 +279,29 @@ export async function getHistory(): Promise { export async function getHistoryDataForMerge(): Promise> { try { - const response = await safeFetch( - `${SUPABASE_URL}/rest/v1/products_history?select=product_id,old_data,new_data,changed_at,id`, - { cache: 'no-store' } - ); + const PAGE_SIZE = 1000; + const entries: HistoryEntry[] = []; - if (!response.ok) { - console.error('[getHistoryDataForMerge] Error:', response.status); - return {}; + for (let page = 0; page < 20; page++) { + const offset = page * PAGE_SIZE; + const response = await safeFetch( + `${SUPABASE_URL}/rest/v1/products_history?select=product_id,old_data,new_data,changed_at,id&order=changed_at.asc&limit=${PAGE_SIZE}&offset=${offset}`, + { cache: 'no-store' } + ); + + if (!response.ok) { + console.error('[getHistoryDataForMerge] Error:', response.status); + return {}; + } + + const batch: HistoryEntry[] = await response.json(); + entries.push( + ...batch.filter((entry: HistoryEntry) => entry.product_id !== CONTROL_DASHBOARD_SNAPSHOT_PRODUCT_ID) + ); + + if (batch.length < PAGE_SIZE) break; } - const entries: HistoryEntry[] = (await response.json()).filter((entry: HistoryEntry) => entry.product_id !== CONTROL_DASHBOARD_SNAPSHOT_PRODUCT_ID); + entries.sort((a, b) => { const timeDelta = new Date(a.changed_at).getTime() - new Date(b.changed_at).getTime(); if (timeDelta !== 0) return timeDelta;