RECORDGOD/docs/WOWPLATTER_DEEPDIVE.md
type-two ca84b7f82f chore(docs): move 14 planning/handover docs to docs/ — declutter repo root
Root carried 15 *_PLAN/_DEEPDIVE/_AUDIT/bridge/handover docs (many describe shipped work).
git mv → docs/ (R100, no content change). README.md stays at root. Already *.md-dockerignored,
so no image impact — purely navigability.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 15:22:45 +10:00

11 KiB
Raw Blame History

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.