Fuer den Betrieb fehlte bisher eine Rolle: "user" meldet zwar Daten, bleibt in der Buero-Visualisierung aber unsichtbar, weil sie nie einen Schreibtisch bekommt. Der Ping-Check aus check_fds.sh (Weg 3 im README) lief deshalb als "user" und tauchte im Buero nicht auf. "ops" fuellt die Luecke: die Schreibtischvergabe in AgentRepository::register() greift automatisch, sobald die Rolle erlaubt ist - nur "user" bleibt ohne Platz. Der CHECK-Constraint auf agents.role braucht dafuer eine eigene Migration. Ein Edit von 001_initial.sql wuerde nur frische Datenbanken erreichen: bestehende Installationen haben die Migration laut schema_migrations laengst angewandt und wuerden bei role='ops' weiterhin abbrechen. SQLite kann CHECK nicht per ALTER TABLE aendern, 004 baut die Tabelle deshalb neu (Verfahren aus der SQLite-Doku, foreign_keys kurz aus, weil tickets.assignee_agent_id auf agents zeigt). Im Frontend bekommt die Rolle Label "OPs", eine Akzentfarbe und ein Zahnrad als Schreibtisch-Deko - ohne Eintrag in der ROLES-Map rendert der Avatar grau und ohne Label. Neu ist ausserdem register-ops-agent.sh neben der docker-compose.yml: es liest Admin-Key und Basis-URL aus der .env, registriert den lokalen OPs-Agenten und schreibt den nur einmalig ausgegebenen API-Key mit chmod 600 nach monitor-api.conf - also genau die beiden Schritte aus Weg 3, die hosts.conf und credentials.conf nicht abdecken. Eine vorhandene monitor-api.conf ueberschreibt es nicht, und ein zweiter Agent gleichen Namens (der einen weiteren der acht Schreibtische belegen wuerde) wird vorher abgefangen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| bin | ||
| docker | ||
| public | ||
| src | ||
| tests/Unit | ||
| .dockerignore | ||
| composer.json | ||
| composer.lock | ||
| phpunit.xml | ||
| README.md | ||
monitor REST-API (Phase 1)
Vanilla-PHP-REST-API (kein Framework, siehe Visualization.md Abschnitt 5) fuer Tickets,
Events, Systeme, KPIs und Agenten. Persistenz in SQLite (api/data/monitor.sqlite).
Vollstaendige Endpunkt-Dokumentation: ../API.md.
Entwicklung nur mit Docker (kein lokales PHP/Composer noetig)
Aus dem Repo-Wurzelverzeichnis:
cp .env.example .env # einmalig, MONITOR_ADMIN_API_KEY anpassen
docker compose up --build # startet die API auf http://localhost:8080
docker compose run --rm api composer test # PHPUnit inkl. Coverage
docker compose run --rm api php bin/sync-codeberg.php # Backlog/Done einmalig ziehen (Debug)
Im laufenden Betrieb wird der Codeberg-Sync nicht manuell angestossen, sondern vom
Compose-Service sync alle MONITOR_SYNC_INTERVAL Sekunden ausgefuehrt (siehe
../API.md, Abschnitt "Codeberg-Sync").
Composer-Abhaengigkeiten (nur PHPUnit als Dev-Dependency) werden beim ersten Start
automatisch im Container installiert (docker/entrypoint.sh) - auf dem Host ist
weder PHP noch Composer noch SQLite erforderlich.