Documents the demo-productization work from this branch: the Northstar Mobility fictional concept and scope, the five named scenarios and their fixed records, the seed/date-anchoring strategy (including the real bug it fixed), the in-app Demo Guide's design and the English-suggested- questions decision, and an operational runbook covering 5/10-minute demo flows, reset, Unraid redeploy and rollback. Updates README with current test counts and pointers to the new docs.
4.3 KiB
The in-app Demo Guide
What it is (and isn't)
The Demo Guide is a compact, reusable side panel (a bottom sheet on mobile) that walks an
Operations Manager through eight fixed steps covering the demo's core functionality. It is
not a generic tutorial engine and not a source of business logic — every action it
prompts is a real action against the real API; the guide only narrates, links, and tracks
progress. It duplicates no business logic: routes for the two scenario-backed steps
(return, duplicate-merge) are resolved from the live GET /api/v1/demo/manifest response
rather than hardcoded, so they can never point at a stale or missing record.
Where it lives
frontend/src/data/demoGuideSteps.ts— the eight step definitions (title, what you'll see, why it matters, the exact start action, the expected outcome, and aroute()function).frontend/src/context/DemoGuideContext.tsx— open/close state and step progress, persisted tosessionStorageonly (browser-local, never touches auth or business state; a "Demo opnieuw voorbereiden" restart or a new browser session starts fresh).frontend/src/components/DemoGuide.tsx— the panel itself and its topbar trigger (DemoGuideTrigger, Operations-Manager-only, since all eight steps require that role).
The eight steps
- Understand the operational state — the dashboard's readiness and attention queue.
- Open the booking needing attention —
BK-DEMO-RETURN, resolved from the manifest. - Process the return with an odometer anomaly — same booking; the return form is
pre-filled with the suspicious reading (see
demo-scenarios.mdscenario 1). - Handle the created data-quality issue — the fresh odometer-regression issue that step 3 just created.
- Review and merge the possible duplicate customer —
DQ-DEMO-DUPLICATE. - Ask the procedure assistant a question — one of the suggested questions.
- Check automation and the audit trail.
- Review what's real, simulated, or not yet connected — the About page.
How progression works
- "Ga naar deze stap" navigates to the step's resolved route without marking it done.
- "Volgende" marks the current step complete and advances the index (used for steps with no dedicated in-page continuation, like the knowledge-assistant step).
- Several real actions (a successful return, a resolved data-quality issue) show their own "Ga verder met de demo" button that both completes the current step and navigates straight to the next one — this is how the guide chains through steps 3→4→5 without a detour back through the panel's own controls.
- The step list on the panel lets you jump directly to any step.
- "Demo opnieuw voorbereiden" calls the real reset endpoint, resets the guide's own progress, and returns to the login screen — mirroring the existing sidebar reset control, not a separate implementation.
A known, deliberate limitation: suggested questions stay in English
The demo knowledge base's five procedure documents (knowledge/procedures/*.md) are
written in English. Verified empirically while building step 6: an equivalent Dutch
question returned insufficient evidence against the demo provider, while the English
original returned grounded. Rather than mistranslate the demo's centerpiece "grounded
answer" feature into something that silently answers incorrectly, the suggested questions
on /knowledge and this guide's step 6 instructions stay in English, with the guide
explicitly explaining why in Dutch. Retranslating the procedure documents themselves was
judged out of scope for a demo-productization pass (see the language-split note in
docs/demo-release/current-demo-gap-audit.md, gap #11).
Layout note: the panel reserves space, it doesn't overlap content
On desktop the panel is a fixed 400px-wide right-side overlay. Layout.tsx adds a
guide-open class to the main workspace while the guide is open, which reserves
padding-right so page content reflows aside instead of sitting underneath the panel —
this was a real bug found and fixed while building the full guided-demo Playwright test
(see PROJECT_STATE.md, Batch 6): without it, the return form's "Review return" button
was unclickable while the guide was open at ordinary desktop widths.