# 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.