# Info-Board Neu - Erste Test-Checkliste fuer den Entwicklungsrechner

## Ziel

Diese Liste beschreibt die ersten sinnvollen Verifikationsschritte auf einem Entwicklungsrechner mit installiertem `go` und optional `make`.

## 1. Tooling pruefen

```bash
go version
make --version
docker --version
docker compose version
```

Erwartung:

- `go` ist in Version `1.24.x` verfuegbar
- `make` ist vorhanden oder die Kommandos werden direkt mit `go` ausgefuehrt

## 2. Repository holen und Status pruefen

```bash
git clone git.az-it.net:az/morz-infoboard.git
cd morz-infoboard
git status
```

Erwartung:

- sauberer Working Tree

## 3. Backend bauen

Mit Make:

```bash
make build-backend
```

Oder direkt:

```bash
cd server/backend
go build ./...
```

Erwartung:

- Build ohne Fehler

## 4. Backend-Tests laufen lassen

```bash
cd server/backend
go test ./...
```

Erwartung:

- Tests fuer `messagewall` und HTTP-Bausteine laufen gruen durch

## 5. Backend lokal starten

```bash
cd server/backend
go run ./cmd/api
```

Dann pruefen:

```bash
curl http://127.0.0.1:8080/healthz
curl http://127.0.0.1:8080/api/v1
curl http://127.0.0.1:8080/api/v1/meta
```

Erwartung:

- `healthz` liefert `status=ok`
- `api/v1` liefert Basisinfos
- `api/v1/meta` listet den Tool-Endpunkt auf

## 6. `message_wall`-Resolver testen

```bash
curl -X POST http://127.0.0.1:8080/api/v1/tools/message-wall/resolve \
  -H 'Content-Type: application/json' \
  -d '{
    "source": "/media/banner.png",
    "duration_seconds": 30,
    "load_timeout_seconds": 15,
    "on_error": "skip",
    "layout": {
      "version": 1,
      "coordinate_space": {
        "width": 300,
        "height": 100,
        "unit": "grid"
      },
      "fit_mode": "cover",
      "slots": [
        { "slot_id": "wall-r1-c1", "x": 0, "y": 0, "width": 100, "height": 100 },
        { "slot_id": "wall-r1-c2", "x": 100, "y": 0, "width": 100, "height": 100 },
        { "slot_id": "wall-r1-c3", "x": 200, "y": 0, "width": 100, "height": 100 }
      ]
    }
  }'
```

Erwartung:

- valide JSON-Antwort
- drei aufgeloeste Szenen mit passenden `crop`-Werten

## 7. Agent bauen

Mit Make:

```bash
make build-agent
```

Oder direkt:

```bash
cd player/agent
go build ./...
```

## 8. Agent-Tests laufen lassen

```bash
cd player/agent
go test ./...
```

Erwartung:

- Konfigurationstest laeuft erfolgreich

## 9. Agent lokal mit Beispielkonfiguration starten

```bash
cd player/agent
MORZ_INFOBOARD_CONFIG=../config/config.example.json go run ./cmd/agent
```

Erwartung:

- Agent startet
- Log zeigt Screen-ID, Server-URL, MQTT-Broker und Heartbeat-Ticks

## 10. Compose-Grundgeruest pruefen

```bash
docker compose -f compose/server-stack.yml config
```

Optional starten:

```bash
docker compose -f compose/server-stack.yml up -d
```

Erwartung:

- Compose-Datei ist syntaktisch gueltig
- PostgreSQL und Mosquitto starten lokal

## 11. Ansible-Dateien kurz pruefen

```bash
ansible-playbook --syntax-check -i ansible/inventory.example.yml ansible/site.yml
```

Erwartung:

- Syntax ok

## 12. Falls etwas fehlschlaegt

Dann zuerst pruefen:

- Go-Version korrekt?
- lokale Pfade korrekt?
- `MORZ_INFOBOARD_CONFIG` richtig gesetzt?
- Port `8080` frei?
- Docker/Compose installiert?
- Ansible installiert?

## Reihenfolge fuer sinnvolle erste Fehlerbehebung

1. `go test ./...` in `server/backend`
2. `go test ./...` in `player/agent`
3. Backend-Endpunkte per `curl`
4. Agent mit Beispielconfig
5. Compose-Check
6. Ansible-Syntaxcheck
