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.8 KiB
Demo runbook
Starting the demo (any environment)
Open the deployed URL (Unraid review: http://192.168.10.150:1236; local:
http://localhost:1228). The login screen names the fictional organisation, states that
all data is synthetic and all workflows are really implemented, and offers:
- Start begeleide demo — logs in as Operations Manager and opens the Demo Guide at step 1.
- Verken als Operations Manager / Verken als Rental Employee — free exploration, no guide.
No password is shown or required for either path.
Five-minute demo (guided)
- Click Start begeleide demo.
- Follow steps 1–3: dashboard → the booking needing attention → confirm the pre-filled odometer-anomaly return.
- Step 4: resolve the data-quality issue the return just created (any decision is fine for a quick pass — "Retain canonical" is the fastest).
- Step 6: ask a suggested knowledge question and show the cited source.
- Step 7: show the automation/audit trail link-through.
- Close with step 8, the About page's honest real/synthetic/not-connected breakdown.
Ten-minute demo (guided + one extra scenario)
Do the five-minute path above, then from /scenarios:
- Run scenario 2 (duplicate customer merge) if not already done via the guide's own step 5.
- Run scenario 3 (booking overlap) —
/data-quality, resolveDQ-DEMO-OVERLAP. - Run scenario 4 (failed automation retry) —
/automation, filter to failed, retry.
All five scenarios can be run in any order and are independent of each other.
Resetting the environment
Any Operations Manager can reset from: the sidebar ("Reset demo data"), the Demo Guide
panel ("Demo opnieuw voorbereiden"), or the About page (points to the sidebar control).
Reset requires confirmation, rebuilds the deterministic dataset with a fresh date anchor,
runs a server-side scenario-integrity check, and signs the acting session out (the server
invalidates the session as part of reset). It only ever touches MobilityOps's own tables
— never shared n8n, RAGcore, or MCP data, other containers, or volumes. It can be
disabled entirely via DEMO_ALLOW_RESET=false if an environment must not be rebuildable.
Redeploying to Unraid
# From a clean local checkout on the target branch/commit:
git archive --format=tar.gz -o /tmp/mobilityops-source.tar.gz HEAD
scp /tmp/mobilityops-source.tar.gz unraid:/mnt/user/appdata/mobilityops/.deploy/source-<short-sha>.tar.gz
ssh unraid "cd /mnt/user/appdata/mobilityops \
&& tar -xzf .deploy/source-<short-sha>.tar.gz \
&& echo <full-sha> > .deploy/source-revision"
# Rebuild only what changed (api and/or web); db is never rebuilt:
ssh unraid "cd /mnt/user/appdata/mobilityops \
&& docker compose -p mobilityops -f compose.yaml -f compose.unraid.yaml up --build -d api web"
# Confirm migrations and reseed:
ssh unraid "cd /mnt/user/appdata/mobilityops \
&& docker compose -p mobilityops -f compose.yaml -f compose.unraid.yaml exec -T api python -m alembic current \
&& docker compose -p mobilityops -f compose.yaml -f compose.unraid.yaml exec -T api python -m app.cli seed --reset"
Extraction preserves the server's existing .env and named volumes (Postgres data, n8n
data) — the tarball never contains .env since it's gitignored. Never edit source
directly on the server; never deploy uncommitted changes.
Rollback
.deploy/source-revision on the server records exactly which commit is live. Prior
source tarballs remain in .deploy/ for rollback: extract an earlier
source-<short-sha>.tar.gz, update source-revision to match, and re-run the rebuild
step above. Database rollback is out of scope for this demo (migrations are additive;
there has been no destructive migration on this branch).
Server safety (Unraid)
Only touch the mobilityops Compose project's own api/web services (and db only
via migrations, never manually). Never stop other containers, run docker system prune,
delete unrecognised images/networks/volumes, delete the MobilityOps database, overwrite
the server .env, print secrets, start a second permanent n8n instance, or activate
guessed RAGcore/MCP URLs. PostgreSQL is never exposed externally.
Troubleshooting
- A scenario shows "Niet beschikbaar" on
/scenarios: it has already been resolved since the last reset (expected once you've worked through it) — reset to restore it. - Knowledge question returns "insufficient evidence": check the question is in
English and close to one of the suggested phrasings — the demo knowledge base is
English-only (see
demo-guide.md). - n8n shows a failed delivery that isn't the seeded demo one: check
/automation's filter and retry — bounded retries mean it should self-heal withinn8n_max_attemptsattempts, or can be retried manually by an Operations Manager.