From beabfe12971e4811cdd48245b7646544693720dc Mon Sep 17 00:00:00 2001 From: type-two Date: Wed, 24 Jun 2026 11:07:38 +1000 Subject: [PATCH] docs(audit): WowPlatter mega deep-dive + reorganise MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Deeper companion to WOWPLATTER_MIGRATION_AUDIT.md — refreshes status (covered/partial/todo/dropped) after the recent build wave, drops to tab + AJAX-action level (40 pages / ~90 tabs / 460 actions), and proposes RecordGod's 5-group IA (STOCK/SELL/STOREFRONT/GROW/SYSTEM) to replace WP's 2-root sprawl. Key reframe: internal mirror + local images make whole subsystems evaporate, not migrate (~1/3 of actions drop as WP-survival/pre-data-centre enrichment). Co-Authored-By: Claude Opus 4.8 --- WOWPLATTER_DEEPDIVE.md | 150 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 WOWPLATTER_DEEPDIVE.md diff --git a/WOWPLATTER_DEEPDIVE.md b/WOWPLATTER_DEEPDIVE.md new file mode 100644 index 0000000..20206a5 --- /dev/null +++ b/WOWPLATTER_DEEPDIVE.md @@ -0,0 +1,150 @@ +# WowPlatter admin — mega deep-dive & reorganise (2026-06-24) + +Deeper companion to `WOWPLATTER_MIGRATION_AUDIT.md` (page-level, 2026-06-22). That one decided cream-vs-bloat; +**this one refreshes status** (a lot shipped since), drops to **tab + button (AJAX action) level**, and proposes a +**clean RecordGod information architecture** to replace WowPlatter's sprawl. + +**The thesis:** WowPlatter is everything bolted to WordPress because that's the cage John was in. RecordGod runs on +metal/Postgres and uses WP only as a dumb, secure storefront skin (the bridge). So the rule for every feature below is +not "port it" — it's **"what is this actually for, and is it still needed once the data lives locally?"** Internal +`disc_*` mirror lookups + the local image store make whole subsystems (per-row API calls, image downloaders, enrichment +harvesters) *evaporate*, not migrate. + +Surface measured: **~40 admin pages · ~90 tabs · 460 distinct AJAX actions.** +Legend: **✅ COVERED** (built in RecordGod) · **🟡 PARTIAL** · **🔜 TODO** (cream, not yet) · **❌ DROP** (rejected, with reason). + +--- + +## A. ALREADY COVERED ✅ (built since the first audit — the bandaid is half off) + +| WowPlatter area | RecordGod now | +|---|---| +| Dashboard | `/admin` dashboard — counts, stock value, sales tiles, quick actions, lazy charts | +| Inventory list/edit/bulk | `/admin` Inventory — table, search, inline edit, delete, bulk actions, add-item | +| Import (bulk stock-in) | **Intake (3-source)** — internal mirror lookup + Discogs collection folders + Google Sheet (service account); one `_stage()` core, enrich-on-demand, skip-existing | +| Sales / POS | `/pos` — register, tender/change, split, layby, discounts, history, settings | +| Receipts + payments | server-rendered print/email receipts + **Square Terminal** wired | +| Shipping | AusPost own-rates table + `/shop/shipping/quote` (no API, no paid WP plugin) | +| Search / Navigator | Store→Rack→Crate→Item drill-down, Collections CRUD, Reorganize backend, locator | +| Crates / Store map | virtual crates + rack map nav | +| Customers | `customer` table + Woo customer sync (unified CRM) + POS picker + edit | +| Wantlist | table + public "request a record" intake + admin nav | +| Reports | `/admin/reports` workbench (date×dim×metric) | +| Connect (vault) | Fernet vault + tests: discogs/woo/dealgod/square/mail/**google**/bridge_key | +| Staff | accounts + roles + time clock | +| 3D Virtual Store | Three.js store, 3 rooms render | +| Gig Guide | lives in DealGod (`/api/gigs`), consumed via API | +| Storefront | `/shop` API + **WP bridge** (SSR pages, on-the-fly Woo product, order webhook) | +| Audio (storefront) | per-track previews, jog/seek, Apple-ID (country-scoped) + dead-YouTube check | + +**Beyond WowPlatter (net-new in RecordGod):** DealGod price-intel join, store-intel dossiers, the WP bridge itself, +internal enrich-on-demand that *grows* the mirror, the 3-source intake. + +--- + +## B. THE DEEP MAP — every page/tab, what it does, status + +### STOCK group +- **Dashboard** `dashboard.php` — at-a-glance + Top-Performers(30d). ✅ (add the best-sellers widget — small). +- **Inventory** `inventory/{main,list,form,bulk,meta-catalog,discogs-marketplace,ebay-marketplace,ebay/*}` — + list/form/bulk ✅. `meta-catalog` = Facebook product feed (fb×12 actions) → 🔜 fold into **Ads/Meta**. + `discogs-marketplace` = list/manage Discogs Marketplace inventory → 🔜 (wanted). `ebay*` = ❌ (not used). +- **Import** `import/{main,other,reference-conversion}` — paste IDs/catnos/barcodes → match → create stock; + reference-conversion = catno/identifier→release_id. ✅ **superseded by Intake** (matching is now local against + `disc_release`/`disc_release_identifier`). Keep a "paste a list of IDs/barcodes" box as a 4th Intake source — 🔜 small. +- **Print / Labels** `print.php` + `label-designer.php` — thermal price labels + template designer. 🔜 **cream, still missing.** + Reuse PriceGod/rfid-daemon print path; templates first, visual designer later. +- **Analyse** `analyse.php` (analyze×4) — find dupes / missing data / anomalies = **stock hygiene**. 🔜 → build as the + **"Heal" sweep** (scan inventory for missing artist/label/cover → backfill from mirror; dry-run first). The genuinely + good idea salvaged from the old import engine. +- **Search** `search.php` + panes — Scanner / Returns / Reorganize / Collections / Stock-Finder. ✅ backend; 🔜 finish + **Scanner (scan-to-slot), Returns, Reorganize walkthrough** UIs. +- **Wiki** `wiki.php` — per-release wiki lookup/editor. ❌ **DROP** — built before the local data centre; enwiki/Discogs/ + MusicBrainz lookups + the `notes` field cover it. + +### SELL group +- **Sales** `sales/*` — POS engine. ✅. +- **Customers** `customers.php` — CRM: Overview/Sales/Loyalty/Wantlist/Mailing/Messages/Info per customer. 🟡 table+sync + done; 🔜 **the customer record page** (history, wants, contact, mailing prefs). Messages tab = ❌ (see Messaging). +- **Wantlist** `wantlist.php` — who-wants-what → buy signals + notify-on-arrival. 🟡 capture done; 🔜 **intake-match + + notify** (match incoming stock to wants). +- **Loyalty** `loyalty-{users,reports,settings}` — points/tiers/rewards. 🔜 migrate data+UI but **keep INACTIVE** (needs work). +- **Inbox / Messaging** `messaging-settings.php` + `channels/` (Beeper/WhatsApp bridge) — ❌ **DROP in-app**; messaging stays + external (email/socials). Note: `/admin/inbox` already runs hello@ mail externally. + +### STOREFRONT group +- **Pages** `pages.php` — storefront builder: General/Sales/Header/Welcome/FAQ/SEO/URL/Placeholder. 🟡 `/builder` exists; + 🔜 fold content bits (welcome/FAQ/SEO/header copy) in. +- **Profile Editor** `profile-editor.php` — customer-facing account editing. 🔜 **LATER** (storefront not far enough). +- **Audio** `audio.php` — MusicBrainz / Streaming&Harvester / Beatport BPM-Key / Reports. 🟡 storefront previews + Apple-ID + done. 🔜 **internalize enrichment**: local MusicBrainz (Ultra) + enwiki + Discogs instead of API keys; KEEP Apple-ID + (country-preserving JSON) + previews + Beatport. ⭐ needs its own page-by-page pass. `reports/audio.php` = ❌ (pipeline tooling). +- **Virtual Store** `virtual/{main,builder,editor,tools,store-view,store-view-analytics,audio-tab}` — 3D store **view** ✅; + **editor** (rack/crate placement) 🔜 **build inside RecordGod**; analytics 🟡; builder(release page) overlaps `/builder`. + +### GROW group +- **Ads** `ads/{summary,meta,google}` + `ads-admin-display.php` (fb×12) — post ads to Meta + manage listings. 🔜 migrate as + **Meta API post + Discogs-marketplace management** (not used yet, but wanted in record-store software). +- **Beatport** `beatport-match.php` (bp×14) — BPM/Key matcher (Search / Work Queue) via extension. 🔜 migrate (valuable for + the dance catalog). +- **Reports** `reports/*` + `sales/reports.php` — sales/stock/audio analytics. ✅ core; deepen per need. +- **Gig Guide** `gig-guide.php` (gi×7) — ✅ in DealGod, consumed via API. +- **Blagginate** `blagginate.php` (blagginate×29!) — YouTube-cookie tracklist/metadata scraper. ❌ **DROP** (29 actions of + rope; PriceGod plan already cut it). + +### SYSTEM / INTEGRATIONS group +- **Connect** `connect/{main,auspost,dealgod,discogs,ebay,facebook,google,google-service,listenbrainz,mail,recaptcha,serp,square,database,extra}` + (test×15) — the credential hub. ✅ vault + discogs/woo/dealgod/square/mail/google; 🔜 add auspost/facebook as Ads/Shipping + need them; ebay/listenbrainz/serp/recaptcha = ❌ unless used. +- **Database** `database/{export,import,files,locate,transients}` (backup×6) — WP backup/restore/transient tools. + ❌ mostly (RecordGod has pg_dump sync `refresh.sh`); `locate` overlaps the navigator (already ✅). +- **System / Tools / Settings** `system.php`, `tools/{debug,logging,shortcodes,wpcli}` (wpcli×7), `settings/{general,performance,endpoints}`, + `endpoints.php` — WP plumbing. ❌ drop the WP-specific bits; **General settings (currency/tax/store info)** 🟡 → some already + in POS settings, finish there. RecordGod has its own `/admin` System health panel ✅. +- **AI** `ai-tabs/{main,agent,chatbot,connect,prompts}` — chatbot/agent. ❌ **DEFER** (side quest, not the seller loop). +- **Sound** `sound.php` — the 2nd menu root (SOUND), audio-side landing. 🟡 = the Audio group above. + +--- + +## C. THE REORGANISE — RecordGod's clean IA (5 groups, not 2 roots + 40 pages) + +WowPlatter grew organically into ~40 flat-ish pages. RecordGod should expose **5 task-based groups**. Proposed nav +(✅=there, 🔜=to add): + +``` +STOCK Dashboard ✅ · Inventory ✅ · Intake ✅ · Search/Navigator ✅ · Crates ✅ · Labels 🔜 · Heal 🔜 +SELL Register/POS ✅ · Orders ✅ · Customers 🟡 · Wantlist 🟡 · Loyalty 🔜(inactive) +STOREFRONT Builder/Pages 🟡 · 3D Store ✅(+editor 🔜) · Audio/Previews 🟡 · (served via WP bridge ✅) +GROW Ads — Meta + Discogs marketplace 🔜 · Beatport 🔜 · Reports ✅ +SYSTEM Connections ✅ · Staff ✅ · Shipping ✅ · System health ✅ · Sync ✅ +``` + +**Old → new collapse:** +- Import + reference-conversion + meta-catalog-matching → **Intake** (+ a paste-IDs source). +- Wiki + Audio-enrichment-via-API + Blagginate + Analyse-missing-data → **one local enrich/Heal** path (mirror + MusicBrainz/enwiki). +- Database tools + System + Tools + Settings/endpoints → **System health + Sync** (pg_dump), drop WP plumbing. +- Messaging + Inbox + channels → external (email/socials), not in-app. +- eBay (marketplace/inventory/orders/connect) → dropped entirely. +- 2 menu roots (WowPlatter / SOUND) → SOUND folds into **STOREFRONT › Audio**. + +**Net drop count:** Blagginate(29) + AI(5 tabs) + eBay(~3 pages,6 actions) + Wiki + Messaging/channels + Audio-Reports + +WP system/tools/database plumbing ≈ **a third of the 460 actions vanish**, because they were WordPress survival gear or +pre-data-centre enrichment. + +--- + +## D. REFRESHED BUILD ORDER (what's actually left) + +1. **Heal sweep** (Analyse, salvaged) — scan stock for missing artist/label/cover → backfill from mirror; dry-run first. +2. **Labels / Print** — templates + price-label print (reuse PriceGod/daemon). +3. **Customers** record page (history/wants/contact/mailing). +4. **Wantlist** intake-match + notify-on-arrival. +5. **Finish Search** UIs (Scanner / Returns / Reorganize walkthrough). +6. **Audio internalization** review+build (local MB/enwiki; keep Apple-ID + previews + Beatport). +7. **Ads** — Meta post + Discogs-marketplace management (+ meta-catalog feed). +8. **Beatport** BPM/Key. +9. **3D scene editor** (rack/crate placement in-app). +10. **Pages content → /builder** · **Dashboard** best-sellers widget · **Loyalty** (migrate, inactive). + +**DROP:** Wiki · Messaging/Inbox/channels · Blagginate · AI chatbot · Audio-Reports · eBay · WP system/tools/database plumbing. +**LATER:** Profile Editor.