8.3 KiB
11 — Admin, Settings & the HQ Support Console
Founder review question (2026-07-09): "how are the support sections, and are there admin pages/settings — default settings, multi-tenant settings, etc.?" Verdict: the tenant-side Admin module is specified in 09-UX-FLOWS-AND-MENUS.md (§2 menu tree → Admin; §5.7 error-code support handshake; print-profile remote fixes in §5.4). What was missing is the vendor side — the console our team and dealers use to run the whole fleet. This doc fills that gap and consolidates the settings model.
⚡ Staging update (founder call, 2026-07-09 — see D15)
The commercial slice of this console is built early as
apps/hq, aimed at the current Classic client base: tenant/client directory, Billing & Collections, notes/history — spec: 14-SPEC-HQ-CONSOLE.md, which adds quotations/proforma, AMC, AWS cost attribution and the interaction log beyond this doc. Fleet/support/catalog features keep the §5 phase mapping and still wait for the cloud tier (D14).
1. The five surfaces (corrected count)
| Surface | Who | Where specified |
|---|---|---|
| POS Counter | store staff | 09 §1 |
| Back Office web | tenant's managers | 09 §2 |
| Owner App | tenant's owner | 09 §4 |
| Customer Display | the queue | 09 §1 |
| HQ Console (internal web) + dealer portal view | SiMS staff, dealers | this doc |
2. The settings model (one mechanism, five scopes)
Every setting is a row: setting(scope_type, scope_id, key, value, effective_from).
Resolution: nearest scope wins — user → counter → store → tenant → system.
| Scope | Edited from | Examples |
|---|---|---|
| system (= SiMS default) | HQ Console → Catalogs → Default Settings | default rounding rule, default print routing, default alert thresholds, IRN retry window, grace-period days |
| tenant | Back office → Admin → Settings | GST scheme (regular/composite), FY start, invoice formats, dealer-first support routing, languages enabled |
| store | Back office → Admin → Stores | store print language, negative-stock policy, khata limits default |
| counter | Back office or POS Settings (supervisor) | print profiles, approval timeout, quick-keys layout, font size |
| user | The user (POS/app settings) | language, notification preferences, muted alert types |
Rules: every override shows what it inherits ("Inherited from Store: ₹500 — Override?") with one-click reset to inherited; changes are effective-dated and audit-logged; a "changed from default" filter exists at every scope — support's first question answered in one click. New-tenant provisioning = the system scope snapshot + edition template; that's what "default settings" means operationally.
3. HQ Console — menu tree
Internal web app on the cloud tier (never store-installed). Staff roles: Support Agent, Support Lead, Product Admin, Finance, Read-only Auditor. Every staff action touching tenant data is itself audit-logged — we are tenants of our own audit system.
- 🏬 Tenants
- Directory: search, filters (edition, region, dealer, version, sync health, renewal due).
- Tenant 360°: stores/counters/devices with app versions, sync lag, last backup, subscription state, usage stats (bills/day), open error-code counts, notes/history.
- Lifecycle: provision (from edition template), suspend (grace rules), archive/export (DPDP-compliant handover), delete with legal-hold checks.
- Migration tracker: Classic→Next pipeline per customer (scheduled → data pulled → verified → parallel-run → cut over → Classic retired), verification-report status.
- 💳 Plans & Pricing (Product Admin only)
- Plan editor (
plan,plan_featurematrix — feature flags as rows). price_bookwith effective dates (D5: prices are data; changing them is a row, not a release).- Offers: migration discounts, dealer pricing, renewal offers.
- Upsell content editor: the in-app paywall screenshots/text per feature (DB-driven marketing).
- Plan editor (
- 📚 Catalogs (pushed to fleet via sync)
message_catalogeditor with translation workflow (missing-strings report, machine-draft → human-confirm per language).error_catalogeditor incl. the internalsupport_noteplaybook per code.- GST rate catalog: dated rate pushes (the GST-2.0-style event = one dated dataset push).
- HSN reference data; default print/label template gallery.
- Default Settings (the
systemscope — §2).
- 🚀 Fleet
- Version dashboard: which store runs what; rollout rings (internal → pilot stores → dealer wave → all) with halt/rollback; version pinning per tenant when needed.
- Sync health map: red/amber stores (lag, backlog size, last error), drill to op log.
- Telemetry explorer: error-code frequencies (E-xxxx as the currency of support), per-bill timing percentiles by store — the "fastest counter" SLA, watched live.
- 🛟 Support
- Queue/board (or ticket-system integration — decide in D13): tickets carry tenant + error codes automatically from the diagnostic bundle.
- Store 360° (same as tenant view, scoped to one store) with remote actions: pull logs, push config fix (e.g., print profile), re-pair a reinstalled POS, refresh license token, trigger backup, queue a test print.
- Impersonation ("view as tenant back office"): requires owner consent (OTP/WhatsApp approve), is time-boxed, watermarked on screen, fully audit-logged, and never covers POS.
- Backup/restore console with restore-drill tracking per store (the drill is a checklist item, not a hope).
- 🤝 Dealers
- Directory, territories, their customer lists, commission statements.
- Dealer portal (restricted HQ view): only their tenants; onboarding wizard launch, migration tracker, first-line support tools (no impersonation, no catalogs, no pricing).
- Kit management: install packages, keyboard sticker sheets, training scripts.
- 💰 Billing & Collections (Finance)
- Our own GST-compliant subscription invoices to tenants; renewals-due pipeline;
dunning sequences (WhatsApp/email, from
message_catalog); dealer commission runs.
- Our own GST-compliant subscription invoices to tenants; renewals-due pipeline;
dunning sequences (WhatsApp/email, from
- ⚙️ Internal Admin
- Staff users/roles, staff-action audit browser, GSP/WhatsApp/UPI credential vault (rotation dates), environment health.
4. Support flow, end to end (shop → HQ)
- In-app: error rail shows
E-2101+ plain-language fix; if unresolved, "Get help" sends a diagnostic bundle (app version, device profile, last 50 error events, sync status, anonymized — never bill contents) and shows the tenant's support route. - Routing (tenant setting): dealer-first (default — the dealer relationship is the channel) or direct-to-SiMS; WhatsApp support number deep-link with the error code pre-filled — the shop's preferred medium.
- HQ: ticket lands with tenant/store/code attached; agent opens Store 360°, uses
remote actions; escalation to impersonation only with consent; the
support_noteplaybook per error code is the agent's first screen. - Loop closed: resolution tagged per error code → weekly top-codes review feeds the backlog (a code that spikes is a product bug, not a support workload).
5. Phase mapping
| Phase | HQ Console scope |
|---|---|
| 1 (MVP) | Tenant provisioning + lifecycle, license/plan assignment, fleet version dashboard + rollback, Store 360° with log pull + config push, migration tracker, system-scope defaults, staff roles + audit |
| 2 | Full catalogs editing (messages/errors/GST pushes), sync health map, rollout rings, billing & dunning (moved early → HQ-1/HQ-2, see staging note and 14-SPEC-HQ-CONSOLE.md), support queue |
| 3 | Dealer portal, impersonation (with consent flow), telemetry explorer, upsell content editor, commission runs |
| 4 | Restore-drill automation, advanced fleet analytics, API/partner management |
6. New decision raised
D13 — Support ticketing: build the queue in HQ or integrate an existing helpdesk? Recommendation: integrate something boring in Phase 2 (the diagnostic bundle and Store 360° are ours; the ticket list is commodity), revisit building only if the integration fights the error-code workflow.