Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
5.5 KiB
5.5 KiB
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 Fachkonzepteserver/backend/fuer das zentrale Go-Backendplayer/agent/fuer den Go-basierten Player-Agentplayer/ui/spaeter fuer die lokale Player-Oberflaecheansible/spaeter fuer Deployment und Provisionierungcompose/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:
gitgoin Version1.24.xmake
Spaeter zusaetzlich sinnvoll:
dockerunddocker composepostgresql-clientmosquitto-clientsgolangci-lint
Fuer Container-Builds liegen erste Dockerfiles in:
server/backend/Dockerfileplayer/agent/Dockerfile
Schnellstart
Repository klonen:
git clone git.az-it.net:az/morz-infoboard.git
cd morz-infoboard
Dokumentationsbasis lesen:
README.mdPLAN.mdTECH-STACK.mddocs/SCHEMA.mddocs/OFFENE-ARCHITEKTURFRAGEN.mddocs/LAYOUT-JSON.md
Build-Kommandos
Backend bauen
cd server/backend
go build ./...
Agent bauen
cd player/agent
go build ./...
Alternativ ueber Makefile
make build
Aktuell bedeutet das:
make buildbaut Backend und Agentmake build-backendbaut nurserver/backendmake build-agentbaut nurplayer/agentmake run-backendstartet das Backendmake run-agentstartet den Agentenmake fmtformatiert beide Go-Modulemake lintprueft beide Go-Module mitgolangci-lint
Hinweis:
- auf dem aktuellen System dieser Session sind
makeundgonicht installiert; die Befehle sind fuer den Entwicklungsrechner vorbereitet
Lokaler Start
Backend lokal starten
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:
MORZ_INFOBOARD_HTTP_ADDR=:18080 go run ./cmd/api
Agent lokal starten
cd player/agent
go run ./cmd/agent
Standardwerte:
MORZ_INFOBOARD_SCREEN_ID=unset-screenMORZ_INFOBOARD_SERVER_URL=http://127.0.0.1:8080MORZ_INFOBOARD_MQTT_BROKER=tcp://127.0.0.1:1883
Optional dateibasiert:
MORZ_INFOBOARD_CONFIG=/etc/signage/config.json
Eine Beispielkonfiguration liegt in player/config/config.example.json.
Beispiel:
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_wallwird serverseitig in konkrete Screen-Szenen aufgeloest- Kampagnengruppen werden serverseitig in konkrete Screen-Assignments expandiert
playlist_itemshaben im finalen Implementierungsschema keinen direktenscreen_id-Fremdschluessel- Provisionierung wird worker-/jumphost-faehig geplant
- API-Fehler sollen einen einheitlichen Fehlerumschlag nutzen
Empfohlene naechste Implementierungsschritte
- Backend: einheitliches Fehlerformat und Routing-Grundstruktur anlegen
- Backend: Konfigurations- und App-Lifecycle stabilisieren
- Agent und Backend: den HTTP-Statuspfad als Grundlage fuer Identitaet, Persistenz und spaetere Admin-Vorschau erweitern
- Agent: danach MQTT-spezifische Reachability und feinere Connectivity-Schwellenlogik aufsetzen
- Danach die Netzwerk-, Sync- und Kommandopfade schrittweise produktionsnah ausbauen
Ergaenzt seit dem ersten Geruest:
message_wall-Resolver im Backend- Basisendpunkte und
message_wall-Validierung im Backend testseitig breiter abgedeckt - erster
POST /api/v1/player/status-Endpunkt im Backend - letzter bekannter Player-Status wird im Backend pro Screen in-memory vorgehalten und lesbar gemacht
- dateibasierte Agent-Konfiguration zusaetzlich zu Env-Overrides
- strukturierte Agent-Logs mit internem Health-Snapshot und signalgesteuertem Shutdown
- erster periodischer HTTP-Status-Reporter im Agent
- Server-Connectivity-Zustand im Agent (
unknown,online,degraded,offline) auf Basis der Report-Ergebnisse - der HTTP-Statuspfad transportiert jetzt neben
statusauchserver_connectivity - lokales Compose-Grundgeruest fuer PostgreSQL und Mosquitto
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 --rebaseoder gleichwertig den aktuellen Stand holen - bei paralleler Arbeit zuerst in den Dokumenten pruefen, ob neue Architekturentscheidungen getroffen wurden
- falls lokale Tools abweichen, mindestens
go versionundmake --versionpruefen