51 lines
1.8 KiB
Markdown
51 lines
1.8 KiB
Markdown
# Local Software-Only Runbook
|
|
|
|
## Voraussetzungen
|
|
|
|
- Rust `stable` Toolchain mit `cargo`, `rustc`, `rustfmt` und `clippy`
|
|
- dieses Repo ist lokal aktuell **kein echter Git-Clone**, sondern nur ein Arbeitsbaum ohne `.git`
|
|
- keine Hardware ist fuer den software-only Betrieb noetig
|
|
|
|
Beispiel fuer eine user-lokale Rust-Installation:
|
|
|
|
```bash
|
|
curl -sSf https://sh.rustup.rs -o /tmp/rustup-init.sh
|
|
sh /tmp/rustup-init.sh -y --profile minimal --default-toolchain stable
|
|
. "$HOME/.cargo/env"
|
|
rustup component add rustfmt clippy
|
|
```
|
|
|
|
## Start
|
|
|
|
```bash
|
|
. "$HOME/.cargo/env"
|
|
cargo run -p infinity_host_api -- --config config/project.example.toml --bind 127.0.0.1:9001 --runtime-state data/runtime_state.json
|
|
```
|
|
|
|
## Lokale URLs
|
|
|
|
- Creative Web-UI: `http://127.0.0.1:9001/`
|
|
- State API: `http://127.0.0.1:9001/api/v1/state`
|
|
- Preview API: `http://127.0.0.1:9001/api/v1/preview`
|
|
- Snapshot API: `http://127.0.0.1:9001/api/v1/snapshot`
|
|
- WebSocket-Stream: `ws://127.0.0.1:9001/api/v1/stream`
|
|
|
|
## Minimale Smoke-Checks
|
|
|
|
1. Web-UI laedt unter `http://127.0.0.1:9001/`.
|
|
2. `GET /api/v1/state` antwortet mit `api_version: "v1"`.
|
|
3. `ws://127.0.0.1:9001/api/v1/stream` verbindet und liefert zuerst `snapshot`, dann `preview`.
|
|
4. In der Web-UI oder ueber `POST /api/v1/command` funktionieren diese Basisfluesse:
|
|
- preset recall
|
|
- preset save / overwrite
|
|
- creative snapshot save / recall
|
|
- blackout
|
|
|
|
## Runtime-State und Recovery
|
|
|
|
- Runtime-Persistenz liegt standardmaessig unter `data/runtime_state.json`.
|
|
- Beim Schreiben werden aktiver Scene-State, Runtime-Presets, Runtime-Gruppen, Creative Snapshots und globale Steuerwerte persistiert.
|
|
- Fehlende Dateien sind okay.
|
|
- Leere, defekte oder schema-inkompatible Persistenzdateien blockieren den Serverstart nicht mehr.
|
|
- In diesen Recovery-Faellen startet der Host mit Default-State und erzeugt Warning-/Info-Events im Eventfeed statt abzubrechen.
|