179 lines
3.8 KiB
Markdown
179 lines
3.8 KiB
Markdown
# Info-Board Neu - Entwicklung
|
|
|
|
## Ziel
|
|
|
|
Dieses Dokument soll den Einstieg auf einem anderen Entwicklungsrechner moeglichst reibungsfrei machen.
|
|
|
|
Es beschreibt:
|
|
|
|
- minimale Voraussetzungen
|
|
- wichtige Verzeichnisse
|
|
- Build- und Run-Kommandos
|
|
- aktuelle Annahmen fuer den lokalen Entwicklungsbetrieb
|
|
|
|
## Repository
|
|
|
|
- Remote: `git.az-it.net:az/morz-infoboard.git`
|
|
- Standard-Branch: `main`
|
|
|
|
Projektwurzel:
|
|
|
|
- `/srv/docker/info-board-neu`
|
|
|
|
## Wichtige Verzeichnisse
|
|
|
|
- `docs/` fuer Architektur- und Fachkonzepte
|
|
- `server/backend/` fuer das zentrale Go-Backend
|
|
- `player/agent/` fuer den Go-basierten Player-Agent
|
|
- `player/ui/` spaeter fuer die lokale Player-Oberflaeche
|
|
- `ansible/` spaeter fuer Deployment und Provisionierung
|
|
- `compose/` spaeter fuer den zentralen Server-Stack
|
|
|
|
## Aktueller Entwicklungsstand
|
|
|
|
Bereits vorhanden:
|
|
|
|
- fachliche Architektur- und Betriebskonzepte
|
|
- relationaler Schema-Entwurf in `docs/SCHEMA.md`
|
|
- erstes Go-Geruest fuer `server/backend`
|
|
- erstes Go-Geruest fuer `player/agent`
|
|
|
|
Noch nicht vorhanden:
|
|
|
|
- produktive API-Endpunkte
|
|
- Datenbankanbindung
|
|
- MQTT-Anbindung
|
|
- Player-Sync
|
|
- Player-UI
|
|
- Compose-Stack fuer lokale Serverdienste
|
|
|
|
## Voraussetzungen auf dem Entwicklungsrechner
|
|
|
|
Mindestens empfohlen:
|
|
|
|
- `git`
|
|
- `go` in Version `1.24.x`
|
|
- `make`
|
|
|
|
Spaeter zusaetzlich sinnvoll:
|
|
|
|
- `docker` und `docker compose`
|
|
- `postgresql-client`
|
|
- `mosquitto-clients`
|
|
|
|
## Schnellstart
|
|
|
|
Repository klonen:
|
|
|
|
```bash
|
|
git clone git.az-it.net:az/morz-infoboard.git
|
|
cd morz-infoboard
|
|
```
|
|
|
|
Dokumentationsbasis lesen:
|
|
|
|
1. `README.md`
|
|
2. `PLAN.md`
|
|
3. `TECH-STACK.md`
|
|
4. `docs/SCHEMA.md`
|
|
5. `docs/OFFENE-ARCHITEKTURFRAGEN.md`
|
|
|
|
## Build-Kommandos
|
|
|
|
### Backend bauen
|
|
|
|
```bash
|
|
cd server/backend
|
|
go build ./...
|
|
```
|
|
|
|
### Agent bauen
|
|
|
|
```bash
|
|
cd player/agent
|
|
go build ./...
|
|
```
|
|
|
|
### Alternativ ueber Makefile
|
|
|
|
```bash
|
|
make build
|
|
```
|
|
|
|
## Lokaler Start
|
|
|
|
### Backend lokal starten
|
|
|
|
```bash
|
|
cd server/backend
|
|
go run ./cmd/api
|
|
```
|
|
|
|
Standard:
|
|
|
|
- HTTP-Adresse: `:8080`
|
|
- Health-Endpunkt: `GET /healthz`
|
|
- Basis-Endpunkt: `GET /api/v1`
|
|
|
|
Konfigurierbar ueber:
|
|
|
|
- `MORZ_INFOBOARD_HTTP_ADDR`
|
|
|
|
Beispiel:
|
|
|
|
```bash
|
|
MORZ_INFOBOARD_HTTP_ADDR=:18080 go run ./cmd/api
|
|
```
|
|
|
|
### Agent lokal starten
|
|
|
|
```bash
|
|
cd player/agent
|
|
go run ./cmd/agent
|
|
```
|
|
|
|
Standardwerte:
|
|
|
|
- `MORZ_INFOBOARD_SCREEN_ID=unset-screen`
|
|
- `MORZ_INFOBOARD_SERVER_URL=http://127.0.0.1:8080`
|
|
- `MORZ_INFOBOARD_MQTT_BROKER=tcp://127.0.0.1:1883`
|
|
|
|
Beispiel:
|
|
|
|
```bash
|
|
MORZ_INFOBOARD_SCREEN_ID=info01-dev \
|
|
MORZ_INFOBOARD_SERVER_URL=http://127.0.0.1:8080 \
|
|
MORZ_INFOBOARD_MQTT_BROKER=tcp://127.0.0.1:1883 \
|
|
go run ./cmd/agent
|
|
```
|
|
|
|
## Aktuelle Architekturentscheidungen mit direkter Auswirkung auf Entwicklung
|
|
|
|
- `message_wall` wird serverseitig in konkrete Screen-Szenen aufgeloest
|
|
- Kampagnengruppen werden serverseitig in konkrete Screen-Assignments expandiert
|
|
- `playlist_items` haben im finalen Implementierungsschema keinen direkten `screen_id`-Fremdschluessel
|
|
- Provisionierung wird worker-/jumphost-faehig geplant
|
|
- API-Fehler sollen einen einheitlichen Fehlerumschlag nutzen
|
|
|
|
## Empfohlene naechste Implementierungsschritte
|
|
|
|
1. Backend: einheitliches Fehlerformat und Routing-Grundstruktur anlegen
|
|
2. Backend: Konfigurations- und App-Lifecycle stabilisieren
|
|
3. Agent: dateibasierte Konfiguration zusaetzlich zu Env vorbereiten
|
|
4. Agent: strukturierte Logs und Health-Modell einziehen
|
|
5. Danach erst DB-, MQTT- und API-Funktionalitaet ausbauen
|
|
|
|
## Arbeitsweise
|
|
|
|
Empfohlen:
|
|
|
|
- kleine, klar umrissene Commits
|
|
- zuerst Konzepte anpassen, dann Code
|
|
- Schema und API-Vertrag synchron halten
|
|
- neue Fachentscheidungen immer in `docs/` dokumentieren
|
|
|
|
## Hinweise fuer einen zweiten Entwicklungsrechner
|
|
|
|
- vor Arbeitsbeginn `git pull --rebase` oder gleichwertig den aktuellen Stand holen
|
|
- bei paralleler Arbeit zuerst in den Dokumenten pruefen, ob neue Architekturentscheidungen getroffen wurden
|
|
- falls lokale Tools abweichen, mindestens `go version` und `make --version` pruefen
|