Files
MobilityOps/docs/demo-release/demo-runbook.md
T

65 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Demo runbook
## Starting the demo
Open the configured deployment URL, for example `https://fleetops.example.com`, or `http://localhost:1228` for local development. The login screen names the fictional organisation, states that all data is synthetic 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 without the guide.
No password is shown or required for either synthetic-demo path.
## Five-minute demo
1. Click **Start begeleide demo**.
2. Follow steps 13: dashboard, booking needing attention, and the pre-filled odometer-anomaly return.
3. Resolve the data-quality issue created by the return. “Retain canonical” is the fastest demonstration path.
4. Ask a suggested knowledge question and show the cited source.
5. Show the automation/audit-trail link-through.
6. Close with the About pages real/synthetic/not-connected breakdown.
## Ten-minute demo
Complete the five-minute path, then use `/scenarios`:
- scenario 2: duplicate customer merge;
- scenario 3: booking overlap, resolved through `/data-quality`;
- scenario 4: failed automation retry through `/automation`.
All scenarios are deterministic and independent after a reset.
## Resetting the environment
An Operations Manager can reset from the sidebar, Demo Guide or About page. Reset requires confirmation, rebuilds only the deterministic MobilityOps dataset, runs a server-side integrity check and invalidates the acting session. It never mutates shared n8n, RAGcore, MCP data, unrelated containers or volumes. Disable reset entirely with `DEMO_ALLOW_RESET=false` where required.
## Deployment contract
Create a source archive from the exact reviewed commit, record its SHA-256 and full Git SHA, transfer it through the operator-approved channel, and invoke `deploy/unraid/deploy-release.sh` with those immutable identifiers.
Keep the following values in operator-local configuration rather than repository documentation:
- deployment host or SSH alias;
- SSH key selection;
- persistent appdata directory;
- public application URL;
- n8n and RAGcore endpoints;
- tokens and callback secrets.
An Unraid installation commonly uses a path such as `/mnt/user/appdata/mobilityops`, but that is an example only. See `deploy/unraid/README.md` for the parameterized deployment layout.
The deployer verifies the archive checksum, extracts into a commit-named release directory, builds revision-labelled immutable images, promotes without reseeding and checks application, backup and observability health. Reset demo data only as a separate deliberate action.
## Rollback
`.deploy/source-revision` and `.deploy/release-history.log` record the live commit and image tags. A failed readiness check restores the previous image IDs. Database rollback remains a separate explicitly guarded restore operation.
## Server safety
Only touch the `mobilityops` Compose projects own `api` and `web` services, and interact with `db` only through migrations or the guarded backup/restore flow. Never stop unrelated containers, run broad Docker pruning, delete unrecognised resources, overwrite the server `.env`, print secrets, start a second permanent n8n instance or activate guessed integration URLs. PostgreSQL must remain unexposed.
## Troubleshooting
- **Scenario unavailable:** it was already resolved since the last reset; reset the synthetic dataset.
- **Knowledge question returns insufficient evidence:** use a suggested question and inspect provider health/citations; the adapter refuses ungrounded answers.
- **Unexpected failed n8n delivery:** use the automation view and bounded retry path; inspect operator-side n8n logs without committing them.