This commit is contained in:
seb
2026-10-08 19:32:22 +02:00
parent f4ae04af15
commit c0a743654f

View File

@@ -555,9 +555,7 @@ export async function executeCompanyImport({
articlesWithPictures.push({ sku, pictureFiles: rawPics }); articlesWithPictures.push({ sku, pictureFiles: rawPics });
} }
if (i % 25 === 0 || i === totalArticles - 1) { onProgress('articles', i + 1, totalArticles, `${sku} - ${name}`);
onProgress('articles', i + 1, totalArticles, `${sku} - ${name}`);
}
} }
console.log(`[Import] Article pass 1 complete. New: ${articlesImported}, Updated: ${articlesUpdated}`); console.log(`[Import] Article pass 1 complete. New: ${articlesImported}, Updated: ${articlesUpdated}`);
@@ -712,27 +710,28 @@ export async function executeCompanyImport({
console.warn(`[Import] Failed to attach child ${childSku} to parent ${parentSku}:`, err.message); console.warn(`[Import] Failed to attach child ${childSku} to parent ${parentSku}:`, err.message);
} }
if (processedCount % 20 === 0 || processedCount === variantChildren.length) { onProgress('variants', processedCount, variantChildren.length, `${childSku} -> ${parentSku}`);
onProgress('variants', processedCount, variantChildren.length, `${childSku} -> ${parentSku}`);
}
} }
} }
console.log(`[Import] Linked ${variantsLinked}/${variantChildren.length} variants`); console.log(`[Import] Linked ${variantsLinked}/${variantChildren.length} variants`);
// ─── Phase 4: Article Pictures Import ──────────────────────────────────── // ─── Phase 4: Article Pictures Import ────────────────────────────────────
console.log(`[Import] Importing pictures for ${articlesWithPictures.length} articles...`); const imageTasks = [];
onProgress('images', 0, articlesWithPictures.length, 'Importing article pictures'); for (const { sku, pictureFiles } of articlesWithPictures) {
const lines = pictureFiles.replace(/\r/g, '\n').split('\n').map((l) => l.trim()).filter(Boolean);
for (const relPath of lines) {
imageTasks.push({ sku, relPath });
}
}
console.log(`[Import] Importing ${imageTasks.length} pictures for ${articlesWithPictures.length} articles...`);
onProgress('images', 0, imageTasks.length, 'Starting article pictures import');
let totalImagesImported = 0; let totalImagesImported = 0;
for (let i = 0; i < articlesWithPictures.length; i++) { for (let i = 0; i < imageTasks.length; i++) {
const { sku, pictureFiles } = articlesWithPictures[i]; const { sku, relPath } = imageTasks[i];
// Picture files may be separated by newline or semicolon const imgPath = path.join(importDir, relPath);
const lines = pictureFiles.replace(/\r/g, '\n').split('\n').map((l) => l.trim()).filter(Boolean); if (fs.existsSync(imgPath)) {
for (const relPath of lines) {
const imgPath = path.join(importDir, relPath);
if (!fs.existsSync(imgPath)) continue;
try { try {
const imgBuf = fs.readFileSync(imgPath); const imgBuf = fs.readFileSync(imgPath);
await store.article.addImage(googleAuthId, sku, imgBuf); await store.article.addImage(googleAuthId, sku, imgBuf);
@@ -742,10 +741,7 @@ export async function executeCompanyImport({
console.warn(`[Import] Image add failed for SKU ${sku} (${relPath}):`, err.message); console.warn(`[Import] Image add failed for SKU ${sku} (${relPath}):`, err.message);
} }
} }
onProgress('images', i + 1, imageTasks.length, `${sku} (${path.basename(relPath)})`);
if (i % 10 === 0 || i === articlesWithPictures.length - 1) {
onProgress('images', i + 1, articlesWithPictures.length, `SKU ${sku} (${lines.length} img)`);
}
} }
console.log(`[Import] Completed article pictures: ${totalImagesImported} images processed`); console.log(`[Import] Completed article pictures: ${totalImagesImported} images processed`);
@@ -825,15 +821,14 @@ export async function executeCompanyImport({
if (existingOrderNumbers.has(orderNumber)) { if (existingOrderNumbers.has(orderNumber)) {
ordersSkipped++; ordersSkipped++;
if (i % 50 === 0 || i === totalOrders - 1) { onProgress('orders', i + 1, totalOrders, `${orderNumber} (skipped)`);
onProgress('orders', i + 1, totalOrders, `${orderNumber} (skipped)`);
}
continue; continue;
} }
const rawItems = itemsByAuftrag.get(String(m.kAuftrag || '').trim()) || []; const rawItems = itemsByAuftrag.get(String(m.kAuftrag || '').trim()) || [];
if (rawItems.length === 0) { if (rawItems.length === 0) {
ordersSkipped++; ordersSkipped++;
onProgress('orders', i + 1, totalOrders, `${orderNumber} (skipped)`);
continue; continue;
} }
@@ -880,9 +875,7 @@ export async function executeCompanyImport({
console.warn(`[Import] Failed to create order ${orderNumber}:`, err.message); console.warn(`[Import] Failed to create order ${orderNumber}:`, err.message);
} }
if (i % 50 === 0 || i === totalOrders - 1) { onProgress('orders', i + 1, totalOrders, orderNumber);
onProgress('orders', i + 1, totalOrders, orderNumber);
}
} }
console.log(`[Import] Orders import complete: ${ordersImported} created, ${ordersSkipped} skipped`); console.log(`[Import] Orders import complete: ${ordersImported} created, ${ordersSkipped} skipped`);