Multi-Tenant-Umschaltung + Pro-Tenant-Vorgaben, RPA deaktiviert

- Multi-Tenant: Settings-Schalter Single/Multi, Profile mit je eigener
  App-Registrierung, Topbar-Umschalter mit Sofort-Reconnect; verlustfreie
  Migration (Get-ActiveConnection/-TenantProfile, /api/tenants[/switch]).
- Pro-Tenant-Overrides mit globalem Fallback: Abteilungs-Praefixe sowie
  Required-/Available-Gruppen-Naming (Get-DepartmentPrefixes/Get-GroupNaming
  tenant-bewusst; New-GroupEndpoint nutzt Resolver).
- RPA komplett deaktiviert: Mode-Tab, globaler Settings-Abschnitt und
  Test-Anzeige entfernt.
- Setup-Zwang gelockert: nur Tenant ID + Client ID Pflicht; Abteilungs-
  Praefixe optional (kein harter Setup-Blocker mehr).
- api(): "Failed to fetch" -> klare Meldung "Server nicht erreichbar…".
- Hilfe-Footer: "Entwickelt von WendeIT – Marco Wende".

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-19 19:16:34 +02:00
co-authored by Claude Opus 4.8
parent f36e9c5ba0
commit 37ae32bb94
7 changed files with 638 additions and 105 deletions
+52
View File
@@ -5407,3 +5407,55 @@ body.read-only .app-row {
color: var(--text-dim, #888);
font-size: 13px;
}
/* =============================================================
Multi-Tenant: Topbar-Umschalter + Profil-Editor
============================================================= */
.tenant-switch {
height: 30px;
max-width: 200px;
padding: 0 8px;
border: 1px solid var(--hairline, var(--border));
border-radius: 6px;
background: var(--canvas, var(--bg2));
color: var(--ink, var(--text));
font-size: 12.5px;
font-family: inherit;
cursor: pointer;
}
.tenant-switch:hover { border-color: var(--brand, var(--accent)); }
.tenant-list { display: flex; flex-direction: column; gap: 10px; }
.tenant-row {
border: 1px solid var(--border);
border-radius: 8px;
padding: 10px;
background: var(--bg2, transparent);
}
.tenant-row-head {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 8px;
}
.tenant-row-head .tenant-label { flex: 1; }
.tenant-active {
display: inline-flex;
align-items: center;
gap: 5px;
font-size: 12px;
color: var(--text-dim, #888);
white-space: nowrap;
cursor: pointer;
}
.tenant-active input { cursor: pointer; }
.tenant-remove { flex: 0 0 auto; line-height: 1; padding: 4px 8px; }
.tenant-row-grid { display: flex; flex-direction: column; gap: 6px; }
.tenant-empty { padding: 8px 0; }
/* Multi-Tenant: Pro-Profil Overrides (Präfixe/RPA) */
.tenant-row-overrides { margin-top: 8px; display: flex; flex-direction: column; gap: 3px; }
.tenant-sub-lbl { font-size: 11px; font-weight: 600; color: var(--text-dim, #888); margin-top: 4px; }
.tenant-sub-hint { font-weight: 400; opacity: 0.8; }
.tenant-row-overrides textarea { resize: vertical; }
.tenant-naming-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }