feat(plans): show hours, period/currency, and subscriber dependencies in the plan list

Deleting versioned plans is unsafe (a plan version referenced by a subscription's
planVersionId must survive for reproducible repricing/audit) — so instead of
delete, give the admin the VISIBILITY they actually needed:

- Hours column: a compact timeframes summary ("Hën–Pre 21:00–08:00" / "24/7"),
  so two same-priced plans are distinguishable at a glance.
- Period + currency are already in the price cell; the hours column removes the
  remaining ambiguity between night/day plans.
- "Used by" column: a count of subscriptions on each (current) plan (active /
  total), expandable to the holder names — so you can see what depends on a plan
  before retiring or replacing it. Computed client-side from the existing
  subscriptions list (both screens are admin-grade; no new endpoint).

Build+lint 12/12 (i18n parity).

Claude-Session: https://claude.ai/code/session_01Xcm6ikLgGoCxxHrxtjkk5V
This commit is contained in:
2026-06-20 20:14:30 +02:00
parent c64457020f
commit 488dcb5e4e
3 changed files with 124 additions and 24 deletions
+7
View File
@@ -454,7 +454,14 @@ export const en: Catalog = {
noneYet: "No plans yet. Add one so the booth can sell subscriptions.",
colName: "Name",
colPrice: "Price",
colHours: "Hours",
colUsedBy: "Used by",
colEffective: "Effective",
allHours: "24/7",
usedByCount: "{{active}} active / {{total}}",
usedByNone: "none",
usedByTitle: "Show the subscriptions on this plan",
subscribers: "Subscribers",
inForce: "in force",
retired: "retired",
newVersion: "New version",