← back to Mfr Review Viewer Corruption
suggest the correct REAL mfr NUMBER in the list: FileMaker-own-record enrichment (enrich-suggestions.mjs) + real-code filter (has digit, no spaces, not a filename) + list prefers it + live in-place poller with coverage banner
e65092a359bc43a5b0ff98adf5116fad8dd82495 · 2026-08-27 18:04:32 -0700 · Steve Abrams
Files touched
M data/queue.jsonlM lib/candidates.mjsM public/index.htmlA scripts/enrich-suggestions.mjs
Diff
commit e65092a359bc43a5b0ff98adf5116fad8dd82495
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Thu Aug 27 18:04:32 2026 -0700
suggest the correct REAL mfr NUMBER in the list: FileMaker-own-record enrichment (enrich-suggestions.mjs) + real-code filter (has digit, no spaces, not a filename) + list prefers it + live in-place poller with coverage banner
---
data/queue.jsonl | 90 +++++++++++++++++++++---------------------
lib/candidates.mjs | 15 +++++--
public/index.html | 30 +++++++++++++-
scripts/enrich-suggestions.mjs | 57 ++++++++++++++++++++++++++
4 files changed, 143 insertions(+), 49 deletions(-)
diff --git a/data/queue.jsonl b/data/queue.jsonl
index a3da74c..0dd5d9e 100644
--- a/data/queue.jsonl
+++ b/data/queue.jsonl
@@ -1,48 +1,48 @@
-{"dw_sku":"DWC-1001210","bad_mfr":"1001210","vendor":"1838 Wallcoverings","pattern_name":"Avington","created_at":"2020-10-02T13:54:39Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"DWC-1001211","bad_mfr":"1001211","vendor":"1838 Wallcoverings","pattern_name":"Brodworth","created_at":"2020-10-02T13:54:40Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"DWC-1001212","bad_mfr":"1001212","vendor":"1838 Wallcoverings","pattern_name":"Broughton","created_at":"2020-10-02T13:54:41Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"DWC-1001213","bad_mfr":"1001213","vendor":"1838 Wallcoverings","pattern_name":"Chatsworth","created_at":"2020-10-02T13:54:43Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"DWC-1001214","bad_mfr":"1001214","vendor":"1838 Wallcoverings","pattern_name":"Harewood","created_at":"2020-10-02T13:54:44Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"AMA-52507","bad_mfr":"52507","vendor":"British Walls","pattern_name":"Wood Stumps","created_at":"2018-09-30T00:35:05Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"BGA-47908","bad_mfr":"47908","vendor":"British Walls","pattern_name":"All Star Fabric","created_at":"2018-09-30T11:46:54Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"BGA-47911","bad_mfr":"47911","vendor":"British Walls","pattern_name":"All Star Wallcovering","created_at":"2018-09-30T11:47:44Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"BGA-47914","bad_mfr":"47914","vendor":"British Walls","pattern_name":"All Star Wallcovering","created_at":"2018-09-30T11:47:37Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"BGA-47948","bad_mfr":"47948","vendor":"British Walls","pattern_name":"Butterflies Fabric","created_at":"2018-09-30T11:52:03Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"BGA-47951","bad_mfr":"47951","vendor":"British Walls","pattern_name":"Deer Damask","created_at":"2018-09-30T11:52:25Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"BGA-47966","bad_mfr":"47966","vendor":"British Walls","pattern_name":"Deer Damask Cushion","created_at":"2018-09-30T11:54:16Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"BGA-47969","bad_mfr":"47969","vendor":"British Walls","pattern_name":"Honey Bees Pillow Cushion","created_at":"2018-09-30T11:54:31Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"BGA-47971","bad_mfr":"47971","vendor":"British Walls","pattern_name":"Honey Bees Pillow Cushion","created_at":"2018-09-30T11:54:38Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"BGA-47975","bad_mfr":"47975","vendor":"British Walls","pattern_name":"All Star Pillow Cushion","created_at":"2018-09-30T11:55:07Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"BGA-47984","bad_mfr":"47984","vendor":"British Walls","pattern_name":"Deer Damask Fabric","created_at":"2018-09-30T11:56:08Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ELE-42807","bad_mfr":"42807","vendor":"British Walls","pattern_name":"Ala Messina","created_at":"2018-09-30T14:38:13Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ELE-42810","bad_mfr":"42810","vendor":"British Walls","pattern_name":"Ala Padua","created_at":"2018-09-30T14:38:24Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ELE-42822","bad_mfr":"42822","vendor":"British Walls","pattern_name":"Ala Prato","created_at":"2018-09-30T14:39:06Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ELE-42825","bad_mfr":"42825","vendor":"British Walls","pattern_name":"Ala Reggio","created_at":"2018-09-30T14:39:17Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ELE-42827","bad_mfr":"42827","vendor":"British Walls","pattern_name":"Ala Rimimi","created_at":"2018-09-30T14:39:24Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ELE-42830","bad_mfr":"42830","vendor":"British Walls","pattern_name":"Ala Sassari","created_at":"2018-09-30T14:39:28Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ELE-42832","bad_mfr":"42832","vendor":"British Walls","pattern_name":"Ala Perugia","created_at":"2018-09-30T14:39:35Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ELE-42836","bad_mfr":"42836","vendor":"British Walls","pattern_name":"Ala Taranto","created_at":"2018-09-30T14:39:50Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ELE-42840","bad_mfr":"42840","vendor":"British Walls","pattern_name":"Ala Ferrara","created_at":"2018-09-30T14:40:05Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERE-44528","bad_mfr":"44528","vendor":"British Walls","pattern_name":"Place de Concorde","created_at":"2018-09-30T11:17:03Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERE-44537","bad_mfr":"44537","vendor":"British Walls","pattern_name":"Place de Concorde","created_at":"2018-09-30T11:18:00Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERE-44540","bad_mfr":"44540","vendor":"British Walls","pattern_name":"Place Vendome","created_at":"2018-09-30T11:18:18Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERE-44541","bad_mfr":"44541","vendor":"British Walls","pattern_name":"Place Dauphine","created_at":"2018-09-30T11:18:25Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERE-44546","bad_mfr":"44546","vendor":"British Walls","pattern_name":"Place Dauphine","created_at":"2018-09-30T11:18:56Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERE-44562","bad_mfr":"44562","vendor":"British Walls","pattern_name":"Chateau de Breteauil","created_at":"2018-09-30T11:20:29Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERE-44565","bad_mfr":"44565","vendor":"British Walls","pattern_name":"Chateau de Breteauil","created_at":"2018-09-30T11:20:47Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERE-44580","bad_mfr":"44580","vendor":"British Walls","pattern_name":"Maison Lafitte","created_at":"2018-09-30T11:22:14Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERE-44581","bad_mfr":"44581","vendor":"British Walls","pattern_name":"Maison Lafitte Tile Print","created_at":"2018-09-30T11:22:19Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERE-44582","bad_mfr":"44582","vendor":"British Walls","pattern_name":"Maison Lafitte Tile Print","created_at":"2018-09-30T11:22:25Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERE-44588","bad_mfr":"44588","vendor":"British Walls","pattern_name":"Maison Mira","created_at":"2018-09-30T11:23:00Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERE-44609","bad_mfr":"44609","vendor":"British Walls","pattern_name":"Saint de Gavoy","created_at":"2018-09-30T11:27:18Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERE-44611","bad_mfr":"44611","vendor":"British Walls","pattern_name":"Saint de Gavoy","created_at":"2018-09-30T11:27:31Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERE-44634","bad_mfr":"44634","vendor":"British Walls","pattern_name":"Lucerne Classic","created_at":"2018-09-30T11:29:48Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERE-44641","bad_mfr":"44641","vendor":"British Walls","pattern_name":"Geneva","created_at":"2018-09-30T11:30:35Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERE-44643","bad_mfr":"44643","vendor":"British Walls","pattern_name":"Geneva","created_at":"2018-09-30T11:30:47Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERU-43001","bad_mfr":"43001","vendor":"British Walls","pattern_name":"Leonardo's Landscape Wallcoverings","created_at":"2018-09-30T14:19:02Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERU-43002","bad_mfr":"43002","vendor":"British Walls","pattern_name":"Leonardo's Landscape Wallcoverings","created_at":"2018-09-30T14:19:09Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERU-43005","bad_mfr":"43005","vendor":"British Walls","pattern_name":"Luciano Damask","created_at":"2018-09-30T14:19:29Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
-{"dw_sku":"ERU-43009","bad_mfr":"43009","vendor":"British Walls","pattern_name":"Starlight Express Hollywood","created_at":"2018-09-30T14:19:55Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
+{"dw_sku":"DWC-1001210","bad_mfr":"1001210","vendor":"1838 Wallcoverings","pattern_name":"Avington","created_at":"2020-10-02T13:54:39Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":""}
+{"dw_sku":"DWC-1001211","bad_mfr":"1001211","vendor":"1838 Wallcoverings","pattern_name":"Brodworth","created_at":"2020-10-02T13:54:40Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":""}
+{"dw_sku":"DWC-1001212","bad_mfr":"1001212","vendor":"1838 Wallcoverings","pattern_name":"Broughton","created_at":"2020-10-02T13:54:41Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":""}
+{"dw_sku":"DWC-1001213","bad_mfr":"1001213","vendor":"1838 Wallcoverings","pattern_name":"Chatsworth","created_at":"2020-10-02T13:54:43Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":""}
+{"dw_sku":"DWC-1001214","bad_mfr":"1001214","vendor":"1838 Wallcoverings","pattern_name":"Harewood","created_at":"2020-10-02T13:54:44Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":""}
+{"dw_sku":"AMA-52507","bad_mfr":"52507","vendor":"British Walls","pattern_name":"Wood Stumps","created_at":"2018-09-30T00:35:05Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":"130557"}
+{"dw_sku":"BGA-47908","bad_mfr":"47908","vendor":"British Walls","pattern_name":"All Star Fabric","created_at":"2018-09-30T11:46:54Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":"161046"}
+{"dw_sku":"BGA-47911","bad_mfr":"47911","vendor":"British Walls","pattern_name":"All Star Wallcovering","created_at":"2018-09-30T11:47:44Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":"161049"}
+{"dw_sku":"BGA-47914","bad_mfr":"47914","vendor":"British Walls","pattern_name":"All Star Wallcovering","created_at":"2018-09-30T11:47:37Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":"161052"}
+{"dw_sku":"BGA-47948","bad_mfr":"47948","vendor":"British Walls","pattern_name":"Butterflies Fabric","created_at":"2018-09-30T11:52:03Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":"161086"}
+{"dw_sku":"BGA-47951","bad_mfr":"47951","vendor":"British Walls","pattern_name":"Deer Damask","created_at":"2018-09-30T11:52:25Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":"161089"}
+{"dw_sku":"BGA-47966","bad_mfr":"47966","vendor":"British Walls","pattern_name":"Deer Damask Cushion","created_at":"2018-09-30T11:54:16Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":"161104"}
+{"dw_sku":"BGA-47969","bad_mfr":"47969","vendor":"British Walls","pattern_name":"Honey Bees Pillow Cushion","created_at":"2018-09-30T11:54:31Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":"161107"}
+{"dw_sku":"BGA-47971","bad_mfr":"47971","vendor":"British Walls","pattern_name":"Honey Bees Pillow Cushion","created_at":"2018-09-30T11:54:38Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":"161109"}
+{"dw_sku":"BGA-47975","bad_mfr":"47975","vendor":"British Walls","pattern_name":"All Star Pillow Cushion","created_at":"2018-09-30T11:55:07Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":"161113"}
+{"dw_sku":"BGA-47984","bad_mfr":"47984","vendor":"British Walls","pattern_name":"Deer Damask Fabric","created_at":"2018-09-30T11:56:08Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":"161122"}
+{"dw_sku":"ELE-42807","bad_mfr":"42807","vendor":"British Walls","pattern_name":"Ala Messina","created_at":"2018-09-30T14:38:13Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":""}
+{"dw_sku":"ELE-42810","bad_mfr":"42810","vendor":"British Walls","pattern_name":"Ala Padua","created_at":"2018-09-30T14:38:24Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":""}
+{"dw_sku":"ELE-42822","bad_mfr":"42822","vendor":"British Walls","pattern_name":"Ala Prato","created_at":"2018-09-30T14:39:06Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":""}
+{"dw_sku":"ELE-42825","bad_mfr":"42825","vendor":"British Walls","pattern_name":"Ala Reggio","created_at":"2018-09-30T14:39:17Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":""}
+{"dw_sku":"ELE-42827","bad_mfr":"42827","vendor":"British Walls","pattern_name":"Ala Rimimi","created_at":"2018-09-30T14:39:24Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":""}
+{"dw_sku":"ELE-42830","bad_mfr":"42830","vendor":"British Walls","pattern_name":"Ala Sassari","created_at":"2018-09-30T14:39:28Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":""}
+{"dw_sku":"ELE-42832","bad_mfr":"42832","vendor":"British Walls","pattern_name":"Ala Perugia","created_at":"2018-09-30T14:39:35Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":""}
+{"dw_sku":"ELE-42836","bad_mfr":"42836","vendor":"British Walls","pattern_name":"Ala Taranto","created_at":"2018-09-30T14:39:50Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":""}
+{"dw_sku":"ELE-42840","bad_mfr":"42840","vendor":"British Walls","pattern_name":"Ala Ferrara","created_at":"2018-09-30T14:40:05Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"","suggested_src":"none","suggested_keep_rid":""}
+{"dw_sku":"ERE-44528","bad_mfr":"44528","vendor":"British Walls","pattern_name":"Place de Concorde","created_at":"2018-09-30T11:17:03Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"p622_07","suggested_src":"filemaker-own","suggested_keep_rid":"158442"}
+{"dw_sku":"ERE-44537","bad_mfr":"44537","vendor":"British Walls","pattern_name":"Place de Concorde","created_at":"2018-09-30T11:18:00Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"p622_16","suggested_src":"filemaker-own","suggested_keep_rid":"158451"}
+{"dw_sku":"ERE-44540","bad_mfr":"44540","vendor":"British Walls","pattern_name":"Place Vendome","created_at":"2018-09-30T11:18:18Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"pdg646_01","suggested_src":"filemaker-own","suggested_keep_rid":"158454"}
+{"dw_sku":"ERE-44541","bad_mfr":"44541","vendor":"British Walls","pattern_name":"Place Dauphine","created_at":"2018-09-30T11:18:25Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"pdg646_02","suggested_src":"filemaker-own","suggested_keep_rid":"158455"}
+{"dw_sku":"ERE-44546","bad_mfr":"44546","vendor":"British Walls","pattern_name":"Place Dauphine","created_at":"2018-09-30T11:18:56Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"pdg646_07","suggested_src":"filemaker-own","suggested_keep_rid":"158460"}
+{"dw_sku":"ERE-44562","bad_mfr":"44562","vendor":"British Walls","pattern_name":"Chateau de Breteauil","created_at":"2018-09-30T11:20:29Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"pcl008_02","suggested_src":"filemaker-own","suggested_keep_rid":"379503"}
+{"dw_sku":"ERE-44565","bad_mfr":"44565","vendor":"British Walls","pattern_name":"Chateau de Breteauil","created_at":"2018-09-30T11:20:47Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"pcl008_05","suggested_src":"filemaker-own","suggested_keep_rid":"158479"}
+{"dw_sku":"ERE-44580","bad_mfr":"44580","vendor":"British Walls","pattern_name":"Maison Lafitte","created_at":"2018-09-30T11:22:14Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"pcl013_01","suggested_src":"filemaker-own","suggested_keep_rid":"396502"}
+{"dw_sku":"ERE-44581","bad_mfr":"44581","vendor":"British Walls","pattern_name":"Maison Lafitte Tile Print","created_at":"2018-09-30T11:22:19Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"pcl014_01","suggested_src":"filemaker-own","suggested_keep_rid":"340518"}
+{"dw_sku":"ERE-44582","bad_mfr":"44582","vendor":"British Walls","pattern_name":"Maison Lafitte Tile Print","created_at":"2018-09-30T11:22:25Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"pcl014_02","suggested_src":"filemaker-own","suggested_keep_rid":"158496"}
+{"dw_sku":"ERE-44588","bad_mfr":"44588","vendor":"British Walls","pattern_name":"Maison Mira","created_at":"2018-09-30T11:23:00Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"pcl015_01","suggested_src":"filemaker-own","suggested_keep_rid":"457960"}
+{"dw_sku":"ERE-44609","bad_mfr":"44609","vendor":"British Walls","pattern_name":"Saint de Gavoy","created_at":"2018-09-30T11:27:18Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"pcl018_04","suggested_src":"filemaker-own","suggested_keep_rid":"158523"}
+{"dw_sku":"ERE-44611","bad_mfr":"44611","vendor":"British Walls","pattern_name":"Saint de Gavoy","created_at":"2018-09-30T11:27:31Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"pcl018_06","suggested_src":"filemaker-own","suggested_keep_rid":"158525"}
+{"dw_sku":"ERE-44634","bad_mfr":"44634","vendor":"British Walls","pattern_name":"Lucerne Classic","created_at":"2018-09-30T11:29:48Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"pcl661_01","suggested_src":"filemaker-own","suggested_keep_rid":"158548"}
+{"dw_sku":"ERE-44641","bad_mfr":"44641","vendor":"British Walls","pattern_name":"Geneva","created_at":"2018-09-30T11:30:35Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"pcl663_01","suggested_src":"filemaker-own","suggested_keep_rid":"158555"}
+{"dw_sku":"ERE-44643","bad_mfr":"44643","vendor":"British Walls","pattern_name":"Geneva","created_at":"2018-09-30T11:30:47Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"pcl663_03","suggested_src":"filemaker-own","suggested_keep_rid":"158557"}
+{"dw_sku":"ERU-43001","bad_mfr":"43001","vendor":"British Walls","pattern_name":"Leonardo's Landscape Wallcoverings","created_at":"2018-09-30T14:19:02Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"ncw4200-02","suggested_src":"filemaker-own","suggested_keep_rid":"174573"}
+{"dw_sku":"ERU-43002","bad_mfr":"43002","vendor":"British Walls","pattern_name":"Leonardo's Landscape Wallcoverings","created_at":"2018-09-30T14:19:09Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"ncw4200-03","suggested_src":"filemaker-own","suggested_keep_rid":"174574"}
+{"dw_sku":"ERU-43005","bad_mfr":"43005","vendor":"British Walls","pattern_name":"Luciano Damask","created_at":"2018-09-30T14:19:29Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"ncw4201-03","suggested_src":"filemaker-own","suggested_keep_rid":"174577"}
+{"dw_sku":"ERU-43009","bad_mfr":"43009","vendor":"British Walls","pattern_name":"Starlight Express Hollywood","created_at":"2018-09-30T14:19:55Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3","suggested_real_mfr":"ncw4202-02","suggested_src":"filemaker-own","suggested_keep_rid":"174581"}
{"dw_sku":"ERU-43012","bad_mfr":"43012","vendor":"British Walls","pattern_name":"Starlight Express Hollywood","created_at":"2018-09-30T14:20:14Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
{"dw_sku":"ERU-43013","bad_mfr":"43013","vendor":"British Walls","pattern_name":"Starlight Express Hollywood","created_at":"2018-09-30T14:20:21Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
{"dw_sku":"ERU-43014","bad_mfr":"43014","vendor":"British Walls","pattern_name":"MIllionaire Marble","created_at":"2018-09-30T14:20:28Z","best_guess_real_mfr":"","source":"none","confidence":"needs-review","tier":"TIER-3"}
diff --git a/lib/candidates.mjs b/lib/candidates.mjs
index a21d1ab..63670da 100644
--- a/lib/candidates.mjs
+++ b/lib/candidates.mjs
@@ -279,10 +279,19 @@ export async function candidatesForSku(dwSku) {
const own = recs.filter((r) => r.skuMatch);
const isKeepWorthy = (r) => r.sampleOrdered || (!r.mfrPlaceholder && /[A-Za-z]/.test(r.noteMfr || r.mfrPattern || ''));
const keepers = own.filter(isKeepWorthy);
+ // A REAL mfr code (Steve wants a mfr NUMBER, not a pattern name / description / image
+ // filename): non-empty, no spaces, not an image filename, <=24 chars, and CONTAINS a
+ // digit. Keeps gz127 / AD10002 / GLM51317 / SG3-Gold / SBR1-Chocolate; rejects
+ // "Lumberjack", "allstar fabric candy", "allstardetail1gunmetal.jpg".
+ const isRealCode = (s) => {
+ s = String(s || '').trim();
+ return !!s && !/\s/.test(s) && !/\.(jpe?g|png|gif|tiff?)$/i.test(s) && s.length <= 24 && /\d/.test(s);
+ };
// the correct real mfr to SUGGEST into the field: prefer a sample-ordered own record's
- // real code, else any own record's real code. Only ever from THIS SKU's own records.
- const realSrc = keepers.find((r) => r.sampleOrdered && /[A-Za-z]/.test(r.noteMfr || '')) || keepers.find((r) => /[A-Za-z]/.test(r.noteMfr || ''));
- const realMfr = realSrc ? (realSrc.noteMfr || realSrc.mfrPattern || '') : '';
+ // real code, else any own record's real code. Only ever from THIS SKU's own records,
+ // and only when it actually LOOKS like a mfr number (else leave blank = needs lookup).
+ const realSrc = keepers.find((r) => r.sampleOrdered && isRealCode(r.noteMfr)) || keepers.find((r) => isRealCode(r.noteMfr));
+ const realMfr = realSrc ? String(realSrc.noteMfr).trim() : '';
const keepRid = realSrc ? String(realSrc.recordId) : (keepers[0] ? String(keepers[0].recordId) : '');
const canPrune = keepers.length > 0; // guard: only suggest deletes if a keeper survives
for (const r of recs) {
diff --git a/public/index.html b/public/index.html
index 51e668a..b086fc0 100644
--- a/public/index.html
+++ b/public/index.html
@@ -328,6 +328,31 @@ async function load(){
const r = await fetch('api/queue'); const j = await r.json();
state.rows = j.rows; state.facets = j.facets;
renderFacets(); apply();
+ if(!window._suggPoll){ window._suggPoll=setInterval(pollSuggestions, 15000); pollSuggestions(); }
+}
+
+// Poll the queue for freshly-enriched suggested mfrs (the enrich-suggestions batch
+// writes them into data/queue.jsonl progressively) and fill the on-screen cells in
+// place — no disruptive re-render, never clobbering a manual edit.
+async function pollSuggestions(){
+ try{
+ const r=await fetch('api/queue'); const j=await r.json();
+ const map=new Map((j.rows||[]).map(x=>[x.dw_sku,x]));
+ let covered=0;
+ for(const x of (j.rows||[])) if(x.suggested_real_mfr) covered++;
+ for(const row of state.rows){ const u=map.get(row.dw_sku); if(u){ row.suggested_real_mfr=u.suggested_real_mfr; row.suggested_src=u.suggested_src; row.suggested_keep_rid=u.suggested_keep_rid; } }
+ for(const el of document.querySelectorAll('.lrow')){
+ const sku=el.querySelector('.dw')?.textContent; if(!sku || state.edits[sku]!==undefined) continue;
+ const u=map.get(sku); const val=(u&&u.suggested_real_mfr)||''; if(!val) continue;
+ const to=el.querySelector('.mfr-transition .to'); if(to && to.textContent!==val){ to.textContent=val; to.style.color='var(--teal)'; }
+ const gi=el.querySelector('.guess-in'); if(gi && !gi.value) gi.value=val;
+ }
+ let banner=document.getElementById('suggStatus');
+ if(!banner){ banner=document.createElement('div'); banner.id='suggStatus'; banner.style.cssText='font-size:12px;color:var(--muted);margin:0 0 8px'; const m=document.querySelector('main'); if(m) m.insertBefore(banner,m.firstChild); }
+ const tot=state.rows.length||1, pct=Math.round(covered/tot*100);
+ banner.textContent = covered>=tot ? `✅ suggested real mfrs loaded (${covered}/${tot})` : `🔄 loading suggested real mfrs from FileMaker… ${covered}/${tot} (${pct}%)`;
+ if(covered>=tot && window._suggPoll){ clearInterval(window._suggPoll); window._suggPoll=null; }
+ }catch(e){}
}
function renderFacets(){
@@ -412,7 +437,10 @@ function apply(){
for(const r of rows){
const row = document.createElement('div');
row.className='lrow'+(state.sel.has(r.dw_sku)?' sel':'');
- const guessVal = (state.edits[r.dw_sku]!==undefined)?state.edits[r.dw_sku]:(r.best_guess_real_mfr||'');
+ // prefer the FileMaker-derived real code (from the SKU's own master) over the
+ // weak dw_unified best-guess; either is overridden by a manual edit.
+ const suggested = r.suggested_real_mfr || r.best_guess_real_mfr || '';
+ const guessVal = (state.edits[r.dw_sku]!==undefined)?state.edits[r.dw_sku]:suggested;
const confClass = 'conf-'+String(r.confidence||'na').replace(/[^a-z]/g,'-');
const sugMfr = (guessVal||'').trim();
diff --git a/scripts/enrich-suggestions.mjs b/scripts/enrich-suggestions.mjs
new file mode 100644
index 0000000..fa59795
--- /dev/null
+++ b/scripts/enrich-suggestions.mjs
@@ -0,0 +1,57 @@
+// enrich-suggestions.mjs — fill each active queue row's REAL suggested mfr from
+// FileMaker (the code lives in the WALLPAPER master's own record, not dw_unified).
+//
+// READ-ONLY against FileMaker + Postgres; the ONLY write is data/queue.jsonl (adds
+// `suggested_real_mfr` + `suggested_src` + `suggested_keep_rid` per row). Resumable:
+// rows already enriched are skipped, so a re-run only fills the gaps. Paced so it
+// never hammers FileMaker. The viewer's list renders suggested_real_mfr as it lands.
+//
+// node scripts/enrich-suggestions.mjs # fill all un-enriched active rows
+// node scripts/enrich-suggestions.mjs --limit 50 # sample
+// node scripts/enrich-suggestions.mjs --force # re-enrich even filled rows
+
+import { readFileSync, writeFileSync, existsSync } from 'node:fs';
+import { fileURLToPath } from 'node:url';
+import { dirname, join } from 'node:path';
+
+const __dir = dirname(fileURLToPath(import.meta.url));
+const QUEUE = join(__dir, '..', 'data', 'queue.jsonl');
+const LIMIT = (() => { const i = process.argv.indexOf('--limit'); return i > -1 ? parseInt(process.argv[i + 1], 10) : 0; })();
+const FORCE = process.argv.includes('--force');
+const PACE_MS = 350;
+const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
+
+const { candidatesForSku } = await import('../lib/candidates.mjs');
+
+function load() {
+ if (!existsSync(QUEUE)) { console.error('no data/queue.jsonl — run build-queue first'); process.exit(2); }
+ return readFileSync(QUEUE, 'utf8').split('\n').filter((l) => l.trim()).map((l) => { try { return JSON.parse(l); } catch { return null; } }).filter(Boolean);
+}
+function save(rows) { writeFileSync(QUEUE, rows.map((r) => JSON.stringify(r)).join('\n') + '\n'); }
+
+const rows = load();
+const todo = rows.filter((r) => FORCE || r.suggested_real_mfr === undefined);
+const target = LIMIT ? todo.slice(0, LIMIT) : todo;
+console.log(`enrich-suggestions: ${rows.length} rows, ${todo.length} un-enriched, processing ${target.length} (pace ${PACE_MS}ms)`);
+
+let done = 0, withMfr = 0, errs = 0;
+for (const r of target) {
+ try {
+ const c = await candidatesForSku(r.dw_sku);
+ const sug = c.suggestion || {};
+ r.suggested_real_mfr = sug.realMfr || '';
+ r.suggested_src = sug.realMfr ? 'filemaker-own' : (c.fmError ? 'fm-error' : 'none');
+ r.suggested_keep_rid = sug.keepRid || '';
+ if (sug.realMfr) withMfr++;
+ } catch (e) {
+ r.suggested_real_mfr = r.suggested_real_mfr || '';
+ r.suggested_src = 'error';
+ errs++;
+ }
+ done++;
+ if (done % 25 === 0) { save(rows); console.log(` ${done}/${target.length} · ${withMfr} with real mfr · ${errs} err`); }
+ await sleep(PACE_MS);
+}
+save(rows);
+const covered = rows.filter((r) => r.suggested_real_mfr).length;
+console.log(`DONE: enriched ${done}, ${withMfr} got a real mfr this run. Queue coverage: ${covered}/${rows.length} rows now carry a suggested real mfr.`);
← 50b2a99 keep domain aside open on load (data-nav-sidebar=off) — Cody
·
back to Mfr Review Viewer Corruption
·
auto-data-snapshot: 2026-08-27T18:10:50 (1 data files) — dat 9ba7a0c →