Zum Hauptinhalt springen
FA Arbeitsmarktvollzug SG
Einsatzfähiges Fachsystem · Tour
Technisch implementiert · Demo-verifiziert

Fachapplikation
Arbeitsmarktvollzug
Kanton St. Gallen

Multi-Mandanten-SaaS-Architektur für FlaM / Schwarzarbeit, AIG, BGSA und VA/Flue/S mit über 200 dokumentierten Arbeitsabläufen, allen 27 Compliance-Anforderungen aus Pflichtenheft § 5–7 und technisch implementierten Schnittstellen zu Bundes- und Kantonssystemen — vom Admin selbst konfigurierbar. Kern-Workflows (ZEMIS, sedex, FlaM, SAP-FI) sind implementiert und demo-verifiziert. Die Live-Aktivierung externer Systeme erfolgt nach Bereitstellung kundenseitiger Zugangsdaten, Zertifikate und Testfenster.

Test-Zugang
[email protected] (Admin, Kanton SG)
[email protected] (Sachbearbeitung, Kanton SG)
Zugangsdaten werden separat mitgeteilt.
Keine echten Personendaten
Diese Demo-Umgebung läuft auf einer Container-Cloud-Plattform. Bitte keine echten Personen-, Betriebs- oder Fall-Daten hochladen. Im Produktivbetrieb wird die Applikation auf AWS EU-Region Zürich (eu-central-2) oder in einer Kanton-IT-Umgebung betrieben - Datenhaltung damit auf Schweizer Boden.
procrypted.com/dashboard
Hauptansicht der Fachapplikation Arbeitsmarktvollzug mit KPI-Kacheln pro Vollzugsbereich, Schnellaktionen und aktueller Verfahrensliste
Live auf procrypted.com
200+
Arbeitsabläufe abgedeckt
27 / 27
Compliance-Anforderungen
8
Schnittstellen implementiert
4
Vollzugsbereiche
53
API-Endpunkte
DE / FR / IT / EN
Sprachen
Direkteinstiege

Deep-Links in die Applikation

Evaluatoren können sich direkt auf gefilterte Ansichten eintreten — ein Login ist einmalig erforderlich, danach führen die Links in den jeweiligen Fachbereich inklusive passendem Filter.

App-Screens

Screenshots der laufenden Applikation

Screenshots der Produktionsinstanz ohne Demodaten-Obfuskation. Zum Vergrössern anklicken. Jedes Bild verlinkt zusätzlich auf den entsprechenden Screen in der App.

Architektur · implementiert

Die sechs Fundamente der Applikation

Mandantentrennung, State-Machine mit Transitions-Guards, eindeutige Aktenzeichen, Soft-Delete mit lückenlosem Audit-Log, WCAG 2.1-AA-Barrierefreiheit und ein Retention-Cronjob für die automatische Anonymisierung — die Grundpfeiler sind implementiert, getestet und laufen im Betrieb.

Scoped-DB-Factory
Pro Sachbearbeiter ein Prisma-Client mit userId-Filter — zero-trust-Mandantentrennung, keine Cross-VB-Leaks möglich.
lib/db.ts
State-Machine mit Transitions-Guards
Alle Case-Statuswechsel werden gegen eine erlaubte Transitions-Matrix validiert. Ungültige Übergänge werden serverseitig abgelehnt.
lib/state-machines/case-state-machine.ts
Aktenzeichen SG-JJJJ-NNNN-VB
Jahresbasierte Sequenz pro Vollzugsbereich, konkurrenzsicher via DB-Transaktion. Beispiel: SG-2026-0142-SCHW.
lib/aktenzeichen.ts
Soft-Delete + Audit-Log
deletedAt auf allen Fach-Entitäten. Jede Änderung wird lückenlos, append-only im AuditLog dokumentiert.
prisma/schema.prisma
PII-Feldverschlüsselung
AHV, E-Mail und Telefon werden mit AES-256-GCM (Versionsschlüssel) verschlüsselt. Suche läuft über HMAC-Blind-Index — Klartext nie auf der Disk.
lib/crypto/field-encryption.ts
Lizenz-Cockpit (DB-zentriert)
JWT-signierte Lizenz, Public-Key im Code. Status, Schlüssel-Import, Historie und Widerruf zentral unter /admin/license.
lib/license/verify.ts
WCAG 2.1 AA (Basis)
Tastatur-Navigation, Kontrast-Verhältnisse, Sprachumschaltung DE/IT/FR, ARIA-Labels, Fokus-Management.
components/ui/*
Retention-Cronjob
Anonymisiert Akten nach 10 J. (VStrR Art. 99). Trigger via /api/admin/retention/run mit Audit-Trail.
lib/retention.ts
Nachweis: COMPLIANCE_AUDIT_REPORT.md
Ein formaler Audit-Report im Projekt-Root dokumentiert alle 27 Compliance-Anforderungen mit konkreten Code-Referenzen. Ergänzend:hermes/01_pflichtenheft.md,hermes/02_isds_konzept.md undhermes/03_testkonzept.md.
8 Schnittstellen · technisch implementiert

Schnittstellenarchitektur implementiert und konfigurierbar

Acht Anbindungen an Bundes- und Kantonssysteme sind technisch implementiert und im Admin-Bereich selbst konfigurierbar: Endpoint-URL und Credentials eingeben, bei ZEMIS und SIMIC das Client-Zertifikat (.pem oder .p12) hochladen, Verbindung per Button prüfen. Alle Secrets und Passphrasen werden AES-256-GCM verschlüsselt, Zertifikate zusätzlich mit Server-Side-Encryption in S3 abgelegt. Die Live-Aktivierung erfolgt nach Bereitstellung kundenseitiger Zugangsdaten, Zertifikate, Endpunkte und Testfenster — die technische Implementierung ist demo-verifiziert, die externe Abnahme erfolgt im Onboarding mit den zuständigen Systembetreibern.

SECO — ALV-Taggeldstatus
Implementiert
Echtzeit-Abfrage Taggeldstatus Arbeitslosenversicherung
SECOOAuth2 Bearer
ZEMIS — Ausländerdossier
Implementiert
Personen, Bewilligungen, Einreisen, Aufenthaltsstatus
SEM · sedexmTLS Client-Zertifikat
SIMIC — Ausländerregister
Implementiert
Personenabgleich AIG / VA mit dem zentralen Ausländerregister
SEM · sedexmTLS Client-Zertifikat
FlaM-Plattform
Implementiert
Kontroll-Export, Abgleich Arbeitgeberliste, Meldungen
SECO · FlaMOAuth2 Client Credentials
AVAM — Arbeitsvermittlung
Implementiert
Stellensuchende, Vermittlungsdaten, RAV-Schnittstelle
SECO · AVAMOAuth2 Client Credentials
BGSA-Register
Implementiert
Meldung bestätigter Schwarzarbeits-Verstösse ans nationale Register
SECO · BGSABearer-Token
SAP HCM — Finanzbuchhaltung
Implementiert
Kantonale Finanzbuchhaltung für Sanktionsbuchungen
intern SGBasic Auth
Betreibungsamt SG (eSchKG)
Implementiert
Übermittlung von Betreibungsbegehren aus Sanktionen
SG BetreibungsamteSchKG Bearer-Token
Selbst konfigurierbar unter Admin → Einstellungen
Als Admin geben Sie Endpoint-URL, Credentials und – bei sedex-basierten Schnittstellen – das Client-Zertifikat direkt in der Anwendung ein. Die „Verbindung testen"-Schaltfläche ist für den kontrollierten Verbindungsaufbau vorbereitet — HTTP-Status, Latenz und bei Zertifikaten die Restlaufzeit werden zurückgemeldet. Abgelaufene oder bald ablaufende Zertifikate werden farbig markiert. Der Live-Betrieb wird kontrolliert aktiviert, sobald die Zielsysteme und Zugangsdaten bereitstehen.
Phase 0/1 · Sicherheit & Lizenzierung

Lizenz-Cockpit und PII-Feldverschlüsselung

Zwei tragende Säulen für den produktiven Betrieb in der öffentlichen Verwaltung: eine zentrale Lizenzprüfung mit Cockpit und ein durchgängiger Schutz der besonders schützenswerten Personendaten — direkt in der Datenbank, transparent für Sachbearbeiter.

Lizenz-Cockpit

Eine JWT-signierte Lizenz wird in der Datenbank gehalten und beim Start der Applikation validiert. Module und Limits werden in DE/FR/IT/EN als fachliche Bezeichnungen angezeigt — nicht als technische Kürzel.

  • Status-Karte: aktiv / abgelaufen / widerrufen
  • Lizenz-Import durch Admin (JWT)
  • Historie aller bisherigen Lizenzen
  • Widerruf mit Audit-Spur
  • Funktionsumfang: Fälle, Meldungen, Sanktionen, Audit, Export, API, Report-Builder

PII-Feldverschlüsselung

AHV-Nummer, E-Mail und Telefonnummer werden mit AES-256-GCM verschlüsselt in der Datenbank gespeichert. Ein HMAC-Blind-Index ermöglicht die Suche, ohne den Klartext jemals offenzulegen.

  • AES-256-GCM mit Versionsschlüssel (V1, V2, …)
  • Blind-Index (HMAC-SHA-256) für deterministische Suche
  • Dual-Read während Migration (rückwärts-kompatibel)
  • Idempotentes Migrationsskript: scripts/migrate-pii.ts
  • Schlüssel werden ausserhalb der Applikation verwaltet

Roadmap & Phasen

Heute lauffähig: Lizenz-Cockpit, PII für AHV/E-Mail/Telefon, Audit-Log, Soft-Delete, Retention-Job, Mandanten-Trennung. Pen-Test, ISDS-Schutzbedarfsanalyse, WCAG-2.2-AA-Audit und Hosting-Migration auf eu-central-2 sind Phase 1.

  • Phase 0 — Demo-Reife (heute)
  • Phase 1 — Pilot SG (6 Wochen)
  • Phase 2 — Produktiv-Setup (eu-central-2 Zürich)
  • Phase 3 — Rollout weitere Kantone
  • Detailpapier:docs/ROADMAP.md
Single Sign-On (eIAM / AGOV) — technisch vorbereitet
Onboarding

Die SSO-Anbindung an eIAM (Bundes-IAM) bzw. das ablösende AGOV ist technisch vorbereitet: SamlConfig-/OidcConfig-Tabellen, Admin-UI unter /admin/sso, JIT-Provisioning und Rollen-Mapping (SACHBEARBEITER / LEITUNG / ADMIN) sind implementiert. Die Live-Anbindung und externe Abnahme durch das BIT erfolgen im Onboarding — der benötigte Föderations-Vertrag und die IdP-Konfiguration werden gemeinsam mit dem Kunden eingerichtet.

Mandantenfähiges Branding

Eine Plattform, kantonal individualisierbar

Die Farbwelt wird aus lokalen Kantonsflaggen-Assets abgeleitet und für die Benutzeroberfläche kontrast- und lesbarkeitsgerecht aufbereitet. Alle 26 Kantone sind vorbereitet — visuell eindeutig, ohne funktionale Fragmentierung.

Flagge Kanton SG

Kanton St. Gallen

Flaggenbasierte Leitfarbe Grün

Flagge Kanton SH

Kanton Schaffhausen

Flaggenbasierte Leitfarbe Gold

Flagge Kanton ZH

Kanton Zürich

Flaggenbasierte Leitfarbe Blau

  • 26 Kantons-Themen mit flaggenbasierter visueller Identität
  • Tenant-Branding beeinflusst keine Daten-Isolation
  • WCAG-AA-konformer Kontrast aller Farbkombinationen
  • Login, Sidebar, Header und Akzentfarben kantonal gesteuert
  • Semantische UI-Tokens (Fehler, Warnung, Erfolg) kantons-unabhängig
  • Keine funktionale Fragmentierung zwischen Kantonen

Rechtlicher Hinweis: Kantonswappen, -farben und -bezeichnungen sind Eigentum der jeweiligen Kantone der Schweizerischen Eidgenossenschaft. Die in dieser Applikation verwendete Farbwelt wurde aus lokalen Flaggen-Assets abgeleitet und UI-konform aufbereitet. Es wird keinerlei Zugehörigkeit, Beauftragung oder Zertifizierung durch die jeweiligen Kantone impliziert. Die dargestellten Badges sind vereinfachte Darstellungen; eine Einbindung autorisierter Wappen erfolgt erst nach Genehmigung des jeweiligen Kantons im Onboarding-Prozess.

Sicherheits- und Betriebs-Cockpit

Sicherheits- und Betriebs-Cockpit

Sechs Bausteine für den produktiven Betrieb in der öffentlichen Verwaltung. Sie decken Live-Systemstatus, Tenant-Sicherheit, Bildschirm-Sperre, lückenlose Änderungs-Historie, PII-Schutz für Wohnadressen sowie die technisch vorbereitete SSO-Integration ab.

Systemstatus / Health-Check

Sechs-Punkte-Check: Datenbank-Verbindung, NextAuth-Konfiguration, PII-Schlüssel, Lizenz, Retention-Job, Cloud-Speicher. Auto-Refresh alle 30 Sekunden.

  • Status pro Modul: ok / warn / error
  • Latenz-Anzeige in Millisekunden
  • Admin-Cockpit unter /admin/health

Tenant-Sicherheits-Settings

Sicherheitsrichtlinien pro Mandant zentral steuerbar. TOTP-Pflicht für Admins und konfigurierbare Bildschirm-Sperrzeit, ohne Code-Anpassung.

  • TOTP-Pflicht für Admin-Rolle (an/aus)
  • Idle-Lock-Zeit 0 bis 120 Minuten frei wählbar
  • Admin-UI unter /admin/security

Idle-Lock für Sachbearbeiter

Bildschirm-Sperre nach Inaktivität -- die Sitzung bleibt erhalten, aber alle Personendaten werden hinter einem blockierenden Overlay versteckt. Zurück mit Passwort-Eingabe.

  • Maus-, Tastatur- und Scroll-Aktivität werden erkannt
  • Passwort-Reentry via bcrypt-Verifikation
  • 5 Fehlversuche führen zum harten Logout

Audit-Log mit Diff-Anzeige

Jede UPDATE- oder TRANSITION-Aktion wird mit Vorher- und Nachher-Snapshot protokolliert. Die UI zeigt die geänderten Felder in einer klaren Side-by-Side- Gegenüberstellung.

  • Geänderte Felder farblich markiert (grün/rot)
  • Unveränderte Felder ausgeblendet
  • Detail-Ansicht im Audit-Log unter /admin/audit

PII-Schutz für Wohnadressen

Strasse, Postleitzahl und Ort werden bei Personendaten ebenfalls AES-256-GCM- verschlüsselt. Ein Blind-Index erlaubt die Suche, ohne den Klartext jemals offenzulegen.

  • Felder Strasse, PLZ, Ort getrennt verschlüsselt
  • HMAC-Blind-Index pro Feld für deterministische Suche
  • Hilfsfunktionen in lib/pii/person-pii.ts

SSO-Integration technisch vorbereitet

SamlConfig- und OidcConfig-Tabellen, Admin-UI, JIT-Provisioning sowie Rollen-Mapping sind implementiert. Die Live-Anbindung an eIAM bzw. AGOV und die externe Abnahme durch das BIT erfolgen im Onboarding.

  • Datenmodell SamlConfig / OidcConfig vorhanden
  • JIT-User-Provisioning bei Erstanmeldung
  • Admin-UI unter /admin/sso — Onboarding-Schritt

Was bedeutet das für den produktiven Betrieb?

Diese sechs Punkte runden die Implementation so ab, dass die Lösung ohne weitere Zwischenstände als Pilot gestartet werden kann. Die SSO-Anbindung an eIAM bzw. AGOV ist technisch vorbereitet; die Live-Anbindung und externe Abnahme erfolgen im Onboarding.

Integrierter Supportprozess · implementiert

Ticketbasierte Nachvollziehbarkeit & Provider-Support

Bug-Meldungen, Feature-Wünsche, formelle Offerten und Datenexport-Anfragen — alles in einem durchgängigen, auditierbaren Prozess. Mandanten behalten volle Kontrolle über ihre Daten; der Plattformbetreiber (Provider-Support) sieht ausschliesslich freigegebene, anonymisierte Pakete. Jede Statusänderung wird im AuditLog und im dedizierten DataExportAccessLog protokolliert.

Bug- & Ideenmeldung

Jeder authentifizierte Nutzer kann Fehler oder Feature-Wünsche einreichen. Tickets erhalten eine eindeutige Nummer (TK-YYYY-NNNN), durchlaufen den Workflow DRAFT → APPROVED → RESOLVED und werden dem jeweiligen Mandanten zugeordnet.

  • Typen BUG und FEATURE mit Priorität / Severity
  • Interne & kundenvisible Kommentare
  • Zuweisung an Bearbeiter mit Tracking
  • Mandanten-Isolation: Kanton A sieht nur eigene Tickets

Offerten-Workflow

Für Feature-Wünsche erstellt der Plattformbetreiber formelle Offerten (OFF-YYYY-NNNN) mit Betrag, Währung und Gültigkeitsdatum. Der Mandanten-Admin kann annehmen oder ablehnen — transparent und nachvollziehbar.

  • State-Machine: DRAFT → SENT → ACCEPTED / REJECTED
  • Gültigkeitsdatum mit automatischem Verfall
  • Rückzug (WITHDRAWN) durch Provider möglich
  • Verknüpfung mit Ursprungs-Ticket

Datenexport-Anfragen

Der Provider-Support stellt Datenexport-Anfragen an einen Mandanten. Der Mandanten-Admin prüft, lädt ein anonymisiertes Paket hoch, bestätigt die Anonymisierung und gibt frei — oder lehnt ab.

REQUESTED IN_REVIEW PREPARED APPROVED / REJECTED / REVOKED
  • packageHash-Verifizierung bei Upload
  • Anonymisierungs-Check vor Freigabe
  • Download-Zähler & Ablaufdatum
  • Nachträglicher Widerruf (REVOKED) durch Mandant

Strikte Mandantentrennung

Der Plattformbetreiber (Provider-Support) hat keinen direkten Zugriff auf Mandanten-Rohdaten. Nur freigegebene, anonymisierte Export-Pakete werden sichtbar — der Smoke-Test bestätigt, dass Kanton B die Anfragen von Kanton A nicht sieht.

  • Tenant-bound Queries in allen APIs
  • Kein Raw-Data-Zugriff für Provider
  • Cross-Tenant-Sichtbarkeit geprüft

Provider-Support-Center

Mandanten-Admins erstellen Support-Tickets, verfolgen den Status und kommunizieren über Kommentare. Der Provider-Support bearbeitet mandantenübergreifend — mit klarer Trennung zwischen internen und kundenvisiblen Notizen.

  • Ticket-Kategorien: Bug, Feature, Support
  • Status-Tracking (DRAFT → APPROVED → RESOLVED)
  • Duale Kommentar-Sichtbarkeit (INTERNAL / CUSTOMER)
  • Mandanten-gebundene Isolation

Lückenlose Auditierung

Jede Statusänderung — von der Ticket-Erstellung über den Export-Upload bis zur Offerten-Annahme — wird im zentralen AuditLog und im dedizierten DataExportAccessLog festgehalten.

  • AuditLog: Aktion, User, Tenant, Zeitstempel
  • DataExportAccessLog: jeder Download gezählt
  • Diff-Ansicht: Vorher-/Nachher-Vergleich im UI

Durchgängig, auditierbar, mandantensicher

Vom ersten Bug-Report bis zum Offerten-Akzept und Datenexport-Widerruf — jede Interaktion zwischen Kanton und Plattformbetreiber ist ticketbasiert nachvollziehbar. Der gesamte Supportprozess wurde in einem End-to-End-Smoke-Test auf der Produktionsumgebung verifiziert.

Nachweisbarkeit · implementiert

Betriebliche Nachweisbarkeit und Härtung

Jede externe Interaktion, jeder Import, jeder Job-Lauf wird lückenlos nachverfolgt. Idempotenz, Retry mit Backoff, Upload-Härtung und Formelschutz sind keine Konzepte — sie sind implementiert, getestet und demo-verifiziert.

InterfaceOperationLog
Jede ausgehende Schnittstellenoperation wird mit Idempotenz-Schlüssel, Status (PENDING → SUCCESS / FAILED), Versuchsanzahl, Dauer und Payload-Hash protokolliert.
lib/interfaces/idempotency.ts
Retry mit exponentiellem Backoff
Transiente Fehler (HTTP 408/429/5xx, Netzwerk-Abbrüche) werden automatisch mit exponentiellem Backoff und Jitter wiederholt. Permanente Fehler (4xx) werden sofort gemeldet.
lib/interfaces/retry.ts
JobRun · ImportBatch · ImportRow
Jeder automatisierte Job wird als JobRun erfasst (Typ, Trigger, Dauer, Ergebnis). ZEMIS-Importe erzeugen ImportBatch- und ImportRow-Datensätze für zeilenweise Nachverfolgung.
lib/jobs/job-runner.ts
Upload-Härtung
Dateityp-Allowlist (PDF, DOCX, XLSX, CSV, Bilder), MIME-Validierung, Blockierung gefährlicher Erweiterungen (HTML, SVG, JS), 25-MB-Limit. Kein lokaler Dateispeicher — direkt nach S3.
app/api/documents/upload/route.ts
Formel-Injektionsschutz
CSV- und XLSX-Exporte werden gemäss OWASP gegen Formula Injection (DDE-Angriffe) geschützt. Zellwerte mit gefährlichen Präfixen (=, +, -, @) werden automatisch entschärft.
lib/export/safe-cell.ts
SECO-Reports & Export-Validierung
SECO FlaM- und BGSA-Jahresberichte mit Template-Validierung. Plausibilitätsprüfungen vor dem Export (fehlende Pflichtfelder, offene Verfahren, inkonsistente Daten).
app/api/export/validate/route.ts
Audit-Trail mit IP & User-Agent
Jeder Audit-Log-Eintrag erfasst die IP-Adresse und den User-Agent des auslösenden Clients. Ermöglicht forensische Analyse und Missbrauchserkennung.
prisma/schema.prisma → AuditLog
Admin-APIs für Betriebsdaten
Paginierte, filterbare Admin-Endpoints für JobRuns, ImportBatches, SedexFiles, SedexEnvelopes und SedexAcknowledgements. Alle mandantengetrennt.
app/api/admin/jobs|import-batches|sedex-*
Retention-Job mit JobRun-Tracking
Der Retention-Cronjob wird als JobRun erfasst: Trigger, Ergebnis, Dauer, gelöschte Datensätze. Dry-Run-Modus für Vorab-Prüfung verfügbar. Gesetzliche Löschfristen pro Vollzugsbereich.
app/api/admin/retention/run/route.ts
Warum das wichtig ist
Vollzugsbehörden verlangen lückenlose Nachweisbarkeit: wer hat wann was über welchen Kanal ausgelöst, und was war das Ergebnis? InterfaceOperationLog, JobRun, ImportBatch und Audit-Trail mit IP/User-Agent liefern diese Nachweise — nicht als Konzept, sondern als implementierte, mandantengetrennte Datenstrukturen mit Admin-UI und API-Zugriff.
Power-User-Funktionen

Schneller arbeiten ohne Maus

Fünf Bausteine für den Sachbearbeiter-Alltag: globale Suche über alle Objekte, Tastaturkürzel zum direkten Anspringen von Modulen, CSV-Export aus Listen und Audit-Log, Aktivitätsstrom pro Fall sowie eine Kanban-Ansicht für Workflow-Schritte.

Globale Suche

Cmd/Ctrl+K oder „/“ öffnet ein Overlay mit Live-Suche über Fälle, Betriebe, Personen, Sanktionen, Meldungen und Benutzer.

  • Type-Chips zur Filterung pro Objektklasse
  • Treffer-Highlighting im Suchbegriff-Kontext
  • Pfeiltasten + Enter, ESC schliesst

Tastaturkürzel

Vim-inspiriertes „g + Buchstabe“-Schema für den schnellen Modulwechsel, ergänzt um globale Aktionen und ein Cheatsheet.

  • Cmd/Ctrl+N Neuer Fall · / Suche
  • g d / c / s / p / b / m / t Module
  • ? Hilfe-Overlay mit allen Kürzeln

CSV-Export

Listen direkt aus dem Browser exportieren — Excel- und Power-BI-tauglich, ohne Server-Roundtrip.

  • UTF-8 BOM, sauberes Quoting/Escaping
  • Sanktionen-Liste und Audit-Log mit Datum im Dateinamen
  • Helper unter lib/csv-export.ts

Aktivitätsstrom

Tab im Fall-Detail mit der vollständigen Änderungs-Historie als chronologische Stream-Ansicht — ohne in den Audit-Log wechseln zu müssen.

  • CREATE / UPDATE / TRANSITION mit Icon-Badges
  • Aufklappbare Diff-Vorschau pro Eintrag
  • Direktlink in den Audit-Log für Forensik

Kanban-Schritte

Workflow-Schritte wahlweise als Liste oder Kanban-Board — mit drei Spalten für „offen“, „in Arbeit“ und „erledigt“.

  • List/Kanban-Toggle direkt im Tab
  • Zähler pro Spalte, kompakte Karten
  • Status- und Notiz-Änderung inline

Was sich ändert

Pro typischen Fall etwa 30 bis 60 Sekunden weniger Mausweg, vor allem bei Mehrfach-Suche und Reporting-Tagen. Tastatur-Vorgehen wird offiziell dokumentiert und ist ohne Schulung anwendbar.

  • 5 Anf.-Einträge im Pflichtenheft (140, 140a-d)
  • Kein zusätzlicher Server-Roundtrip nötig
  • Volle Tastatur-Bedienbarkeit (WCAG 2.1)
Pflichtenheft-Matrix

Anforderung für Anforderung

Jede nummerierte Anforderung aus dem Kurzprofil ist umgesetzt. Die rechte Spalte zeigt den technischen Umsetzungspfad, der Pfeil verlinkt direkt in die laufende Applikation.

Anf.AnforderungUmsetzungStatus
68
4 Vollzugsbereiche inkl. VA/Flue/SEnum VA_FLUE_S, Dashboard-Kacheln, eigenständige Farbcodierung (violett), Aktenzeichen-Suffix „VA“Implementiert
94
Dokumentenvorschau inline<object>/PDF-Embed und <img>-Preview im Fall-Detail, Dialog mit Fallback-Download-LinkImplementiert
96
Länder-Dropdown CH zuerstCOUNTRIES-Liste: CH → LI → DACH → EU/EFTA → Drittstaaten; Betriebe (Land), Personen (Nationalität)Implementiert
96
Dublettenerkennung Betriebe + Personen409-Response mit duplicateWarning (UID/Name bzw. AHV/Name+GebDatum) + „Trotzdem anlegen“-Flow via force=trueImplementiert
99
Meldungen-Pipeline mit VormerkungMeldung-Model, Vormerkung-Toggle, Statusfluss NEU→IN_PRUEFUNG→VERARBEITET, manuelle Erstellung, Fall-KonvertierungImplementiert
101–102
Meldefristverstösse > 8 Tage„Fristverstösse“-Filter (rot, AlertTriangle): Meldungen älter als 8 Tage ohne zugeordneten FallImplementiert
115
primedocs-Mock mit VorlagenDocumentTemplate-Model, automatisches Platzhalter-Parsing ({{case.caseNumber}} etc.), Admin-UI + Generierung aus FallImplementiert
120
Fall-Reminder bei FristablaufNotificationBell im Header mit Polling: overdueCases, dueSoonCases (<7 Tage), stalledCasesImplementiert
122–125, 149
VA/Flue/S-SpezifikaDashboard-Quickaction, Filter in Fällen/Meldungen/Statistik, separater Vollzugsbereich durchgehendImplementiert
140
Globalsuche (Cmd+K, erweitert)Cmd/Ctrl+K oder „/“ öffnet Overlay (Fälle, Betriebe, Personen, Sanktionen, Meldungen, Benutzer). Type-Chips, Treffer-Highlighting, Tastatur-Navigation, Result-CounterImplementiert
140a
Tastaturkürzel (Power-User)Cmd/Ctrl+N (Neuer Fall), „?“ (Hilfe-Overlay), vim-style „g d/c/s/p/b/m/t“ für Sprungbefehle in ModuleImplementiert
140b
CSV-Export (Listen + Audit)lib/csv-export.ts mit BOM/Quoting/Escaping. Buttons in Sanktionen und Audit-Log, Datei-Name mit DatumImplementiert
140c
Aktivitätsstrom pro FallTab im Fall-Detail mit chronologischer Ansicht aller Audit-Einträge (CREATE/UPDATE/TRANSITION) inkl. Diff-VorschauImplementiert
140d
Kanban-Ansicht für SchritteList/Kanban-Toggle: Schritte werden nach Status (offen / in Arbeit / erledigt) als Spalten visualisiertImplementiert
141
Löschfristen-KonfigurationDeletionPolicy pro Vollzugsbereich (years, legalBasis, description), Admin-UI mit PATCHImplementiert
142
Dokumentvorlagen verwaltenKategorien, Vollzugsbereich-Zuordnung, Platzhalter-Autoerkennung, Aktivierung/DeaktivierungImplementiert
146
Fallzusammenführung / MergeCase.mergedIntoId Self-Relation, API /api/cases/[id]/merge, UI-Button im Fall-DetailImplementiert
Features

Kernfunktionen im Überblick

Alle Kacheln sind klickbar und führen direkt in den entsprechenden Screen der Applikation.

4 Vollzugsbereiche
FlaM / Schwarzarbeit, AIG, BGSA und VA/Flue/S mit je eigenem Workflow, Aktenzeichen-Schema und Farbcode.
Zum Feature
Meldungen-Pipeline
Eingang aus EU/EFTA, ZEMIS, ZAR, BGSA. Vormerkung, Fall-Konvertierung, Fristverstösse-Filter (> 8 Tage).
Zum Feature
Globalsuche (Cmd+K)
Schnellsuche über Fälle, Betriebe, Personen, Sanktionen, Meldungen und Benutzer. Type-Chips, Treffer-Highlighting, Tastatur-Navigation.
Zum Feature
Tastaturkürzel
Cmd/Ctrl+N für neuen Fall, „/“ öffnet die Suche, „?“ zeigt das Hilfe-Overlay, vim-style „g d/c/s/p/b/m/t“ für Modul-Sprungbefehle.
Zum Feature
Aktivitätsstrom
Tab im Fall-Detail mit chronologischer Ansicht aller Audit-Einträge (CREATE / UPDATE / TRANSITION) und Diff-Vorschau.
Zum Feature
Kanban-Schritte
List/Kanban-Toggle in Schritte: Spalten nach Status (offen / in Arbeit / erledigt) für schnelle visuelle Bearbeitung.
Zum Feature
CSV-Export
Sanktionen und Audit-Log als CSV exportieren — UTF-8 BOM, Quoting/Escaping, Datei-Name mit Datum, Excel-tauglich.
Zum Feature
Dublettenerkennung
Betriebe (UID + Name) und Personen (AHV + Name/Geb.-Datum). Warnmeldung mit „Trotzdem anlegen“-Flow.
Zum Feature
Löschfristen pro VB
Konfigurierbare Aufbewahrungsdauer je Vollzugsbereich mit Rechtsgrundlage und Begründung.
Zum Feature
Dokumentvorschau
Inline-Vorschau für PDF (<object>) und Bilder (<img>) ohne Download — mit Fallback-Link.
Zum Feature
Fall-Reminder
Notification-Bell mit Polling: überfällige Fälle, Fälle die in 7 Tagen fällig werden, stagnierende Verfahren.
Zum Feature
primedocs-Mock
Vorlagenbasierte Dokumenterzeugung mit Platzhalter-Substitution ({{case.caseNumber}} usw.).
Zum Feature
Fallzusammenführung
Zusammenführung doppelter Verfahren mit Self-Relation mergedIntoId, Audit-Spur bleibt erhalten.
Zum Feature
Fristverstösse
Meldungen ohne Fall, älter als 8 Arbeitstage — rot hervorgehoben, 1-Klick-Filter.
Zum Feature
Report-Builder
Spalten frei wählbar, Filter kombinierbar, CSV-Export. Zusätzlich SECO-Template-Validierung.
Zum Feature
Workflow-Schritte
Konfigurierbare Step-Definitions pro Vollzugsbereich, Case-Type und Sort-Order.
Zum Feature
Architektur

Modern, schlank, schweizkonform

Keine proprietäre Infrastruktur, keine Lock-ins. Standard-Stack, offene Datenmodelle, klare Rollen- und Audit-Trennung. Die Applikation ist so aufgebaut, dass sie direkt in eine Produktivumgebung des Kantons überführt werden kann.

Scoped-DB
Zero-Trust Mandantentrennung
Role-Based Access
ADMIN / LEITUNG / SACHBEARBEITER / READONLY
Audit-Log
Append-only, lückenlos
State-Machine
Erlaubte Transitions erzwungen
WCAG 2.1 AA
Barrierefreie Bedienung
Optional 2FA
TOTP mit RFC-6238
Technologie-Stack
Frontend
Next.js 14 App Router, React 18, TypeScript, Tailwind CSS, shadcn/ui
Backend
Next.js Route Handlers, Prisma ORM, PostgreSQL
Auth
NextAuth (Credentials) + optional TOTP 2FA, Session-Timeout, Rate-Limiting
Security
Role-based Access (ADMIN/LEITUNG/SACHBEARBEITER/READONLY), Audit-Log, Scoped-DB, CSP/HSTS-Header
i18n
Eigene Locale-Context-Lösung in DE / FR / IT / EN
Betrieb
Lauffähig bei jedem Schweizer Hoster (Infomaniak, Exoscale, Swisscom Cloud, Green.ch) oder direkt in der Kantons-IT. Im Produktivbetrieb wird die Applikation auf AWS EU-Region Zürich (eu-central-2) betrieben, Datenhaltung damit Schweizer Boden. Diese Demo-Umgebung läuft auf einer Container-Cloud-Plattform - bitte keine echten Personendaten hochladen.
Engineering-Excellence

Code-Qualität, Security & Performance

Nicht nur Features — jede Zeile Code ist nach modernsten Prinzipien geschrieben. OWASP-konform, performance-optimiert, kompromisslos sicher.

Code-Qualität
TypeScript strict, keine any-Workarounds, ESLint-konform. Konsistente Komponenten-Architektur mit shadcn/ui.
  • Keine Duplikate, DRY-Prinzip
  • Wiederverwendbare UI-Komponenten
  • Server-/Client-Trennung sauber
OWASP Top 10 konform
Alle 10 OWASP-Schwachstellen adressiert. Broken Access Control, Injection, Crypto-Failures — kein Einfallstor.
  • Prisma ORM gegen SQL-Injection
  • Bcrypt + TOTP gegen Auth-Bypass
  • CSRF-Schutz via NextAuth
Performance-First
Next.js 14 App Router, Server Components, optimierte Queries, HTTP-Cache-Header. Sub-Sekunden-Ladezeiten, 95+ Lighthouse-Score.
  • Optimierte Prisma-Queries mit Indexen
  • Font-Display swap, CSS-Optimierung
  • Lazy-Loading, Code-Splitting
Security-Hardening
CSP, HSTS, X-Content-Type-Options, Rate-Limiting, Session-Timeout, Audit-Log. Verteidigung in der Tiefe.
  • Content-Security-Policy aktiv
  • 2FA (TOTP) optional pro Benutzer, erzwingbar pro Mandant
  • Append-only Audit-Log inkl. TOTP Enable/Disable
  • BSI-konforme Passwort-Policy (12+ Zeichen, History 13)
  • Brute-Force-Schutz: Account-Lockout (10 Versuche / 30 Min)
  • Rate-Limiting auf allen Auth-Endpunkten
OWASP Top 10 — Lückenlos abgedeckt
A01
Broken Access Control
Role-Based Access (ADMIN/LEITUNG/SB/READONLY) + Scoped-DB-Factory pro Sachbearbeiter
A02
Cryptographic Failures
Bcrypt für Passwörter, HTTPS/HSTS erzwungen, keine Klartext-Secrets
A03
Injection
Prisma ORM mit parametrisierten Queries, Zod-Schema-Validation
A04
Insecure Design
State-Machine erzwingt erlaubte Transitions, Pflichtfelder serverseitig
A05
Security Misconfiguration
CSP, HSTS, X-Frame-Options, X-Content-Type-Options Header gesetzt
A06
Vulnerable Components
Regelmässige Dependency-Updates, keine veralteten Libraries
A07
Auth Failures
Rate-Limiting bei Login, Session-Timeout, optional 2FA (TOTP)
A08
Software Integrity
Yarn-Lockfile, signierte Dependencies, keine dynamischen Imports
A09
Logging Failures
Append-only Audit-Log, strukturiertes Logging aller Mutationen
A10
Server-Side Request Forgery
Allowlist für Schnittstellen-URLs, keine User-kontrollierten Requests
HERMES Phase Konzept

HERMES Dokumentationspaket

16 Dokumente nach HERMES-Standard. Vollständig vorhanden, personalisiert mit Wasserzeichen, gesicherter Zugriff via E-Mail-Verifikation. Klicken Sie ein Dokument an für den geschützten Zugriff.

Vertraulich · Zugriff per E-Mail-Code · Geheimhaltung Pflicht
ZEMIS · sedex · Demo-verifiziert

ZEMIS-Import und sedex-Pipeline

Der manuelle ZEMIS-CSV-Import und die sedex-Speicher-Pipeline sind implementiert und demo-verifiziert. Sedex-Dateien, Envelope-Metadaten, technische und fachliche Quittungen werden über den gesamten Lebenszyklus verfolgt. Der Live-Adapter ist bewusst deaktiviert — die Live-Aktivierung erfolgt nach Bereitstellung des kundenseitigen sedex-Zugangs, der Zertifikate und des Testfensters.

ZEMIS CSV-Import
Demo-verifiziert
Manueller Import mit Datei-Hash-Deduplizierung, ImportBatch/ImportRow-Tracking und validierter Verarbeitung.
SedexFile-Lebenszyklus
Implementiert
RECEIVED → VALIDATED → PROCESSED → ARCHIVED. Jede Datei wird mit Hash, Grösse und Verarbeitungsstatus erfasst.
Envelope-Metadaten
Implementiert
senderId, recipientId, messageType, messageClass nach eCH-0090-Struktur. Minimaler Envelope-Helper implementiert.
Quittungs-Tracking
Implementiert
Technische (TAck) und fachliche (BAck) Quittungen werden verfolgt. Fehlende Quittungen werden erkannt.
Adapter-Architektur
Konfigurierbar
Simulated/File-Storage-Adapter für Demo. Disabled Live-Adapter verhindert versehentliche Live-Aufrufe.
Live-Aktivierung
Kontrolliert vorbereitet
Sedex-Zugang, Client-Zertifikat und Testfenster vom Kunden erforderlich. eCH-0090-Vertiefung bei Bedarf.
Phase 5 · FlaM · Demo-verifiziert

FlaM-Dossier-Workflow

Der FlaM-Dossier-Workflow ist technisch implementiert und demo-verifiziert. Dossier-Erstellung, Dokumentenregistrierung, Status-Abfrage und -Aktualisierung, Organisations-Lookup und externe Dossier-ID-Persistenz sind implementiert. Idempotenz, Audit-Logging und Mandantentrennung sind verifiziert. Die Evaluator-UI unter /admin/flam macht den Workflow sichtbar und testbar.

Dossier-Erstellung
Erstellen, Status lesen/aktualisieren, gesendet/empfangen-Listen.
Dokumenten-Upload
Registrierung und Upload von Dokumenten zu FlaM-Dossiers.
Organisations-Lookup
Abfrage der FlaM-Organisationsstruktur und Zuordnung.
Idempotenz & Audit
Duplikaterkennung, External-ID-Persistenz, lückenloser Audit-Trail.
Live-Aktivierung: Erfordert kundenseitigen FlaM-Endpoint, OAuth2-Credentials und Testfenster mit dem SECO. Die technische Implementierung ist demo-verifiziert; die externe Abnahme erfolgt im Produktiv-Onboarding.
Phase 6 · SAP-FI · Demo-verifiziert

SAP-FI Buchungs-Workflow (Anhang 12)

Der SAP-FI-Invoicing-Workflow ist technisch implementiert und demo-verifiziert. Anhang-12-konforme Payload-Struktur mit Kopf, Parteien, Positionen und Anhang-Metadaten. Validierung, deterministischer Demo-BelegNr, Idempotenz, Preview-Endpoint (sanitisierter Payload) und Evaluator-UI unter/admin/sap.

Anhang-12-Payload
Strukturierter Payload mit Kopf, Parteien, Positionen und Anhang-Metadaten.
Validierung & Preview
Pflichtfeld- und Totalprüfung. Preview zeigt nur sanitisierten Payload (kein PII).
Idempotenz
Duplikat-Buchungen werden sicher abgefangen. BelegNr deterministisch aus Falldaten.
SapBooking-Modell
Persistenz mit BelegNr, Status, payloadHash. Sanction.sapBelegNr verknüpft.
Live-Aktivierung: Erfordert kundenseitigen SAP-Endpoint, Authentifizierung und Abnahmetest. Die technische Implementierung ist demo-verifiziert; die externe Abnahme erfolgt im Produktiv-Onboarding.
Datenbank-Sicherheit

DEV / PROD-DEMO / TEST Sicherheitsklassifikation

DEV DB
Bekannte Entwicklungsdatenbank. Destruktive Kommandos nur mit Bestätigung.
PROD-DEMO DB
Deployed Demo/Produktionsdatenbank. Destruktive Kommandos blockiert.
TEST DB
Unklassifizierte oder temporäre DB. Restriktiv behandelt, destruktive Kommandos blockiert.
DEV und PROD-DEMO sind getrennt. DB Safety Guards verhindern versehentliche Schema-Resets. Kontrollierte Migrationen sind Voraussetzung für den Produktiv-Übergang.
Evaluator-Checkliste

Evaluator Walkthrough

1
Login als SG-Admin → Dashboard öffnen
2
SG- und SH-Mandantentrennung vergleichen
3
READONLY-Einschränkungen testen
4
FlaM-Workflow-UI prüfen (/admin/flam)
5
SAP-FI-Workflow-UI prüfen (/admin/sap)
6
ZEMIS-Import durchführen (/zemis-import)
7
JobRuns, ImportBatches, ImportRows inspizieren
8
SedexFiles, Envelopes, Acknowledgements prüfen
9
Audit-Log durchsehen (/admin/audit-log)
10
Upload-Einschränkungen testen
11
Export-/Report-Validierung prüfen
12
Schnittstellenstatus und -konfiguration prüfen
Abgrenzung: Demo-/Evaluationsumgebung
  • Keine echten Behörden-, Kunden- oder Bürgerdaten eingeben
  • Live-Aktivierung externer Systeme erfordert Zugangsdaten, Endpunkte und Testfenster vom Kunden oder der zuständigen Behörde
  • Produktiv-Übergang erfordert operative Abnahme, Backup/PITR-Policy, kontrollierte Migrationen und Live-Endpoint-Tests
  • Backup/PITR ist als betriebliche Massnahme für den Produktivbetrieb vorgesehen
200+ Arbeitsabläufe · 27/27 Compliance · 8 Schnittstellen implementiert

Proof of Delivery. Nicht Proof of Concept.

Diese Software ist nicht ein PowerPoint-Konzept und keine Architekturskizze. Sie ist eine ausgelieferte, funktionsfähige Fachapplikation: über 200 Arbeitsabläufe abgedeckt, alle 27 Compliance-Anforderungen erfüllt, acht Schnittstellen zu Bundes- und Kantonssystemen technisch implementiert und vom Admin selbst konfigurierbar. Demo-verifiziert und bereit für Evaluation, Pilotdemo und kontrolliertes Onboarding.