Zweistufig wie der Werkzeugkatalog: Betreiber pflegt den plattformweiten Standard (/betreiber/email-vorlagen), jeder Mandant kann ihn für sich übersteuern (/verwaltung/email-vorlagen) - ResolveEmailVorlage nutzt die eigene Vorlage falls vorhanden, sonst fällt sie auf den Plattform- Standard zurück. Passwort-Zurücksetzen ist die einzige aktuell existierende E-Mail und nutzt jetzt diese Vorlage statt Hardcoding. Bug beim Live-Verifizieren gefunden: UNIQUE(account_id, typ) verhindert bei NULLABLE account_id keine Duplikate (NULL != NULL in SQL) - jedes Speichern des Plattform-Standards erzeugte eine neue Zeile statt sie zu aktualisieren. Fix: zwei partielle Unique-Indizes statt eines gemeinsamen Constraints, mit Regressionstest abgesichert. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
33 lines
981 B
HTML
33 lines
981 B
HTML
{{define "betreiber-dashboard"}}<!doctype html>
|
|
<html lang="de">
|
|
<head>{{template "head" .}}</head>
|
|
<body>
|
|
{{template "nav" .Nav}}
|
|
<div class="page page-wide">
|
|
<h1>Plattform</h1>
|
|
<ul class="stat-cards">
|
|
<li>
|
|
<a class="stat-card" href="/betreiber/accounts">
|
|
<span class="stat-card-value">{{.AccountCount}}</span>
|
|
<span class="stat-card-label">Accounts</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a class="stat-card" href="/betreiber/werkzeuge">
|
|
<span class="stat-card-value">{{.WerkzeugCount}}</span>
|
|
<span class="stat-card-label">Werkzeugkatalog</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a class="stat-card" href="/betreiber/audit-log">
|
|
<span class="stat-card-value">{{.RecentAuditCount}}</span>
|
|
<span class="stat-card-label">Audit-Log (neueste)</span>
|
|
</a>
|
|
</li>
|
|
<li><a class="stat-card stat-card-action" href="/betreiber/email-vorlagen"><span class="stat-card-label">E-Mail-Vorlagen →</span></a></li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
{{end}}
|