Exposes paliad.users.escalation_contact_id (added in migration 025) via
the Benachrichtigungen tab so users can route DRINGEND/overdue
escalation to a specific colleague instead of the global_admins
fallback.
Service:
- UpdateProfileInput.EscalationContactID *string (empty = clear, matches
Dezernat tri-state pattern). Server-side validation rejects self-
pointer (also enforced by CHECK in migration 025) and unknown UUIDs.
Reminder read path:
- digestRow now carries owner.escalation_contact_id and the audience
predicate adds the override. visibleForCategory's "global admin"
branch suppresses when an override is set, so escalation does not
fan out to the whole admin team. Test table extended with override
cases (escalation contact sees overdue / DRINGEND, admin suppressed).
UI / client:
- New "Eskalations-Kontakt" section under Benachrichtigungen with a
select populated from /api/users (excluding self, sorted by name).
First option is the default-fallback marker; selecting it clears.
- savePrefs PATCHes escalation_contact_id alongside the existing
reminder fields.
i18n: einstellungen.prefs.escalation.{heading,hint,default_option}
in DE + EN.
docs/project-status.md: flips the open follow-up to "shipped".
2.8 KiB
Paliad — project status
Living document tracking what's shipped, what's deferred, and historical context. Update when phases land or open follow-ups change. AI instructions live in .claude/CLAUDE.md; this file is project state for humans.
Phase status
Phases A–G shipped (April 2026): schema + RLS, services, Fristenrechner→DB, Akten CRUD, Fristen UI, Termine + CalDAV, Dashboard. See docs/feature-roadmap.md for the per-phase scope.
Phase H (AI Frist-Extraktion) is deferred — decision by m on 2026-04-16 ("we don't want Anthropic API"). The Dokumente tab on Akten detail stays as a "Kommt bald" placeholder. No ANTHROPIC_API_KEY on Dokploy.
Phase I (Notizen polymorphic notes) shipped — paliad.notizen table + RLS (migrations 005, 007), NoteService (internal/services/note_service.go), REST handlers (internal/handlers/notes.go — GET/POST /api/{projects|deadlines|appointments}/{id}/notes, PATCH/DELETE /api/notes/{id}), shared client module frontend/src/client/notes.ts (initNotes), wired into project / deadline / appointment detail pages. i18n keys under notizen.*.
Phase J (this doc + roadmap rewrite + KanzlAI doc retirement notes) completed 2026-04-17 on mai/ritchie/phase-j-roadmap-rewrite. Infra retirement (KanzlAI Dokploy shutdown, kanzlai schema drop, Gitea archive) still pending m + head coordination.
Reminder system redesign (t-paliad-064) — landed 2026-04-28 across PR-1..PR-4 on mai/cronus/reminder-system-redesign. Zero-overdue SLO model: per-user bundled morning/evening digests with category sections (überfällig / heute / diese Woche), DRINGEND escalation in the evening slot, and global-admin escalation framing on overdues. See docs/design-reminder-redesign-2026-04-28.md.
Open follow-ups
- Settings → Notifications: escalation contact dropdown — migration 025 ships
paliad.users.escalation_contact_id(FK topaliad.users, nullable, ON DELETE SET NULL). NULL means "fall back to global_admins for the escalation channel"; setting it lets a user designate a specific colleague as their escalation contact. UI shipped t-paliad-066 on 2026-04-29. - Audit polish-2 — ~25 BATCH-level findings from
docs/audit-polish-2026-04-27.mdnot yet shipped (PR-A..PR-E covered the rest). Triage in flight as t-paliad-067. - KanzlAI infra retirement — Dokploy shutdown,
kanzlaischema drop, Gitea archive. Pending m + head coordination.
Historical naming
Previously called patHoLo (Patent + Hogan Lovells). Rebranded to Paliad on 2026-04-16 when HL announced the merger into HLC, making "HoLo" obsolete. Paliad — "Patent Litigation Administration" but in UI used as a standalone word evoking paladin, the champion. Firm-agnostic so the brand survives any future firm renames (see t-paliad-065 — single FIRM_NAME constant, default "HLC"). Lime branding kept throughout.