Hostnamenkonvention: serverseitige Vergabe für neue Geräte

- Migration 0039: organizations.hostname_praefix/-stellen/-nummer_modus/
  -naechste_sequenz. Leerer Präfix = keine Konvention (unverändertes
  Verhalten, Client bestimmt den Hostnamen selbst).
- generate_hostname_for_organization(): erzeugt "<praefix>-<nummer>",
  sequenziell (Zeilen-Lock via FOR UPDATE) oder zufällig (freie Nummer
  per secrets.randbelow(), Kollisionsprüfung gegen vorhandene Hostnamen,
  Fallback auf nächste freie sequenzielle Nummer nach 20 Versuchen).
- resolve_hostname_for_activation(): greift nur bei einem GENUIN NEUEN
  Gerät (device_fingerprint noch unbekannt) - eine Re-Aktivierung eines
  bekannten Geräts behält immer den vom Client gemeldeten Hostnamen,
  überschreibt also keine manuelle Umbenennung.
- agent_checkin(): liefert jetzt auch "hostname" (devices.hostname) an
  den Agenten.
- Neue Endpunkte GET/PUT /api/v1/organizations/{id}/hostname-konvention.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
This commit is contained in:
adminandClaude Sonnet 5 committed 2026-09-10 12:06:35 +02:00
1 parent 10d31f8cf3
commit bfbd8f7b17
2 files changed
+193 -2

No files matched your search

+17
View File
@@ -0,0 +1,17 @@
BEGIN;
-- Schritt 3 der Workspace-Creator-Design-Runde (10.09.2026, siehe
-- project_phase2_app_store_merkmale-Memory / Roadmap-Update): optionale
-- Organisations-weite Hostnamenkonvention - erzeugt bei der Aktivierung
-- eines GENUIN NEUEN Geräts (nicht bei Re-Aktivierung eines bekannten)
-- automatisch einen Hostnamen nach Muster "<praefix>-<nummer>", statt den
-- vom Client gemeldeten zu übernehmen. hostname_praefix bleibt NULL, wenn
-- keine Konvention konfiguriert ist - dann unverändertes Verhalten wie
-- bisher (Client bestimmt den Hostnamen selbst).
ALTER TABLE organizations ADD COLUMN hostname_praefix TEXT;
ALTER TABLE organizations ADD COLUMN hostname_stellen SMALLINT NOT NULL DEFAULT 4;
ALTER TABLE organizations ADD COLUMN hostname_nummer_modus TEXT NOT NULL DEFAULT 'sequenziell'
CHECK (hostname_nummer_modus IN ('sequenziell', 'zufaellig'));
ALTER TABLE organizations ADD COLUMN hostname_naechste_sequenz INTEGER NOT NULL DEFAULT 1;
COMMIT;