No description
Find a file
fds2610-bot bd27923321 Reload-Knopf am Kanban-Board: Tickets komplett neu einlesen (Issue #51)
Manchmal werden bei Codeberg geloeschte oder anderweitig verschwundene Issues
vom periodischen Sync nicht bereinigt (er upsertet nur, ruehrt fehlende Issues
nie an). Neuer Knopf neben der "Kanban-Board"-Ueberschrift stoesst dafuer einen
synchronen Voll-Resync an (POST /api/v1/tickets/resync, X-Admin-Key): jedes
konfigurierte Projekt wird neu gelesen, Tickets zu inzwischen verschwundenen
Issues werden je Projekt entfernt (auch wenn sie manuell auf eine nicht vom
Sync verwaltete Spalte wie "fertig" bewegt wurden), Tickets zu weiterhin
existierenden Issues bleiben unangetastet.

Der PO geht dabei sichtbar ans Board und steht dort, bis die Anfrage
abgeschlossen ist - anders als beim automatischen Board-Besuch (feste
Animationsdauer je Stage) macht das die tatsaechliche Sync-Dauer sichtbar.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-19 19:52:09 +02:00
api Reload-Knopf am Kanban-Board: Tickets komplett neu einlesen (Issue #51) 2026-08-19 19:52:09 +02:00
deploy Auto-Update per Push-Webhook fuer Produktionsserver einrichten 2026-08-04 12:20:41 +02:00
docker/nginx Buero-Ueberschrift durch Agent-Status ersetzen, Erklaertext durch Reload-Countdown ersetzt 2026-07-29 00:03:26 +02:00
html Reload-Knopf am Kanban-Board: Tickets komplett neu einlesen (Issue #51) 2026-08-19 19:52:09 +02:00
tests/frontend Event-Monitor: Zeilen passen in den Monitor, Volltext im Tooltip 2026-08-07 17:49:09 +02:00
.env.example Auto-Update per Push-Webhook fuer Produktionsserver einrichten 2026-08-04 12:20:41 +02:00
.gitignore PHPUnit-Ergebnis-Cache nicht mehr versionieren 2026-08-07 10:40:50 +02:00
API.md Reload-Knopf am Kanban-Board: Tickets komplett neu einlesen (Issue #51) 2026-08-19 19:52:09 +02:00
check_fds.sh :qErster Commit 2025-11-10 14:31:17 +00:00
credentials-sample.conf first commit 2025-11-10 15:14:10 +00:00
deploy-webhook.py Auto-Update per Push-Webhook fuer Produktionsserver einrichten 2026-08-04 12:20:41 +02:00
Detailantworten.md Detailantworten.md 2026-07-09 17:37:07 +02:00
Detailfragen.md Plan für Neuausrichtung als Büro-Visualisierung (Issue #2) 2026-07-09 16:12:53 +02:00
docker-compose.yml Frontend-Tests wieder lauffaehig: Node 24 im Test-Container 2026-08-07 10:51:18 +02:00
echo :qErster Commit 2025-11-10 14:31:17 +00:00
hosts-sample.conf first commit 2025-11-10 15:14:10 +00:00
mail_fds.py :qErster Commit 2025-11-10 14:31:17 +00:00
package.json Abgelaufene Claude-Anmeldung eines Agenten sichtbar machen 2026-08-07 09:52:08 +02:00
README.md Auto-Update per Push-Webhook fuer Produktionsserver einrichten 2026-08-04 12:20:41 +02:00
README_UPDATE.md Auto-Update per Push-Webhook fuer Produktionsserver einrichten 2026-08-04 12:20:41 +02:00
register-agent.sh Phase 6+7 der Neuausrichtung: Tuer-Besuche der Rolle "user", alte Tabellenansicht entfernt 2026-07-28 21:58:29 +02:00
update.sh Codeberg-Sync als Dauerlaeufer statt manuellem Aufruf 2026-07-28 23:29:40 +02:00
Visualization.md Hooks-KPI im KPI-Monitor ergaenzen (Issue #38) 2026-08-04 13:18:05 +02:00

🖥️ monitor

monitor überwacht mehrere Systeme (per Ping und/oder per REST-API-Meldungen entfernter Agenten) und zeigt den Zustand als interaktive Büro-Visualisierung (Kanban-Board + Monitor-Wand mit Agenten an Schreibtischen).

Der vollständige Umbauplan steht in Visualization.md (Roadmap Phase 0-7), die dazugehörigen Klärungen in Detailfragen.md und Detailantworten.md.


🚀 Features

  • REST-API (api/, siehe API.md) für Tickets, Events, Systeme, KPIs und Agenten-Aktivität, mit statischen API-Keys pro Agent
  • Büro-Visualisierung (html/office.html) als Vanilla-SVG-Szene: Kanban-Board, Monitor-Wand (Events/Systeme/KPIs), 8 Schreibtische - zeigt live die Daten aus der REST-API (Push per Server-Sent Events, Polling-Fallback), Klick auf Board/Monitore öffnet Detail-Modals, Agenten laufen animiert zwischen Schreibtisch/Board/Monitor-Wand/Kaffee-Ecke (Phase 3-5, siehe Visualization.md Abschnitt 9). Ist die API nicht erreichbar, zeigt die Szene ersatzweise Demo-Daten — kenntlich gemacht durch einen roten Banner „API nicht erreichbar!". Die Basis-URL der API kommt aus MONITOR_API_BASE (siehe .env.example).
  • Klick auf den PO öffnet ein Modal, in dem sich die vom Codeberg-Sync gelesenen Projekte (Owner/Repo + Farbe) hinzufügen, bearbeiten und löschen lassen (Issue #27) — Änderungen wirken sofort im laufenden sync-Dienst, ohne Neustart. Schreibende Aktionen fragen einmalig den MONITOR_ADMIN_API_KEY ab und merken ihn sich im Browser.
  • Codeberg-Sync als Dauerläufer (Compose-Service sync): füllt Backlog und Done automatisch aus den Issues mehrerer konfigurierter Codeberg-Projekte (je Projekt mit eigener Ticket-Farbe, siehe oben) — periodisch alle MONITOR_SYNC_INTERVAL Sekunden und, wenn ein Webhook eingerichtet ist, innerhalb von Sekunden nach jeder Issue-Änderung (POST /api/v1/webhooks/codeberg, HMAC-signiert per CODEBERG_WEBHOOK_SECRET). Siehe API.md Abschnitt „Codeberg-Sync" — dort steht auch die Einrichtung im Codeberg-Repo.
  • Auto-Update auf einem Produktionsserver: Sobald ein PR nach main gemergt wird, kann deploy-webhook.py denselben update.sh anstoßen, den auch ein manuelles Update aufruft (Push-Webhook, HMAC-signiert per MONITOR_DEPLOY_WEBHOOK_SECRET) — siehe README_UPDATE.md.
  • Weiterhin: klassische Ping-Überwachung (check_fds.sh, hosts.conf, mail_fds.py) als eine Datenquelle für den System-Monitor; die alte tabellarische Statusseite ist mit Phase 7 entfallen (F16), status.txt speist weiterhin den System-Monitor

📁 Projektstruktur

  • api/ — REST-API (PHP, SQLite), siehe api/README.md
  • html/ — Frontend: office.html (Büro-Visualisierung), js/, css/
  • tests/frontend/ — Node-Tests für die Frontend-Layoutlogik (node --test)
  • check_fds.sh, mail_fds.py, hosts-sample.conf — bestehende Ping-Überwachung
  • docker-compose.yml — komplette Entwicklungsumgebung (siehe unten)
  • update.sh — holt die neueste Version vom konfigurierten Git-Remote und aktualisiert die Docker-Compose-Umgebung (Abhängigkeiten, Images, Dienste, Tests)
  • deploy-webhook.py, deploy/ — löst update.sh auf einem Produktionsserver automatisch aus, sobald ein PR nach main gemergt wird (Push-Webhook); siehe README_UPDATE.md
  • register-agent.sh — Hilfsskript, um einen neuen Agenten per POST /api/v1/agents zu registrieren (siehe API.md Abschnitt "Agenten")

🐳 Entwicklung (nur Docker, kein lokales PHP/Node nötig)

Analog zum NC-Gantt-Projekt läuft die gesamte Ausführung (Bauen, Entwickeln, Testen) in Docker-Compose-Containern; auf dem Host muss nichts installiert werden.

cp .env.example .env               # einmalig, MONITOR_ADMIN_API_KEY anpassen

docker compose up --build          # API auf :8091, Buero-Visualisierung auf :8090, Sync
docker compose run --rm api composer test      # PHPUnit (API)
docker compose run --rm frontend               # Node-Tests (Frontend-Layoutlogik)
docker compose logs -f sync                    # Codeberg-Sync mitlesen

Der Browser erreicht die API nicht über das Compose-Netzwerk, sondern über die in MONITOR_API_BASE (.env) hinterlegte URL — der Default http://localhost:8091/api/v1 passt zum Port-Mapping oben. Wer die Ports in docker-compose.yml ändert oder das System hinter einem Reverse Proxy betreibt, muss MONITOR_API_BASE entsprechend nachziehen, sonst zeigt die Szene den Banner „API nicht erreichbar!" und fällt auf Demo-Daten zurück. Der Webserver liefert den Wert zur Laufzeit als /config.js aus (docker/nginx/default.conf.template), ein Build-Schritt ist dafür nicht nötig.

Details zur API: api/README.md. Details zu den Endpunkten: API.md.