Commit graph

25 commits

Author SHA1 Message Date
fds2610-bot
ba52522415 Frontend-API-URL ueber MONITOR_API_BASE konfigurieren statt aus dem Port raten
Die Basis-URL der API wurde bisher aus dem Port der Seite abgeleitet
(office.html: `if (location.port === "8090")`). Laeuft das Frontend hinter
anderen Ports - in Produktion 4443 (web) / 4444 (api) - griff die Bedingung
nicht, der relative Default /api/v1 lief gegen den Webserver ins Leere, und
die Szene fiel still auf Demo-Daten zurueck: fremde Agenten-Namen und
erfundene Ticketzahlen bei gleichzeitig leeren Detail-Modals.

Die URL kommt jetzt aus MONITOR_API_BASE (.env, Default passend zum
Port-Mapping in docker-compose.yml). Der Webserver liefert den Wert zur
Laufzeit als /config.js aus; das nginx-Image setzt ihn beim Start per
envsubst in die Config ein (default.conf -> default.conf.template). Damit
bleibt html/ ein rein statisches, read-only gemountetes Verzeichnis - kein
Build-Schritt, kein eigenes Entrypoint-Skript. Ein leerer Wert bedeutet
"gleicher Origin" und faellt auf /api/v1 zurueck.

Zusaetzlich macht ein roter Banner "API nicht erreichbar!" den Demo-Fallback
sichtbar, statt ihn wie bisher stillschweigend als echte Daten auszugeben.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 22:54:36 +02:00
fds2610
9f1fa520d7 Merge pull request 'Phase 6+7 der Neuausrichtung: Tuer-Besuche + alte Tabellenansicht entfernt' (#9) from fds2610-bot/monitor:main into main
Reviewed-on: https://codeberg.org/fds2610/monitor/pulls/9
2026-07-28 22:08:20 +02:00
fds2610-bot
9aa6836bc6 Phase 6+7 der Neuausrichtung: Tuer-Besuche der Rolle "user", alte Tabellenansicht entfernt
Phase 6 (F2): detectDoorVisits() erkennt die drei Anlaesse aus den Detailantworten
(neues per Codeberg-Sync angelegtes Backlog-Ticket, Ticket erreicht "fertig", Ticket
erreicht "done") durch Diff zweier Ticket-Snapshots. office-render.js laesst dafuer
einen "user"-Besucher durch die linke Tuer hereinkommen, zum Board laufen, kurz
interagieren und wieder hinausgehen - unabhaengig vom Daten-Refresh-Takt, damit ein
Besuch auch bei einem zwischenzeitlichen Refresh sauber zu Ende animiert.

Phase 7 (F16): html/mon.html, script.js und styles.css sind entfallen ("kann
entfallen" laut Detailantworten); check_fds.sh/mail_fds.py/status.txt speisen
weiterhin unveraendert den System-Monitor. Unit-Tests fuer die neue Tuer-Logik
ergaenzt (weiterhin 100% Line-Coverage, node --test). E2E-Tests bleiben bewusst
ausserhalb dieser Phase.

Ausserdem: update.sh (holt die neueste Version vom konfigurierten Git-Remote und
faehrt die Docker-Compose-Entwicklungsumgebung hoch) und register-agent.sh
(Hilfsskript zur Agenten-Registrierung per API) ergaenzt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 21:58:29 +02:00
fds2610
f383ce2d33 Merge pull request 'Phase 3-5 der Neuausrichtung: Board/Monitor-Wand live, SSE-Push, Agenten-Animation' (#8) from fds2610-bot/monitor:main into main
Reviewed-on: https://codeberg.org/fds2610/monitor/pulls/8
2026-07-28 18:33:34 +02:00
fds2610-bot
cfe82b6a4d Buero-Szene fuellt den sichtbaren Bereich statt Full-Screen zu erwarten
Die Szene war auf volle Fensterbreite ausgelegt und lief im normalen
Fenstermodus unten aus dem Bild (bei 1440x700 z.B. um 232px).

- body als Flex-Spalte ueber die Viewport-Hoehe. Bewusst height statt
  min-height: nur eine definite Hoehe laesst die prozentualen
  max-height-Angaben der Szene aufloesen.
- #office-scene nimmt die Resthoehe (flex: 1, min-height: 0) und
  zentriert das SVG.
- Das SVG richtet sich an der jeweils knapperen Achse aus - zwei
  Media-Queries auf 16/9 schalten zwischen hoehen- und breitenbegrenzt
  um, max-width/max-height sind das Sicherheitsnetz fuer den
  Grenzbereich (die Header-Hoehe geht in das Verhaeltnis der
  Szenenflaeche ein, in die Media-Query aber nicht).
- Bei knappem Platz weicht der erklaerende Fliesstext im Header.

Gemessen in Chromium ueber 1920x1080 bis 500x900: kein Overflow,
Seitenverhaeltnis durchgehend exakt 16:9.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 18:25:16 +02:00
fds2610-bot
daef7a2926 Nginx-Config: office.html als Einstiegsseite
Ohne index-Direktive liefert nginx beim Aufruf der Basis-URL ein 403, weil
das Directory-Listing deaktiviert ist und es keine index.html gibt. Die
Config setzt office.html als Einstiegsseite; try_files sorgt dafuer, dass
unbekannte Pfade ein 404 statt eines 403 ergeben.

Betrifft auch die Produktion: hinter dem Reverse Proxy (4443 -> 8090) traf
ein Aufruf der Basis-URL bisher dasselbe 403.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 18:25:03 +02:00
fds2610-bot
10ecad93d5 Phase 3-5 der Neuausrichtung: Board/Monitor-Wand live, SSE-Push, Agenten-Animation
Setzt Visualization.md Abschnitt 9, Phasen 3-5 vollstaendig um:

Phase 3 (Kanban-Board live): Board zeigt echte Ticket-Daten aus GET /api/v1/tickets
(office-api.js), Klick auf eine Spalte oeffnet ein Modal mit Titel/Beschreibung/Typ und
einem Link auf die Codeberg-Quelle bei per Sync angelegten Tickets (F4).

Phase 4 (Monitor-Wand live): Event-, System- und KPI-Monitor zeigen echte Daten,
Klick-Modals fuer alle drei. Neuer SSE-Endpoint GET /api/v1/stream (F13) meldet per
ChangeFeed-Fingerabdruck, welche Ressourcen sich geaendert haben; office-realtime.js nutzt
EventSource mit Polling-Fallback. KPI-Monitor zeichnet eine eigene SVG-Sparkline (F10, kein
Chart-Lib) sobald KPIs gemeldet wurden, sonst weiterhin der Phase-2-Platzhalter (F7 bleibt
inhaltlich offen). API-Antworten tragen jetzt CORS-Header, da Frontend (:8090) und API
(:8091) im Docker-Compose-Setup unterschiedliche Origins sind.

Phase 5 (Agenten & Animation): resolveAgentVisualState bildet gemeldete Agenten-Zustaende
auf Ort/Pose ab; Agenten-Avatare sind eine per CSS transition animierte, von Board/
Schreibtisch-Moebeln entkoppelte Schicht, die zwischen Schreibtisch, Board, Monitor-Wand und
einer neuen Kaffee-Ecke laufen. Idle-Varianten (Zeitung/Kaffee/Schwaetzchen) werden rein
kosmetisch client-seitig zufaellig ausgeloest (F8), eine AnimationQueue serialisiert
Update-Animationen bei vielen gleichzeitigen Ereignissen (F9).

29 Node-Tests (100% Line-Coverage office-scene.js) und neue PHPUnit-Tests fuer
Response::stream(), ChangeFeed, StreamController und die neuen Repository::fingerprint()-
Methoden. PHP/Docker-Ausfuehrung konnte in dieser Umgebung nicht verifiziert werden (kein
PHP verfuegbar) - vor dem Merge bitte `docker compose run --rm api composer test` pruefen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 17:50:44 +02:00
fds2610
954ef47302 Merge pull request 'Phase 2: Statische Buero-Szene (SVG, Demo-Daten)' (#7) from fds2610-bot/monitor:main into main
Reviewed-on: https://codeberg.org/fds2610/monitor/pulls/7
added minor corrections
2026-07-28 17:22:50 +02:00
fds2610-bot
33ea00aefe Docker-Compose: Ports auf 8090/8091, Platzhalter fuer API.md-Mount
Der web-Container startete nicht: html/ wird read-only gemountet, deshalb
konnte Docker den Mountpoint fuer das nachfolgende File-Bind-Mount von
API.md nicht anlegen (mknod auf read-only filesystem). Ein Platzhalter
html/API.md im Repo loest das, ohne das :ro aufgeben zu muessen.

Ausserdem die Host-Ports auf 8090 (web) und 8091 (api) verschoben.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 17:19:44 +02:00
fds2610-bot
37693a09a1 Phase 2 der Neuausrichtung: Statische Buero-Szene (SVG, Demo-Daten)
Setzt Phase 2 aus Visualization.md um: Vanilla-SVG-Buero-Szene (Waende, 2 Tueren,
8 Schreibtische, Kanban-Board-Rahmen mit 7 Spalten, Monitor-Wand mit Event-/System-/
KPI-Monitor) ohne Animation, gespeist mit statischen Demo-Daten im Format der
Phase-1-API-Responses. Board-Stapel-Logik (>5 Tickets, Done-Spalte als Dauerstapel)
folgt Detailantworten.md F2/F3.

Reine Layout-Logik (html/js/office-scene.js) ist ausgelagert und mit dem Node-
Testrunner abgedeckt (100% Zeilenabdeckung, tests/frontend/), das DOM-Rendering
(office-render.js) bleibt bewusst duenne Glue-Logik. Docker-Compose um web- (nginx,
serviert html/) und frontend-Service (node, "npm test") erweitert, analog zum
bestehenden api-Service und zum NC-Gantt-Vorbild: kein PHP/Node auf dem Host noetig.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 00:19:22 +02:00
fds2610
68a57b2e1f Merge pull request 'Vier fehlschlagende Tests behoben + composer.lock einchecken' (#6) from fds2610-bot/monitor:main into main
Reviewed-on: https://codeberg.org/fds2610/monitor/pulls/6
2026-07-27 20:32:01 +02:00
fds2610-bot
09a3b928ab Vier fehlschlagende Tests behoben
1. AgentRepository::updateActivity() schrieb current_ticket_id ungeprueft. Eine
   unbekannte Ticket-ID lief in die FOREIGN-KEY-Constraint und kam als
   ungefangene PDOException samt Stacktrace und Dateipfaden beim Client an.
   Jetzt wird die Existenz vorab geprueft (422). Zusaetzlich faengt
   Application::handle() unerwartete Throwables ab und antwortet mit einem
   generischen 500 - Details gehen nur noch ins Log.

2. Die Normalisierung der Codeberg-Label-Farbe ("#" davor) lag im
   CurlCodebergClient statt im CodebergSyncService. Damit haetten andere
   Client-Implementierungen unterschiedliche Farbformate ins Ticket geschrieben.
   Verschoben in die Domaenenschicht, leere Farben ergeben jetzt null.

3. Config::get() griff selbst auf getenv() zurueck, wodurch ein in der Umgebung
   gesetzter CODEBERG_TOKEN in eine explizit gebaute Config durchschlug - im
   Testlauf landete der Token im Klartext in der PHPUnit-Ausgabe. Die Umgebung
   wird jetzt ausschliesslich in fromEnvironment() eingesammelt.

Regressionstests fuer alle drei Punkte ergaenzt: 104 Tests, 181 Assertions.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 20:17:31 +02:00
fds2610-bot
93a1586289 composer.lock einchecken
Die Lock-Datei entstand bisher erst beim ersten Container-Start und war nicht
versioniert - damit bekam jede Umgebung potenziell eine andere PHPUnit-Version.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 20:17:18 +02:00
fds2610
dd8c5a5de2 Merge pull request 'Phase 1: REST-API fuer Tickets/Events/Systeme/KPIs/Agenten (Docker-Compose-Dev)' (#5) from fds2610-bot/monitor:main into main
Reviewed-on: https://codeberg.org/fds2610/monitor/pulls/5
2026-07-27 19:43:36 +02:00
fds2610-bot
857fc88834 Phase 1 der Neuausrichtung: REST-API fuer Tickets/Events/Systeme/KPIs/Agenten
Setzt Phase 1 aus Visualization.md um: Vanilla-PHP-REST-API mit SQLite-Persistenz,
statischen API-Keys pro Agent, Codeberg-Sync fuer Backlog/Done, PHPUnit-Tests und
vollstaendiger API.md-Dokumentation - Vorgaben aus Detailantworten.md (F1-F16)
umgesetzt. Entwicklung/Build/Test laufen komplett in Docker-Compose-Containern
(PHP 8.2 + SQLite + Composer + PHPUnit/pcov), analog zum NC-Gantt-Projekt ist auf
dem Host kein PHP/Composer noetig.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 19:38:52 +02:00
fds2610
56d7a8cfac Merge pull request 'Plan für Neuausrichtung als Büro-Visualisierung' (#3) from fds2610-bot/monitor:main into main
Reviewed-on: https://codeberg.org/fds2610/monitor/pulls/3
2026-07-09 17:37:19 +02:00
fds2610
b68609b043 Detailantworten.md
Antworten zu Detailfragen.md
2026-07-09 17:37:07 +02:00
fds2610-bot
627269b7a1 Plan für Neuausrichtung als Büro-Visualisierung (Issue #2)
Fügt Visualization.md (Zielbild, Architektur, REST-API-Entwurf,
Teststrategie, Phasenplan) und Detailfragen.md (offene Detailfragen zu
Rollen, Board, Monitoren, Technik, Tests, Migration) hinzu.
2026-07-09 16:12:53 +02:00
fds2610
bca4df5cd4 not used anymore 2025-11-11 11:54:33 +01:00
fds2610
1b932a8ddd bugfixing 2025-11-11 10:52:47 +00:00
fds2610
c5ea6d336e external script.js 2025-11-11 10:09:17 +00:00
fds2610
c622116fb7 add favicon, external styles.css 2025-11-11 10:01:47 +00:00
fds2610
5287a23c46 lokale Zeitzone Anzeige 2025-11-11 09:34:13 +00:00
fds2610
66c94e0ba1 first commit 2025-11-10 15:14:10 +00:00
fds2610
fd8c64c9fe :qErster Commit 2025-11-10 14:31:17 +00:00