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>
50 lines
1.4 KiB
Bash
Executable file
50 lines
1.4 KiB
Bash
Executable file
#!/bin/bash
|
|
#
|
|
# Registriert einen neuen Agenten bei der monitor-REST-API (POST /api/v1/agents).
|
|
# Siehe API.md Abschnitt "Agenten" fuer Details.
|
|
#
|
|
# Wichtig: Der zurueckgegebene API-Key wird nur bei dieser Registrierung einmalig
|
|
# ausgegeben - unbedingt sicher speichern, er laesst sich danach nicht erneut abrufen.
|
|
|
|
set -euo pipefail
|
|
|
|
# --- Hier die Variablen fuer die Registrierung eintragen ---------------------
|
|
|
|
# Basis-URL der laufenden API (z.B. lokal via "docker compose up")
|
|
BASE_URL="http://localhost:8080"
|
|
|
|
# Admin-Key aus MONITOR_ADMIN_API_KEY (siehe .env)
|
|
ADMIN_API_KEY=""
|
|
|
|
# Anzeigename des neuen Agenten
|
|
DISPLAY_NAME=""
|
|
|
|
# Rolle: entwickler | product_owner | qa | ops | user
|
|
ROLE="entwickler"
|
|
|
|
# -------------------------------------------------------------------------------
|
|
|
|
if [ -z "$ADMIN_API_KEY" ]; then
|
|
echo "Fehler: ADMIN_API_KEY ist nicht gesetzt." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$DISPLAY_NAME" ]; then
|
|
echo "Fehler: DISPLAY_NAME ist nicht gesetzt." >&2
|
|
exit 1
|
|
fi
|
|
|
|
response=$(curl -sS -w '\n%{http_code}' -X POST "${BASE_URL}/api/v1/agents" \
|
|
-H "Content-Type: application/json" \
|
|
-H "X-Admin-Key: ${ADMIN_API_KEY}" \
|
|
-d "{\"display_name\": \"${DISPLAY_NAME}\", \"role\": \"${ROLE}\"}")
|
|
|
|
http_code=$(echo "$response" | tail -n1)
|
|
body=$(echo "$response" | sed '$d')
|
|
|
|
echo "$body"
|
|
|
|
if [ "$http_code" != "201" ]; then
|
|
echo "Fehler: HTTP $http_code" >&2
|
|
exit 1
|
|
fi
|