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