feat(users): Willkommensmail mit Wellen-Kopf und Logo, Spalte Letzte Anmeldung
Tessera CI/CD / Lint & Type Check (push) Successful in 48s
Tessera CI/CD / Tests (push) Successful in 1m18s
Tessera CI/CD / Desktop-Pakete bauen (push) Successful in 18s
Tessera CI/CD / Build & Publish Images (push) Successful in 3m11s

POST /users/:id/welcome-mail (gleiche Rechte wie Bearbeiten, jederzeit sendbar),
GET /users/welcome-mail/status; HTML-Mail (Tabellenlayout, Inline-Stile,
Kopfbild als CID-PNG aus assets/mail/welcome-header.svg, erzeugt mit
scripts/render-mail-header.mjs) plus Textfassung. Verzeichniskonten: Hinweis
auf Windows-Passwort; lokale Konten: Link Passwort festlegen (7 Tage, einmalig).
Neue Spalte User.welcomeMailSentAt (Migration 20260930120000). Benutzerliste:
Spalte Letzte Anmeldung, Zeilenaktionen als Symbole. Dockerfile kopiert
apps/api/assets. Lokal per MailHog nachgewiesen.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-30 15:28:52 +02:00
parent 0b34e82b21
commit 32441d77c7
24 changed files with 1540 additions and 115 deletions
@@ -0,0 +1,15 @@
-- Willkommensmail aus der Benutzerverwaltung (Administrator → Benutzer).
--
-- Merkt pro Benutzer, wann zuletzt eine Willkommensmail verschickt wurde,
-- damit die Liste "Willkommensmail gesendet am …" zeigen kann. Gesetzt nur
-- ueber POST /users/:id/welcome-mail nach erfolgreichem Versand; erneutes
-- Senden ueberschreibt den Wert. NULL = nie gesendet. Kein Standardwert,
-- kein Backfill.
--
-- Keine neue Regel noetig: die Spalte liegt in "User", dessen
-- tenant_isolation_policy die ganze Zeile schuetzt. Die Anmelde-Funktionen
-- auth_lookup_* liefern eine feste Spaltenliste (RETURNS TABLE) und bleiben
-- unberuehrt.
-- AlterTable
ALTER TABLE "User" ADD COLUMN "welcomeMailSentAt" TIMESTAMP(3);