mirror of
https://github.com/samsonjs/spirit-tracker.git
synced 2026-03-25 09:25:51 +00:00
feat: Dont abort commits on sku change
This commit is contained in:
parent
16a2a497c0
commit
9f078e9d05
4 changed files with 16 additions and 4 deletions
|
|
@ -160,7 +160,8 @@ async function main() {
|
|||
(report?.totals?.newCount || 0) +
|
||||
(report?.totals?.updatedCount || 0) +
|
||||
(report?.totals?.removedCount || 0) +
|
||||
(report?.totals?.restoredCount || 0) >
|
||||
(report?.totals?.restoredCount || 0) +
|
||||
(report?.totals?.metaChangedCount || 0) >
|
||||
0;
|
||||
|
||||
const reportTextColor = renderFinalReport(report, {
|
||||
|
|
|
|||
|
|
@ -345,7 +345,8 @@ async function discoverAndScanCategory(ctx, prevDb, report) {
|
|||
|
||||
logger.ok(`${ctx.catPrefixOut} | Unique products (this run): ${discovered.size}${dups ? ` (${dups} dups)` : ""}`);
|
||||
|
||||
const { merged, newItems, updatedItems, removedItems, restoredItems } = mergeDiscoveredIntoDb(prevDb, discovered, { storeLabel: ctx.store.name });
|
||||
const { merged, newItems, updatedItems, removedItems, restoredItems, metaChangedItems } =
|
||||
mergeDiscoveredIntoDb(prevDb, discovered, { storeLabel: ctx.store.name });
|
||||
|
||||
const dbObj = buildDbObject(ctx, merged);
|
||||
writeJsonAtomic(ctx.dbFile, dbObj);
|
||||
|
|
@ -368,12 +369,14 @@ async function discoverAndScanCategory(ctx, prevDb, report) {
|
|||
updatedCount: updatedItems.length,
|
||||
removedCount: removedItems.length,
|
||||
restoredCount: restoredItems.length,
|
||||
metaChangedCount: metaChangedItems.length,
|
||||
elapsedMs: elapsed,
|
||||
});
|
||||
report.totals.newCount += newItems.length;
|
||||
report.totals.updatedCount += updatedItems.length;
|
||||
report.totals.removedCount += removedItems.length;
|
||||
report.totals.restoredCount += restoredItems.length;
|
||||
report.totals.metaChangedCount += metaChangedItems.length;
|
||||
|
||||
addCategoryResultToReport(report, ctx.store.name, ctx.cat.label, newItems, updatedItems, removedItems, restoredItems);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ function mergeDiscoveredIntoDb(prevDb, discovered, { storeLabel } = {}) {
|
|||
const updatedItems = [];
|
||||
const removedItems = [];
|
||||
const restoredItems = [];
|
||||
const metaChangedItems = [];
|
||||
|
||||
// Choose a deterministic "best" record among dup active SKU rows.
|
||||
// Prefer: more complete fields, then lexicographically smallest URL.
|
||||
|
|
@ -177,6 +178,13 @@ function mergeDiscoveredIntoDb(prevDb, discovered, { storeLabel } = {}) {
|
|||
oldPrice: prev.price || "",
|
||||
newPrice: nowRaw.price || "",
|
||||
});
|
||||
} else if (nameChanged || skuChanged || imgChanged || prevUrlForThisItem !== url) {
|
||||
// Count non-price changes (SKU upgrades, name/img changes, or URL moves) as meaningful.
|
||||
metaChangedItems.push({
|
||||
url,
|
||||
name: nowRaw.name || prev.name || "",
|
||||
sku: nowSku || "",
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -195,7 +203,7 @@ function mergeDiscoveredIntoDb(prevDb, discovered, { storeLabel } = {}) {
|
|||
}
|
||||
}
|
||||
|
||||
return { merged, newItems, updatedItems, removedItems, restoredItems };
|
||||
return { merged, newItems, updatedItems, removedItems, restoredItems, metaChangedItems };
|
||||
}
|
||||
|
||||
module.exports = { mergeDiscoveredIntoDb };
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ function createReport() {
|
|||
return {
|
||||
startedAt: new Date(),
|
||||
categories: [],
|
||||
totals: { newCount: 0, updatedCount: 0, removedCount: 0, restoredCount: 0 },
|
||||
totals: { newCount: 0, updatedCount: 0, removedCount: 0, restoredCount: 0, metaChangedCount: 0 },
|
||||
newItems: [],
|
||||
updatedItems: [],
|
||||
removedItems: [],
|
||||
|
|
|
|||
Loading…
Reference in a new issue