← back to Designer Wallcoverings
kravet: feed MAP-reprice engine from LIVE FTP worklist, not frozen 2026-06-11 snapshot (TK-10014)
d450effe13e593cf0059ad0db81e88348b2c13fa · 2026-07-28 11:44:37 -0700 · Steve
- gen-kravet-worklist-from-ftp.sh regenerates the worklist from kravet_authoritative_pricing.new_map (source of truth)
- kravet-map-reprice.js prefers kravet-map-worklist-latest.csv (or --worklist path), falls back to frozen
- caught stale drift: DWKK-102778 frozen=460.35 vs live FTP=137.77
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Files touched
A shopify/scripts/gen-kravet-worklist-from-ftp.shM shopify/scripts/kravet-map-reprice.js
Diff
commit d450effe13e593cf0059ad0db81e88348b2c13fa
Author: Steve <steve@designerwallcoverings.com>
Date: Tue Jul 28 11:44:37 2026 -0700
kravet: feed MAP-reprice engine from LIVE FTP worklist, not frozen 2026-06-11 snapshot (TK-10014)
- gen-kravet-worklist-from-ftp.sh regenerates the worklist from kravet_authoritative_pricing.new_map (source of truth)
- kravet-map-reprice.js prefers kravet-map-worklist-latest.csv (or --worklist path), falls back to frozen
- caught stale drift: DWKK-102778 frozen=460.35 vs live FTP=137.77
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
shopify/scripts/gen-kravet-worklist-from-ftp.sh | 32 +++++++++++++++++++++++++
shopify/scripts/kravet-map-reprice.js | 11 ++++++++-
2 files changed, 42 insertions(+), 1 deletion(-)
diff --git a/shopify/scripts/gen-kravet-worklist-from-ftp.sh b/shopify/scripts/gen-kravet-worklist-from-ftp.sh
new file mode 100755
index 00000000..ae32303a
--- /dev/null
+++ b/shopify/scripts/gen-kravet-worklist-from-ftp.sh
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+# gen-kravet-worklist-from-ftp.sh (TK-10014, 2026-07-28)
+# Regenerates the kravet-map-reprice worklist from the LIVE FTP-authoritative table
+# (kravet_authoritative_pricing.new_map / new_whls) — the single source of truth —
+# instead of the frozen 2026-06-11 snapshot. Run this BEFORE kravet-map-reprice.js
+# so the Shopify push always targets the current Kravet FTP MAP.
+#
+# Output columns match the engine: shopify_id,dw_sku,brand,mfr_sku,cost_price,map,uom
+# ./gen-kravet-worklist-from-ftp.sh -> data/kravet-map-pricing/kravet-map-worklist-latest.csv
+set -uo pipefail
+DIR="$(cd "$(dirname "$0")" && pwd)"
+OUT="$DIR/data/kravet-map-pricing/kravet-map-worklist-latest.csv"
+mkdir -p "$(dirname "$OUT")"
+
+echo "shopify_id,dw_sku,brand,mfr_sku,cost_price,map,uom" > "$OUT"
+psql "host=/tmp dbname=dw_unified" -tA -F',' -c "
+select s.shopify_id,
+ s.dw_sku,
+ coalesce(s.vendor,''),
+ s.mfr_sku,
+ coalesce(k.new_whls::text,''),
+ k.new_map,
+ coalesce(s.metafields->'global'->'Unit of measure'->>'value','')
+from shopify_products s
+join kravet_authoritative_pricing k on k.mfr_sku = s.mfr_sku
+where s.dw_sku like 'DWKK-%' and s.status='ACTIVE'
+ and s.has_product_variant = true
+ and k.new_map is not null and k.new_map > 0
+order by s.dw_sku;" >> "$OUT"
+
+n=$(( $(wc -l < "$OUT") - 1 ))
+echo "wrote $n rows -> $OUT (source: kravet_authoritative_pricing.new_map @ $(date '+%F %T'))"
diff --git a/shopify/scripts/kravet-map-reprice.js b/shopify/scripts/kravet-map-reprice.js
index 4736eed3..262ea6bc 100644
--- a/shopify/scripts/kravet-map-reprice.js
+++ b/shopify/scripts/kravet-map-reprice.js
@@ -33,7 +33,16 @@ const path = require('path');
const args = process.argv.slice(2);
const APPLY = args.includes('--apply');
const LIMIT = (() => { const i = args.indexOf('--limit'); return i >= 0 ? parseInt(args[i + 1], 10) : Infinity; })();
-const CSV = path.join(__dirname, 'data', 'kravet-map-pricing', 'kravet-map-worklist-20260611.csv');
+// TK-10014: prefer the LIVE FTP-regenerated worklist (gen-kravet-worklist-from-ftp.sh)
+// over the frozen 2026-06-11 snapshot, so the push always targets the current Kravet FTP MAP.
+// Override with `--worklist <path>`.
+const CSV = (() => {
+ const wl = args.indexOf('--worklist');
+ if (wl >= 0 && args[wl + 1]) return args[wl + 1];
+ const latest = path.join(__dirname, 'data', 'kravet-map-pricing', 'kravet-map-worklist-latest.csv');
+ const frozen = path.join(__dirname, 'data', 'kravet-map-pricing', 'kravet-map-worklist-20260611.csv');
+ return fs.existsSync(latest) ? latest : frozen;
+})();
const TODAY = new Date().toISOString().slice(0, 10);
const env = fs.readFileSync(os.homedir() + '/Projects/secrets-manager/.env', 'utf8');
← 863c29dd auto-save: 2026-07-28T11:30:09 (1 files) — shopify/scripts/d
·
back to Designer Wallcoverings
·
kravet worklist: coalesce FTP new_map + GDrive master map_pr aec137bb →