Stand von chore/ai-kanban-security-folgetickets. Die Historie dieses Branches hat keinen gemeinsamen
Vorfahren mit main, daher als Snapshot. _shared enthaelt CSS/JS der
Kanban-Ansicht (identisch in allen Board-Branches).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
/datev/exports braucht connect.datev.write (POST) bzw. connect.datev.read
(GET) mit der Rolle aus X-User-Role. Registriert nur mit
NEXARCH_CONNECT_APP_ARCHIVE_URL; die DATEV-Uebertragung bleibt aus.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Bisher fragte statusapi mit fester Rolle user. bearerauth setzt X-User-Role
aus dem Token; ohne Header bleibt es bei user.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Die beiden gleichen Kopien entfallen; common v0.2.2. Das Testpflicht-Muster
fuer bearerauth wandert vom workflow-Gate in das common-Gate.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Beide Module halten dieselbe Middleware (nur der Kommentar unterscheidet
sich). Hier liegt die gemeinsame Fassung; workflow und connect stellen
nach dem Tag in einem Folge-PR um.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Account auf 131 hat Next 14.2.35, die Quelle braucht 16.3.5 (--webpack
unbekannt). Abhaengigkeiten werden jetzt per Lockdatei-Hash erneuert,
shl/node_modules wird auf die der App verlinkt (eine React-Instanz).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Auf 131 hat /opt/nexarch-web/portal/web/shl kein node_modules; der rsync
laesst node_modules aus. Typpruefung scheiterte mit TS2307 'react'.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Env-Datei, Unit, nginx-Block 8450, nft-Regel, Audience portal, CORS am Core
und Neubau von Portal und Login in einem idempotenten Lauf mit Sicherungen.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Die Kachel zeigt Punkt und Text, wenn die Statusseite ein Pruefziel kennt,
dessen Name dem Modul-Schluessel oder der Bezeichnung entspricht. Ohne
Berechtigung (403) oder ohne Statusquelle bleibt die Kachel unveraendert.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
NEXT_PUBLIC_PORTAL_URL ist das Ziel (ohne Wert wie bisher /profile). Das
Profil bekommt einen Link zum Portal.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Gleiche Aenderung wie workflow/internal/bearerauth, damit die Rechtepruefung
aus #418 die echte Rolle bekommt.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
workflow bearerauth setzt X-User-Role nur aus den Claims (Client-Header werden
entfernt); taskapi und connectorsetupapi fragen mit dieser Rolle, Default user.
Migration 0029: connect.setup.write nur fuer tenant_admin.
ai-app, workflow-app, connect-app starten ohne POLICY_URL nicht mehr, ausser
mit NEXARCH_<MODUL>_APP_POLICY_DISABLED=1.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
connect/internal/bearerauth (wie workflow): verifiziertes Core-Token setzt
X-User-Id/X-Tenant-Slug, ohne Token nur mit NEXARCH_CONNECT_APP_ALLOW_HEADER_AUTH=1.
Mit JWKS ist NEXARCH_CONNECT_APP_TENANT_SLUG Pflicht (Mandant der Datenbank).
common auf v0.2.1 (moduleauth). Frontends nutzen createBearerClient("connect").
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- semanticsearchapi: ai.search.read per policyclient (WithPolicy), Tenant aus
dem Anfragekoerper, nach Service-Token-Pruefung
- taskapi: workflow.task.read (GET /tasks) und workflow.task.write (PATCH
status); Paket jetzt in cmd/workflow-app verdrahtet (lag bisher nur im
a11y-Fixture) und damit hinter bearerauth
- connectorsetupapi: connect.setup.read/write je Route
- Migration 0029 (up/down): neue Rechte fuer user und tenant_admin
- Wiring: NEXARCH_{AI,WORKFLOW,CONNECT}_APP_POLICY_URL/_POLICY_SERVICE_TOKEN;
ohne URL Warnung und keine Pruefung (Uebergang), URL ohne Token Startfehler;
connect-app setzt die bestehende statusapi-Pruefung damit ebenfalls scharf
- Tests je API: 403 bei Ablehnung, 200 bei Freigabe, 503 bei Ausfall, Policy
wird ohne Identitaet/Service-Token nicht befragt
- MODULE_REGISTRY: ai_search_chat, workflow_tasks, connect_setup (+ Icons,
Portal-Rechteliste)
- Doku: BETRIEB-PORTAL.md, ENG-11 Umgebungsvariablen
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
workflow-approvals, workflow-tasks, workflow-cases und routing-rules hatten
identische lib/http.ts und lib/forward.ts; mail-search eine fuenfte Variante.
Verhalten unveraendert.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Die BFF-Route reicht mit Bearer nur das Token weiter; user/tenant aus der
URL gelten nur noch ohne Token. Der Client sendet das Token ueber eine
zweite Sitzung (module workflow), sobald NEXT_PUBLIC_CORE_API_BASE gesetzt ist.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Aenderungen an bearerauth (Durchsetzungspunkt fuer Bearer-Token der Frontends)
brauchen jetzt eine begleitende _test.go im selben Package.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Vorbereitung auf mehrere NEXARCH_ACCOUNT_MODULE_AUDIENCES: der Core lehnt
Token-Anfragen ohne ?module ab, sobald mehr als eine Audience konfiguriert ist.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Mit NEXT_PUBLIC_CORE_API_BASE holen die Frontends ein workflow-Token ueber die
Sitzung und senden Authorization; die BFF-Routen reichen es weiter und ignorieren
userId/tenant aus der URL. Ohne die Variable bleibt der Uebergangsweg.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Das Pflichttest-Gate von workflow verweist nicht mehr auf die geloeschten
Pakete (common hat ein eigenes Gate).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
auditclient und policyclient aus der Liste in check-security-test-coverage.sh
entfernt (Pakete liegen jetzt in common, dort durch das common-Gate gedeckt).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Das Pflichttest-Gate von ai verweist nicht mehr auf das geloeschte
svcauth-Paket (common hat ein eigenes Gate).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Die common-Fassung von apierror enthaelt die 5xx-Behebung (Text verborgen,
Korrelations-ID). Der Waechtertest gegen http.DefaultClient liegt jetzt in
internal/archtest.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
apierror, auditclient, httpclient, httpharden, svcauth und tenantregistryclient
kommen aus gitea.perlbach24.de/scripte/nexarch/common. Der Wächtertest gegen
http.DefaultClient liegt jetzt in internal/archtest.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
CheckDiff(changed, patterns): gleiche Logik wie die Modul-Gates, Pfadmuster
vom Aufrufer. cmd/pflichttestgate + Workflow decken svcauth,
tenantregistryclient, auditclient, policyclient, apierror, httpharden ab.
README: Auswirkungsliste und Minor-Version bei Breaking Changes.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Pakete: apierror, auditclient, httpclient, httpharden, loadtest, migrate,
policyclient, svcauth, tenantregistryclient, testdb. Code stammt aus den
bisher byte-gleichen Modulkopien (ohne Kommentare/Importpfade verglichen).
migrate/testdb brauchen pgx v5.9.2.
Auslieferung per Git-Tag common/vX.Y.Z (Workflow common-tag.yml, setzt nach
Merge in main den naechsten Patch-Tag nach Build/Vet/Test). Kein replace,
damit Module einzeln baubar bleiben. Verbraucher werden in Folge-PRs
umgestellt.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
NewServer verlangt seit ENG-06 einen TenantVerifier; der Vertragstest
rief noch mit drei Argumenten auf, go vet schlug fehl. Stub wie beim
backchannel-Vertragstest (alwaysValidVerifier).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Fable-Review auf Code-Dopplung (P1). web/dms-browser, web/dms-upload,
web/pdf-viewer hatten byteidentische components/AccountBar.tsx. Darstellung
jetzt einmal in web/shl/components/AccountBar.tsx (visible/onLogout als
Props). Die drei App-lokalen Dateien bleiben als duenne 10-Zeilen-Wrapper
bestehen (loesen authMode()/getSession() aus dem jeweils eigenen,
unterschiedlichen lib/http.ts auf) statt komplett zu verschwinden --
direktes Reichen der onLogout-Funktion von layout.tsx (Server Component)
an die shl-Komponente verletzt sonst die RSC-Props-Grenze ("Event handlers
cannot be passed to Client Component props"), erst beim Build entdeckt
und korrigiert.
next build + npx vitest run auf allen 3 Apps gruen (Testhost 131).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-19 23:17:02 +02:00
480 changed files with 11008 additions and 2079 deletions
@@ -6,6 +6,17 @@ Stand: 2026-08-26. Zusammenführung aller bisherigen Entscheidungen aus `nexarch
NEXARCH ist die Nachfolgeplattform von **archivmail** (E-Mail-Archivierung) und **archivdms** (Dokumentenmanagement) — nicht als Umbenennung, sondern als modulare Neuentwicklung unter der Positionierung **"Next Generation Information Management"**: E-Mails, Dokumente, digitale Archivierung, OCR, Volltextsuche, Workflows, Compliance, Integrationen, KI — als ein zusammenhängendes System, nicht als zwei getrennte Werkzeuge nebeneinander.
## 1a. Vorbildsysteme
NEXARCH vereint die Stärken bestehender Systeme und vermeidet deren bekannte Schwächen (Details: `dms-kanban/known-issues-archivdms.md`, `dms-kanban/known-issues-archivmail.md`).
| Bereich | Vorbildsysteme |
|---|---|
| Mail | **archivmail** (eigenes Produkt, Vorgänger), **MailPiler** |
Weitere Vergleichsprojekte (z. B. OpenKM, Nuxeo, Mayan EDMS, Seafile) sind noch zu prüfen. Für das DMS-Modul siehe auch `dms/README.md`.
## 2. Architekturprinzip
**Ein modularer Monolith aus sieben eigenständigen, aber koordinierten Diensten** — kein Microservice-Zwang, aber klare Dienstgrenzen mit eigenem Datenmodell, eigenem Go-Binary, eigenem Kanban-Board:
@@ -64,7 +75,7 @@ Kein Modul kopiert die Daten eines anderen — stattdessen ein wiederkehrendes *
Gemeinsamer Nenner aller drei: **Referenz statt Kopie, Adapter statt Direktkopplung.**
Go-`internal/`-Pakete sind zwischen den Modulen nicht sichtbar; identische Querschnittspakete werden deshalb im geteilten Modul `common/`gehalten (per `replace` in den `go.mod` eingebunden, keine eigenen Abhängigkeiten außer der Standardbibliothek). Pilot: `common/httpclient`, `common/apierror`. Fachlich verschiedene Pakete (`audittrail`, `cutoverstage`, `crypto`) bleiben modul-lokal.
Go-`internal/`-Pakete sind zwischen den Modulen nicht sichtbar; identische Querschnittspakete liegen deshalb im versionierten Modul `common/`(Git-Tags `common/vX.Y.Z`, siehe `common/README.md`). So bleiben Module einzeln baubar (Docker, eigenes Repo, Partner-Build). Fachlich verschiedene Pakete (`audittrail`, `cutoverstage`, `crypto`) bleiben modul-lokal.
Dasselbe Prinzip gilt auch innerhalb eines Moduls, auf Code-Ebene: Hauptdateien/Entry-Points bleiben klein, Fachlogik wandert in eigene Module. Vor einer neuen Funktions-/Modul-Datei wird geprüft, ob dieselbe Funktionalität nicht schon woanders existiert (auch modulübergreifend, z. B. in Core) — keine doppelten Funktionsdateien. Das eigene Kanban-Planungswerkzeug wurde nach genau diesem Muster korrigiert (sieben `kanban.html` enthielten identisches JS/CSS als Volltext-Duplikat, damals in `_shared/kanban.js`/`kanban.css` ausgelagert) — die Boards selbst sind inzwischen komplett aus dem Repo entfernt (Ticket-Historie liegt in der Gitea-PR-Historie), das Prinzip "keine doppelten Funktionsdateien" gilt unverändert für den eigentlichen NEXARCH-Code.
go get gitea.perlbach24.de/scripte/nexarch/common@latest
```
Build-Orte brauchen Lesezugriff auf Gitea: Read-only-Token in `~/.netrc` (`machine gitea.perlbach24.de login <user> password <token>`).
## Versionen
Tags `common/v0.X.Y` setzt `.gitea/workflows/common-tag.yml` nach jedem Merge in `main`, der `common/` ändert. Module aktualisieren einzeln (`go get ...common@v0.X.Y`). Lokal mit mehreren Modulen gleichzeitig arbeiten: nicht eingechecktes `go.work`.
## Regeln
- Nur Code, der in mindestens zwei Modulen byte-gleich (ohne Kommentare) gebraucht wird; fachlich verschiedene Pakete bleiben modul-lokal.
- Änderungen abwärtskompatibel halten, solange Module nicht gleichzeitig umgestellt werden.
- Jeder PR an `common/` nennt die betroffenen Module (Auswirkungsliste). Breaking Changes nur mit neuer Minor-Version (`v0.2.0`) und Umstellungs-PRs je Modul; die aktuelle Minor steht in `common/MINOR`, der Tag-Workflow setzt bei einer neuen Minor `v0.<minor>.0`.
- Sicherheitskritische Pakete (`svcauth`, `tenantregistryclient`, `auditclient`, `policyclient`, `apierror`, `httpharden`) unterliegen dem Pflichttest-Gate (`cmd/pflichttestgate`, Workflow `common-pflichttest-gate.yml`): Änderung ohne begleitende `_test.go` im selben Package schlägt fehl.
Hinweis: Dieses Board baut vollständig auf NEXARCH Core auf (REST-Grundgerüst, Rate-Limiting, OpenAPI, Webhook-Zustellung, Token-Verwaltung, Audit) — keine eigene API-Infrastruktur. LDAP/SSO sind Core-Sache (IAM-05/IAM-06), Scanner-Anbindung ist DMS/Mail-Sache, hier ausschließlich externe Drittsystem-Konnektoren.
Hinweis: Alle Oberflächen-Tickets in diesem Board bauen auf der zentralen UI-Shell & Design-System aus NEXARCH Core auf (siehe ../core-kanban/, `SHL-01`) — kein eigenes Design-System in diesem Board.
Stand: 2026-08-26
## Weg 1 – Sofort loslegen (empfohlen)
`kanban.html` per Doppelklick im Browser öffnen. Kein Server, kein Internet, keine Installation.
- Kacheln per Drag & Drop zwischen Backlog → Bereit → In Arbeit → Prüfung → Fertig ziehen
- Der Stand wird im Browser gespeichert (localStorage) und bleibt nach dem Schließen erhalten
- Filter nach Epic, Rolle, Welle, Volltext sowie „Nur startbare“ (alle Vorgänger auf Fertig)
- Klick auf eine Kachel öffnet Details inkl. vollem Bau-Prompt und „Prompt kopieren“
- „Stand sichern“ exportiert den aktuellen Status als CSV
Hinweis: Der Stand hängt an Browser und Profil. Für Teamarbeit Weg 2 oder 3 nutzen.
## Weg 2 – Import in ein vorhandenes Werkzeug
`board.csv` (UTF-8 mit BOM, Komma-getrennt) importieren:
- **Zapier/n8n**: Connector-Plugin-Modell mit austauschbaren Adaptern statt fest verdrahteter Drittsystem-Logik – Kernidee dieses Boards, bewusst schlanker ohne visuellen Workflow-Builder.
- **Airbyte**: Sync-Job-Konzept mit Retry und Fehlerbehandlung als Vorbild für robuste, wiederholbare Imports/Exports.
### Vermeiden
- **Proprietäre, geschlossene iPaaS-Plattformen mit Vendor-Lock.**: Jeder Connector ist offen dokumentiert und ohne Herstellerwerkzeug ersetzbar – was die Oberfläche kann, kann auch die offene Schnittstelle.
- **Zapier/n8n – voller grafischer Workflow-Builder.**: Nur die Kernidee austauschbarer Adapter, kein eigenes Prozessmodellierungswerkzeug – das übernimmt bei Bedarf NEXARCH Workflow.
## Arbeitsregeln
Je Kachel ein eigener Branch, schrittweise committen, Branch pushen, dann anhalten.
Kein Merge und kein Deploy ohne ausdrückliche Freigabe.
Code-Struktur: Hauptdateien/Entry-Points klein halten, Fachlogik in eigene Module/Dateien auslagern. Vor dem Anlegen einer neuen Funktions-/Modul-Datei prüfen, ob dieselbe Funktionalität nicht schon in einem anderen Modul (auch modulübergreifend, z. B. Core) existiert — keine doppelten Funktionsdateien, ein Modul/Board referenziert das andere extern statt Code zu kopieren (gleiches Prinzip wie bei den Konsolidierungen IAM/Archive/Workflow/AI/API/UI-Shell, siehe nexarch-state.json).
ENG-01,Connector-Plugin-Modell,🔌 Connector-Engine & Grundgerüst,Backend,Mittel,3,1,Fertig,"Plugin-Schnittstelle, Go-Interface, Registrierung","Plugin-Schnittstelle, über die einzelne Drittsystem-Connectoren (ERP, CRM, DATEV, M365, andere DMS, Backup-Ziele) registriert werden, ohne dass die Engine connectorspezifisches Wissen braucht.",,ENG-02 ENG-03 ENG-04 ENG-06 ERP-01 ERP-02 DAT-01 DMS2-01 DMS2-03 API-03,"Neuer Connector lässt sich ohne Codeänderung an der Engine registrieren
Fehlende Registrierung führt zu klarer Fehlermeldung statt Absturz
Connector-Metadaten (Name, Version, unterstützte Operationen) sind abrufbar","Zwei Testconnectoren parallel registriert und einzeln ansprechbar
Deregistrierung entfernt Connector vollständig
Fehlerhafter Connector wird beim Laden abgewiesen, Engine bleibt lauffähig"
ENG-02,"Verbindungs-Credential-Verwaltung (OAuth/API-Keys, verschlüsselt)",🔌 Connector-Engine & Grundgerüst,Backend,Mittel,3,2,Fertig,"Verschlüsselte Speicherung, OAuth2-Client, PostgreSQL","Verwaltung von Zugangsdaten für Drittsysteme (OAuth-Tokens, API-Keys), verschlüsselt gespeichert und je Connector-Instanz zugeordnet.",ENG-01,M365-01 API-01 QA-04 QA-07 QA-02 ENG-07,"Zugangsdaten sind ausschließlich verschlüsselt gespeichert
OAuth-Token-Erneuerung läuft automatisiert ohne Nutzereingriff
Widerruf einer Verbindung entfernt zugehörige Zugangsdaten vollständig","Datenbankinhalt der Zugangsdaten-Tabelle ist ohne Schlüssel nicht lesbar
Ablaufender OAuth-Token wird vor Ablauf erneuert
Widerruf im Test entfernt Zugangsdaten nachweislich"
ENG-03,Sync-Job-Verwaltung (periodische Imports/Exports),🔌 Connector-Engine & Grundgerüst,Backend,Mittel,3,2,Fertig,"Postgres-Jobqueue, periodische Ausführung","Verwaltung periodisch ausgeführter Sync-Jobs (Import/Export) je Connector-Instanz: Zeitplan, letzter Lauf, nächster Lauf.",ENG-01,ENG-05 QA-02 ENG-08,"Sync-Job ist mit Zeitplan konfigurierbar
Laufender Job überlebt einen Dienst-Neustart
Manuelles Anstoßen eines Jobs außerhalb des Zeitplans möglich","Zeitplan im Test korrekt eingehalten
Neustart des Dienstes mit laufendem Job geprüft
Manueller Anstoß erzeugt genau einen zusätzlichen Lauf"
ENG-04,Feld-Mapping-Konfiguration (NEXARCH ↔ Drittsystem),🔌 Connector-Engine & Grundgerüst,Backend,Mittel,3,2,Fertig,"Mapping-Konfiguration, Schema-Validierung",Konfigurierbares Feld-Mapping zwischen NEXARCH-Datenmodell und Drittsystem-Feldern je Connector-Instanz.,ENG-01,API-01 QA-02,"Feld-Mapping ist ohne Codeänderung konfigurierbar
Ungültiges Mapping wird beim Speichern abgewiesen
Pflichtfeld ohne Zuordnung wird vor Ausführung gemeldet","Ungültiges Mapping im Test abgewiesen
Geändertes Mapping wirkt erst auf nachfolgende Läufe"
ENG-05,Fehlerbehandlung & Retry bei Drittsystem-Ausfällen,🔌 Connector-Engine & Grundgerüst,Backend,Mittel,3,3,Fertig,"Retry mit Backoff, Fehlerprotokoll, Postgres-Jobqueue","Fehlerbehandlung für Sync-Jobs bei Drittsystem-Ausfällen: Retry mit Backoff, Fehlerprotokoll, Abbruchgrenze.",ENG-03,API-02 QA-02 ENG-08,"Fehlgeschlagener Sync-Job wird mit Backoff automatisch wiederholt
Dauerhafter Ausfall führt nach Grenzwert zu klarem Fehlerstatus statt Endlosschleife
Fehlerprotokoll je Lauf ist einsehbar","Simulierter Drittsystem-Ausfall löst Retry mit Backoff aus
Abbruchgrenze im Test erreicht und Status korrekt gesetzt
Fehlerprotokoll enthält Ursache und Zeitpunkt"
ENG-06,Connector-Audit-Kopplung (Core AUD),🔌 Connector-Engine & Grundgerüst,Backend,Einfach,2,2,Fertig,Audit-Ereignis-Kopplung,"Kopplung aller Connector-Aktionen (Verbindung angelegt, Sync ausgeführt, Zugangsdaten geändert) an das zentrale Core-Audit-Log.",ENG-01,QA-02,"Jede sicherheitsrelevante Connector-Aktion erzeugt einen Audit-Eintrag im Core-Audit-Log
Audit-Eintrag enthält Person, Zeitpunkt und betroffenen Connector
Fehlende Audit-Kopplung verhindert die Aktion nicht, wird aber protokolliert","Verbindung anlegen erzeugt nachweisbaren Audit-Eintrag
Ausfall des Audit-Dienstes blockiert Connector-Betrieb nicht"
ERP-01,ERP-Connector-Grundgerüst,📈 ERP/CRM-Anbindung,Backend,Mittel,3,2,Fertig,"ERP-Connector, REST/SOAP-Client","Connector-Grundgerüst für die Anbindung gängiger ERP-Systeme: Verbindungsaufbau, Basisoperationen (Lesen/Schreiben von Stammdaten und Belegen).",ENG-01,ERP-03 ERP-04,"Verbindung zu einem Test-ERP-System lässt sich aufbauen und prüfen
Basisoperationen (Lesen/Schreiben) sind über das Connector-Plugin-Modell nutzbar
Verbindungsfehler wird klar gemeldet statt stillem Abbruch","Verbindungsaufbau gegen Test-ERP-System erfolgreich geprüft
Lese- und Schreiboperation im Test erfolgreich
Simulierter Verbindungsfehler wird korrekt gemeldet"
ERP-02,CRM-Connector-Grundgerüst,📈 ERP/CRM-Anbindung,Backend,Mittel,3,2,Fertig,"CRM-Connector, REST-Client","Connector-Grundgerüst für die Anbindung gängiger CRM-Systeme: Verbindungsaufbau, Basisoperationen für Kontakte/Kunden.",ENG-01,ERP-03 QA-03,"Verbindung zu einem Test-CRM-System lässt sich aufbauen und prüfen
Basisoperationen (Lesen/Schreiben) sind über das Connector-Plugin-Modell nutzbar
Verbindungsfehler wird klar gemeldet statt stillem Abbruch","Verbindungsaufbau gegen Test-CRM-System erfolgreich geprüft
Lese- und Schreiboperation im Test erfolgreich
Simulierter Verbindungsfehler wird korrekt gemeldet"
ERP-03,Stammdaten-Abgleich (Kunden/Lieferanten),📈 ERP/CRM-Anbindung,Backend,Mittel,3,3,Fertig,"Sync-Logik, Konfliktbehandlung",Automatisierter Abgleich von Kunden- und Lieferantenstammdaten zwischen NEXARCH und angebundenem ERP/CRM.,ERP-01 ERP-02,QA-03,"Neuer Stammdatensatz im Drittsystem erscheint nach Sync in NEXARCH
Änderungskonflikt wird erkannt und nicht stillschweigend überschrieben
Abgleich läuft nach Zeitplan über die Sync-Job-Verwaltung","Neuanlage im Test-ERP nach Sync in NEXARCH sichtbar
Gleichzeitige Änderung auf beiden Seiten erzeugt erkennbaren Konflikt statt Datenverlust
Zeitplan-gesteuerter Lauf im Test erfolgreich"
ERP-04,Beleg-/Dokumentexport an ERP,📈 ERP/CRM-Anbindung,Backend,Mittel,3,3,Fertig,"Dokumentexport, Feld-Mapping",Export von Belegen/Dokumenten aus NEXARCH an das angebundene ERP-System inklusive Metadaten.,ERP-01,QA-03,"Beleg lässt sich mit zugeordneten Metadaten an das ERP exportieren
Fehlgeschlagener Export wird über die Fehlerbehandlung erneut versucht
Bereits exportierter Beleg wird nicht doppelt übertragen","Testbeleg im ERP nach Export mit korrekten Metadaten auffindbar
Simulierter Exportfehler löst Retry aus
Doppelversand im Test ausgeschlossen"
DAT-01,DATEV-Format-Export (Belege/Buchungsstapel),🧾 DATEV-Anbindung,Backend,Mittel,3,2,Fertig,"DATEV-Exportformat, Buchungsstapel-Struktur",Export von Belegen und Buchungsstapeln im DATEV-Format aus NEXARCH-Dokumenten und -Metadaten.,ENG-01 RET-05,DAT-02 DAT-03,"Export erzeugt gültige DATEV-Exportdatei aus Testbelegen
Pflichtfelder des DATEV-Formats werden vollständig befüllt oder der Export klar abgewiesen
Exportierter Buchungsstapel ist eindeutig einem Zeitraum zugeordnet
Exportiertes Objekt (Buchungsstapel) wird bei Archive RET-05 mit der GoBD-Aufbewahrungsklasse registriert, statt unregistriert im Dateisystem zu liegen","Erzeugte Exportdatei besteht Formatprüfung gegen DATEV-Spezifikation
Fehlendes Pflichtfeld führt zu klarer Abweisung statt fehlerhaftem Export
Zeitraumzuordnung im Test korrekt
Export eines Testbuchungsstapels erzeugt nachweisbar eine Registrierung bei Archive RET-05"
DAT-02,DATEV-Konnektor (Schnittstellen-Protokoll),🧾 DATEV-Anbindung,Backend,Komplex,4,3,Fertig,"DATEV-Schnittstellenprotokoll, Übertragungslogik","Konnektor, der den Export im DATEV-Format über das offizielle Schnittstellenprotokoll an DATEV-Systeme überträgt.",DAT-01,DAT-03,"Übertragung an ein Test-DATEV-Zielsystem gelingt protokollkonform
Fehlgeschlagene Übertragung wird über die Fehlerbehandlung erneut versucht
Übertragungsstatus ist je Lauf nachvollziehbar","Protokollkonforme Übertragung im Test gegen Referenzsystem geprüft
Simulierter Übertragungsfehler löst Retry aus
Übertragungsstatus im Test korrekt und nachvollziehbar"
DAT-03,DATEV-Export-Oberfläche & Protokoll,🧾 DATEV-Anbindung,Frontend,Einfach,2,4,Fertig,"React/Next.js-Oberfläche, Exportprotokoll-Ansicht",Oberfläche zum Anstoßen von DATEV-Exporten sowie Einsicht in Exportprotokolle und Übertragungsstatus.,DAT-01 DAT-02 SHL-01,QA-03,"Export lässt sich über die Oberfläche mit Zeitraum-Auswahl anstoßen
Exportprotokoll ist je Lauf einsehbar
Fehlgeschlagener Export ist in der Oberfläche klar erkennbar","Export-Anstoß im Test aus der Oberfläche erfolgreich
Protokollansicht zeigt reale Testläufe korrekt an
Fehlgeschlagener Testlauf ist visuell klar unterscheidbar"
M365-01,Microsoft-Graph-API-Anbindung (Auth/Basis),☁️ Microsoft 365-Anbindung,Backend,Mittel,3,3,Fertig,"Microsoft Graph API, OAuth2",Basis-Anbindung an Microsoft Graph: Authentifizierung über OAuth2 und grundlegende API-Aufrufe als Voraussetzung für SharePoint/OneDrive- und Outlook-Anbindung.,ENG-02,M365-02 M365-03,"Authentifizierung gegen Microsoft Graph im Test erfolgreich
Zugangsdaten werden über die Connect-Credential-Verwaltung gespeichert
Abgelaufene Berechtigung wird erkannt und klar gemeldet","OAuth2-Anmeldung im Test gegen Microsoft-Testmandant erfolgreich
Testaufruf einer Graph-API-Basisoperation erfolgreich
Simulierter Berechtigungsablauf wird korrekt erkannt und gemeldet"
M365-02,SharePoint/OneDrive-Dokumentabgleich,☁️ Microsoft 365-Anbindung,Backend,Mittel,3,4,Fertig,"SharePoint/OneDrive-API, Sync-Logik",Abgleich von Dokumenten zwischen NEXARCH und SharePoint/OneDrive über die Microsoft-Graph-Anbindung.,M365-01,QA-03,"Dokument aus SharePoint/OneDrive erscheint nach Sync in NEXARCH mit Metadaten
Änderungskonflikt wird erkannt und nicht stillschweigend überschrieben
Abgleich läuft nach Zeitplan über die Sync-Job-Verwaltung","Testdokument aus SharePoint nach Sync in NEXARCH korrekt vorhanden
Gleichzeitige Änderung auf beiden Seiten erzeugt erkennbaren Konflikt
Zeitplan-gesteuerter Lauf im Test erfolgreich"
M365-03,Outlook-Kalender-Kopplung (Fristen/Wiedervorlage),☁️ Microsoft 365-Anbindung,Backend,Mittel,3,4,Fertig,"Outlook-Kalender-API, Fristen-Kopplung",Kopplung von NEXARCH-Fristen und Wiedervorlagen mit dem Outlook-Kalender über die Microsoft-Graph-Anbindung.,M365-01,QA-03,"Frist/Wiedervorlage erscheint als Kalendereintrag in Outlook
Änderung der Frist in NEXARCH aktualisiert den Kalendereintrag
Gelöschte Frist entfernt den zugehörigen Kalendereintrag","Testfrist im Test-Outlook-Kalender korrekt sichtbar
Friständerung im Test korrekt im Kalender nachgezogen
Löschung im Test entfernt Kalendereintrag vollständig"
DMS2-01,"Standardisiertes Export-/Import-Format (offen, dokumentiert)",🔄 Andere-DMS-Interoperabilität,Backend,Mittel,3,2,Fertig,"Offenes Austauschformat, Schema-Dokumentation",Offen dokumentiertes Export-/Import-Format für Dokumente und Metadaten zur Interoperabilität mit anderen DMS-Systemen.,ENG-01,DMS2-02 QA-03,"Format ist vollständig dokumentiert und ohne NEXARCH-Werkzeug lesbar
Export enthält Dokument, Metadaten und Versionsbezug
Enthaltene Metadaten im Test vollständig und korrekt
Fehlerhafte Testdatei wird bei Validierung abgewiesen"
DMS2-02,Import-Assistent für Drittsystem-Exporte,🔄 Andere-DMS-Interoperabilität,Fullstack,Mittel,3,3,Fertig,"Import-Assistent mit Mapping-Vorschau-Oberfläche (Next.js/React), Backend-Parser für Drittsystem-Exportformate","Assistent, der Exporte aus gängigen Drittsystem-DMS einliest, Feld-Mapping vorschlägt und den Import durchführt.",DMS2-01 SHL-01,QA-03,"Testexport eines gängigen Drittsystems lässt sich einlesen
Feld-Mapping wird vorgeschlagen und ist vor Import änderbar
Import-Ergebnis mit Erfolgs-/Fehlerzahl ist einsehbar
Mapping-Vorschau ist eine bedienbare Oberfläche (nicht nur eine API-Antwort), in der Feldzuordnungen vor dem Import angepasst werden können","Testexport eines Drittsystems im Test erfolgreich eingelesen
Manuelle Mapping-Korrektur im Test übernommen
Import-Protokoll zeigt korrekte Erfolgs-/Fehlerzahl
Mapping-Vorschau im Browser bedient: Zuordnung geändert, Import mit geänderter Zuordnung ausgeführt"
DMS2-03,Externe-Backup-Ziel-Anbindung,🔄 Andere-DMS-Interoperabilität,Backend,Mittel,3,2,Fertig,"Backup-Ziel-Connector, verschlüsselte Übertragung",Anbindung externer Backup-Ziele (z. B. S3-kompatibler Speicher) für den verschlüsselten Export von Dokumentbeständen.,ENG-01,QA-03,"Backup-Ziel lässt sich über das Connector-Plugin-Modell einrichten
Export an das Backup-Ziel erfolgt verschlüsselt
Fehlgeschlagener Backup-Export wird über die Fehlerbehandlung erneut versucht","Verbindungsaufbau zu Test-Backup-Ziel im Test erfolgreich
Übertragung im Test nachweislich verschlüsselt
Simulierter Übertragungsfehler löst Retry aus"
API-01,Connect-Konfigurationsoberfläche (Connectoren einrichten),🖥️ Connect-Oberfläche,Frontend,Mittel,3,3,Fertig,"Next.js/React, Connector-Einrichtungsformulare","Oberfläche zum Einrichten und Konfigurieren von Connectoren: Verbindung anlegen, Zugangsdaten hinterlegen, Feld-Mapping bearbeiten.",ENG-02 ENG-04 SHL-01,,"Connector lässt sich vollständig über die Oberfläche einrichten, ohne Konfigurationsdatei
Zugangsdaten werden nur maskiert angezeigt, nie im Klartext
Feld-Mapping ist über die Oberfläche bearbeitbar","Vollständige Einrichtung eines Testconnectors über die Oberfläche erfolgreich
Zugangsdaten in der Oberfläche im Test nachweislich maskiert
Mapping-Änderung über die Oberfläche im Test korrekt übernommen"
API-02,Verbindungsstatus-Übersicht & Diagnose,🖥️ Connect-Oberfläche,Frontend,Einfach,2,4,Fertig,"Next.js/React, Statusanzeige","Übersicht über alle eingerichteten Verbindungen mit Status, letztem Sync-Lauf und Diagnoseinformationen bei Fehlern.",ENG-05 SHL-01,,"Verbindungsstatus je Connector ist auf einen Blick erkennbar
Letzter Sync-Lauf mit Ergebnis ist einsehbar
Fehlerdiagnose zeigt die Ursache aus dem Fehlerprotokoll","Statusanzeige im Test korrekt für erfolgreichen und fehlgeschlagenen Lauf
Diagnoseansicht zeigt reale Testfehler nachvollziehbar an
Aktualisierung nach neuem Sync-Lauf im Test korrekt"
API-03,Externe Webhook-Abonnements (nutzt Core API-07),🖥️ Connect-Oberfläche,Backend,Mittel,3,2,Fertig,Core-Webhook-Registry-Anbindung,"Abonnieren externer Systemereignisse über Webhooks, die die zentrale Core-Webhook-Registry zustellt – Connect registriert lediglich Abonnements, betreibt keine eigene Zustellung.",ENG-01,,"Connector kann ein Webhook-Ereignis über die Core-Webhook-Registry abonnieren
Zugestelltes Ereignis löst die zugeordnete Connector-Aktion aus
Abbestellen entfernt das Abonnement vollständig","Testabonnement über Core-Webhook-Registry im Test erfolgreich registriert
Testereignis löst im Test die erwartete Connector-Aktion aus
Abbestellung im Test vollständig entfernt"
QA-01,Teststrategie Connect,✅ Prüfungen & Qualitätssicherung,Backend,Einfach,2,1,Fertig,"Testkorpus, Teststrategie-Dokument","Teststrategie für Connect: Testkorpus aus realen Drittsystem-Antworten (ERP, CRM, DATEV, Microsoft Graph), Testarten je Ausbaustufe, Freigabekriterien.",,,"Teststrategie ist dokumentiert und für alle Epics anwendbar
Testkorpus enthält reale Beispieldaten je angebundenem Drittsystemtyp
Freigabekriterien je Prüfgate sind eindeutig benannt
Pflichttests für sicherheitsrelevanten Code (Tenant-Scoping, Zugriffsprüfung, Auth-nahe Logik) sind als verbindliches Merge-Gate verankert – kein Merge auf solchen Code ohne Test, analog Core QA-01","Teststrategie-Dokument liegt vollständig vor und wurde geprüft
Testkorpus im Test auf Vollständigkeit je Systemtyp geprüft
Freigabekriterien im Test auf Eindeutigkeit geprüft"
QA-02,Prüfgate Connector-Engine,✅ Prüfungen & Qualitätssicherung,Backend,Einfach,2,3,Fertig,"Prüfprotokoll, automatisierte Tests","Verbindliches Prüfgate für die Connector-Engine (Plugin-Modell, Credential-Verwaltung, Sync-Jobs, Mapping, Fehlerbehandlung, Audit-Kopplung).",ENG-06 ENG-02 ENG-03 ENG-04 ENG-05,QA-05,"Alle Akzeptanzkriterien der ENG-Kacheln sind geprüft und protokolliert
Automatisierte Tests der ENG-Kacheln laufen fehlerfrei
Prüfprotokoll ist abgelegt und nachlesbar","Vollständiger Testlauf über alle ENG-Kacheln durchgeführt und protokolliert
Fehlerinjektion (Drittsystem-Ausfall) im Test korrekt behandelt
Audit-Kopplung im Test nachweislich vollständig"
QA-03,Prüfgate ERP/DATEV/M365,✅ Prüfungen & Qualitätssicherung,Backend,Einfach,2,5,Fertig,"Prüfprotokoll, automatisierte Tests","Verbindliches Prüfgate für ERP/CRM-, DATEV- und Microsoft-365-Anbindung.",ERP-04 DAT-03 M365-03 ERP-02 ERP-03 M365-02 DMS2-01 DMS2-02 DMS2-03,QA-05,"Alle Akzeptanzkriterien der ERP-, DAT- und M365-Kacheln sind geprüft und protokolliert
Automatisierte Tests laufen fehlerfrei gegen Testsysteme
Prüfprotokoll ist abgelegt und nachlesbar
Alle Akzeptanzkriterien der DMS2-Kacheln (Interoperabilität mit Drittsystemen) sind ebenfalls geprüft und protokolliert","Vollständiger Testlauf über ERP-, DAT- und M365-Kacheln durchgeführt und protokolliert
Mindestens ein echter Testlauf je Drittsystemtyp durchgeführt
Fehlerbehandlung bei simuliertem Ausfall je Systemtyp geprüft"
QA-04,Sicherheitsprüfung Drittsystem-Credentials,✅ Prüfungen & Qualitätssicherung,Backend,Mittel,3,3,Fertig,"Sicherheitsprüfung, Penetrationstest-Checkliste","Gezielte Sicherheitsprüfung der Drittsystem-Credential-Verwaltung: Verschlüsselung, Zugriffskontrolle, Schlüsselverwaltung.",ENG-02,QA-05,"Verschlüsselung der Zugangsdaten besteht die Sicherheitsprüfung
Zugriff auf Zugangsdaten ist auf berechtigte Rollen beschränkt
Schlüsselverwaltung folgt dokumentierten Sicherheitsvorgaben","Verschlüsselungsprüfung gegen Datenbankinhalt durchgeführt und protokolliert
Zugriffsprüfung mit unberechtigter Rolle im Test abgewiesen
Schlüsselrotation im Test ohne Datenverlust durchgeführt"
QA-05,Abnahme-Prüfung Connect,✅ Prüfungen & Qualitätssicherung,Backend,Einfach,2,6,Fertig,Abnahmeprotokoll,"Abschließende Abnahme-Prüfung von NEXARCH Connect über alle Epics hinweg, Freigabe zur Nutzung durch andere Module.",QA-02 QA-03 QA-04 QA-06 QA-07 QA-08,,"Alle vorgelagerten Prüfgates sind abgeschlossen und protokolliert
Zusammenspiel aller Connectoren im Gesamttest geprüft
Abnahmeprotokoll ist abgelegt und nachlesbar","Gesamttest über alle Connectoren durchgeführt und protokolliert
Zusammenspiel mit Core-Webhook-Registry im Test geprüft
Abnahmeprotokoll vollständig und nachvollziehbar abgelegt"
QA-06,Schnittstellen-Vertragstests,✅ Prüfungen & Qualitätssicherung,Backend,Mittel,3,3,Fertig,"Vertragstests (Consumer-Driven Contracts), CI-Pipeline","Vertragstests für externe Webhook-Abonnements (API-03) – anders als bei internen Modul-zu-Modul-Schnittstellen sind hier externe Drittsysteme die Konsumenten, ein Breaking Change trifft Kunden direkt, nicht nur ein anderes NEXARCH-Modul.",API-03,QA-05,"Vertragstests decken das Webhook-Abonnement-Format vollständig ab
Absichtlich brechender Schema-Wechsel lässt Tests fehlschlagen
Tests laufen automatisiert in der CI","Testlauf gegen aktuellen Stand grün
Simulierte Breaking Change erkannt
CI-Integration nachgewiesen"
QA-07,Last- & Leistungstest,✅ Prüfungen & Qualitätssicherung,Backend,Mittel,3,6,Fertig,"Lastgenerator, Messprotokoll","Lasttest für Connect unter realistischer Last aus mehreren gleichzeitig synchronisierenden Connector-Instanzen (ERP, DATEV, M365) – insbesondere Credential-Verwaltung (ENG-02) und Sync-Job-Queue unter Last.",ENG-02,QA-05,"Definierte Ziel-Latenz für Credential-Abruf unter Last mehrerer gleichzeitiger Connector-Instanzen eingehalten
Sync-Job-Queue verarbeitet viele gleichzeitig eingereihte Jobs ohne Verklemmung oder Doppelverarbeitung
Rate-Limiting gegenüber Drittsystemen bleibt unter Mehrinstanz-Last korrekt eingehalten","Lasttest mit simulierten parallelen Sync-Jobs mehrerer Connector-Typen durchgeführt, Ergebnis dokumentiert
Test auf Doppelverarbeitung/Verklemmung der Job-Queue unter Last
Rate-Limit-Verhalten gegenüber Drittsystemen bei mehreren gleichzeitigen Connector-Instanzen geprüft"
QA-08,Barrierefreiheits-Audit,✅ Prüfungen & Qualitätssicherung,QA,Mittel,3,5,Fertig,"Prüfwerkzeuge, Bildschirmleser","Unabhängige Prüfung aller Connect-Oberflächen (DATEV-Export-Oberfläche, Import-Assistent, Connect-Konfigurationsoberfläche, Verbindungsstatus-Übersicht) gegen WCAG 2.1 AA mit Werkzeugen und manuellem Durchlauf, gegen die von Core SHL-01 geerbten Basis-Komponenten sowie modulspezifische Ergänzungen.",DAT-03 DMS2-02 API-01 API-02,QA-05,"Keine kritischen Verstöße offen
Manueller Bildschirmleser-Durchlauf dokumentiert
Restbefunde sind mit Frist eingeplant","Automatisierte Prüfung über alle Hauptseiten
Vollständiger Ablauf ohne Maus durchgeführt
Auditbericht abgelegt"
ENG-07,Drittsystem-Zugangsdaten über Core-Tenant-KEK-Hierarchie verschlüsseln,🔌 Connector-Engine & Grundgerüst,Backend,Mittel,2,7,Fertig,"Envelope-Encryption (Tenant-KEK aus Core API-10), PostgreSQL, Go","ENG-02 speichert Zugangsdaten für Drittsysteme (OAuth-Tokens, API-Keys) verschlüsselt, ohne festzulegen, mit welchem Schlüssel. Analog zu DMS `IAM-19` müssen diese Zugangsdaten über den Tenant-KEK aus der Core-Schlüsselhierarchie (API-10) verschlüsselt werden statt über ein separates, eigenes Verschlüsselungsschema – sonst entsteht neben der zentralen Schlüsselverwaltung ein zweiter, unabhängig zu härtender Verschlüsselungspfad für hochsensible Zugangsdaten.",ENG-02,,"Drittsystem-Zugangsdaten (OAuth-Tokens, API-Keys) sind in der Datenbank ausschließlich verschlüsselt über den Tenant-KEK des jeweiligen Mandanten gespeichert
Ein direkter Lesezugriff auf die Zugangsdaten-Tabelle liefert keinen verwertbaren Klartext
Bestehende Connector-Authentifizierung aus ENG-02 funktioniert nach der Umstellung unverändert","Test: Zugangsdaten in der Datenbank direkt auslesen, prüfen dass nur Chiffrat sichtbar ist
Regressionstest: Connector-Verbindungsaufbau (ERP/DATEV/M365/DMS2) funktioniert nach Umstellung auf Tenant-KEK-Verschlüsselung weiterhin
Test: Entschlüsselung schlägt fehl, wenn der falsche Tenant-KEK verwendet wird (kein Cross-Tenant-Zugriff auf Drittsystem-Credentials)"
ENG-08,Ressourcenlimits & Rate-Limiting für Drittsystem-Sync-Jobs,🔌 Connector-Engine & Grundgerüst,Backend,Mittel,2,7,Fertig,"Postgres-Jobqueue, Rate-Limiting, Ressourcenlimits (Zeit/Datenmenge)","ENG-03 verwaltet periodische Sync-Jobs, ENG-05 behandelt Fehler bei Drittsystem-Ausfällen mit Retry/Backoff, ohne Obergrenzen für Laufzeit oder Datenmenge je Sync-Lauf festzulegen. Ein fehlerhaft konfigurierter oder kompromittierter Connector (z. B. ein Drittsystem, das ungewöhnlich große Antworten liefert oder in einer Retry-Schleife hängen bleibt) kann sonst Ressourcen auf Kosten anderer Mandanten/Connectoren binden. Harte Obergrenzen je Sync-Lauf definieren (max. Laufzeit, max. übertragene Datenmenge, max. Anzahl Retry-Versuche als Abbruchgrenze aus ENG-05) sowie Rate-Limiting für ausgehende Anfragen an ein einzelnes Drittsystem.",ENG-03 ENG-05,,"Jeder Sync-Job hat konfigurierbare Obergrenzen für Laufzeit und übertragene Datenmenge
Die Abbruchgrenze für Retry-Versuche aus ENG-05 wird durchgesetzt, ein Job endet nach Erreichen der Grenze kontrolliert statt endlos zu wiederholen
Ausgehende Anfragen an ein einzelnes Drittsystem sind ratenbegrenzt, sodass ein einzelner Connector nicht das gesamte Sync-System für andere Connectoren/Mandanten blockiert","Test: Sync-Job, der die Laufzeit-/Datenmengenobergrenze überschreitet, wird kontrolliert abgebrochen
Test: Retry-Abbruchgrenze aus ENG-05 wird nach der konfigurierten Anzahl Versuche tatsächlich durchgesetzt
Lasttest: ein Connector mit Drittsystem-Fehlverhalten blockiert nicht die Sync-Jobs anderer Connectoren/Mandanten"
ENG-10,Modul-weiter Kill-Switch und Ausfallisolation für Connect,🔌 Connector-Engine & Grundgerüst,Backend,Mittel,2,8,Fertig,,,,,Kill-Switch per Umgebungsvariable; Totalausfall ohne Auswirkung auf andere Module; Einzel-Connector-Ausfall blockiert nicht den Rest,Kill-Switch-Test; Smoke-Test anderer Module nach hartem Prozess-Kill; Ausfall-Connector-Test
SEC-01,Echte Authentifizierung und verifizierter Tenant-Kontext für Connect-APIs,🔒 Sicherheit,Backend,Hoch,3,8,Backlog,"JWT-Verifikation (Core-Token), Go net/http Middleware, RBAC-Policy-Prüfung gegen Core","Security-Review-Finding K1 (kritisch): Connect-APIs prüfen nur `X-User-Id != """"`, Tenant kommt unverifiziert aus `X-Tenant-Slug`. `statusapi.WithPolicy()` existiert, wird aber nicht verdrahtet. Fundstellen: `statusapi.go:57-70`, `dms2importapi.go:41-54`, `datevapi.go:30-43`, `main.go:48-49`. Echte AuthN analog DMS-Vorbild (`moduleauth/middleware.go:72`) einführen.",,,"Jeder Connect-API-Aufruf verlangt ein gültiges, kryptografisch verifiziertes Core-Token; ein Request ohne gültiges Token wird mit 401 abgewiesen
Tenant- und User-Kontext werden ausschließlich aus dem verifizierten Token abgeleitet; X-User-Id/X-Tenant-Slug haben keinen Einfluss mehr, wenn sie vom Tokeninhalt abweichen
statusapi.WithPolicy() ist vor jeder Fach-API verdrahtet; unzureichende RBAC-Berechtigung führt zu 403
Angriff mit gefälschtem X-Tenant-Slug-Header auf fremde Mandantendaten ist nach der Umstellung nachweislich blockiert","Angriff real nachstellen: curl mit gefälschtem X-Tenant-Slug liefert vor dem Fix fremde Mandantendaten über /connectors/status
Gleicher Angriff gegen POST /dms2/import/execute legt vor dem Fix Import-Lauf im Namen des fremden Mandanten an
Nach dem Fix: gleicher Request ohne gültiges Token bzw. mit gefälschtem Slug wird mit 401/403 abgewiesen
Regressionstest: legitimer Request mit gültigem Token funktioniert unverändert
Test: RBAC-Policy-Verweigerung löst 403 aus"
SEC-02,Entpack-Limit gegen Zip-Bomben im DMS2-Import,🔒 Sicherheit,Backend,Mittel,1,8,Backlog,"Go archive/zip, Streaming-Lese-Limits","Security-Review-Finding H12 (hoch): `io.ReadAll(rc)` ohne Limit in `readZipEntry` (`dms2import/parse.go:219-225`) und analog in `dmsexchange.go:1966-1973`. Das 200-MiB-Limit in `dms2importapi.go:26` gilt nur für die komprimierte Größe, `UncompressedSize64` wird nie geprüft (Zip-Bomb-Risiko).",,,"readZipEntry prüft UncompressedSize64 je Eintrag und kumulativ gegen feste Obergrenzen
Gleiches Limit gilt im analogen Entpack-Muster in dmsexchange.go
Überschreitung bricht den Import mit klarer Fehlermeldung ab statt abzustürzen
Limits greifen streaming während des Lesens, nicht erst nach vollständigem Entpacken","Angriff real nachstellen: Test-Zip (~10 MiB komprimiert) entpackt vor dem Fix unbegrenzt auf mehrere GiB
Nach dem Fix: gleicher Testfall bricht vor übermäßigem Speicherverbrauch mit Fehlermeldung ab
Regressionstest: normales Import-Zip innerhalb der Limits wird weiterhin korrekt eingelesen
Grenzfalltest: Zip knapp unter/über dem Limit liefert erwartetes Verhalten"
SEC-03,Append-only-Schutz für Connect-Protokolltabellen,🔒 Sicherheit,Backend,Mittel,2,8,Backlog,"PostgreSQL REVOKE/GRANT, Trigger-Funktion","Security-Review-Finding H15 (hoch): keine der 12 Migrationen unter `connect/migrations/` erzwingt Append-only auf Protokolltabellen (`datev_exports`, `dms2_import_runs`, `connect_audit_outbox`); Code macht UPDATE/DELETE (`syncjob.go:258`, `audittrail.go:1120`, `credential.go:793`). Etabliertes Muster aus Core AUD-07/DMS VER-08/Workflow ENG-07 übernehmen.",,,"REVOKE UPDATE/DELETE von der Anwendungsrolle auf datev_exports, dms2_import_runs, connect_audit_outbox
Trigger weist versuchten UPDATE/DELETE ab und protokolliert den Versuch
INSERT funktioniert unverändert, inkl. Sequence-GRANT bei BIGSERIAL
Betroffene Codepfade (syncjob.go, audittrail.go, credential.go) funktionieren ohne Schreibversuch auf geschützte Felder","Vor der Migration: direktes UPDATE/DELETE mit Anwendungsrolle gelingt nachweislich
Nach der Migration: gleicher Versuch wird abgewiesen, Trigger protokolliert die Warnung
Regressionstest: INSERT in alle drei Tabellen funktioniert unverändert inkl. Sequence-Vergabe
Regressionstest: angepasste Codepfade (syncjob, audittrail, credential) funktionieren fachlich weiterhin korrekt"
SEC-04,Fremdsystem-Antwortkörper vor Speicherung in last_error filtern,🔒 Sicherheit,Backend,Niedrig,1,8,Backlog,"Go, Muster-/Regex-Filterung","Security-Review-Finding M16 (mittel): bis zu 1 MiB Fremdsystem-Antwortkörper ungefiltert in `last_error`, lesbar über `statusapi.go:102`. Fundstellen: `datevtransfer.go:676-682`, `m365connector.go:112`, `backupconnector.go:101,139`. Kann Secrets enthalten (z. B. AWS StringToSign/AccessKeyID).",,,"Fremdsystem-Antwortkörper wird vor Speicherung in last_error auf sicherheitsrelevante Muster geprüft und diese werden entfernt/redigiert
Nur diagnostisch relevante Kurzfassung wird persistiert, keine vollständige Rohantwort
Kurzfassung bleibt für Fehlerdiagnose über die Status-API nachvollziehbar","Vor dem Fix: simulierter Fehlerfall mit AWS-artiger Antwort landet ungefiltert in last_error und ist über Status-API lesbar
Nach dem Fix: sicherheitsrelevante Angaben sind in der Kurzfassung nicht mehr enthalten
Regressionstest: normaler Fehlerfall liefert weiterhin diagnostisch brauchbare Kurzfassung
Test für alle drei Fundstellen einzeln (DATEV-Transfer, M365, Backup-Connector)"
SEC-05,Tenant-Bindung der Connect-Store-Methoden (IDOR-Härtung),🔒 Sicherheit,Backend,Mittel,2,8,Backlog,"Go, pgx/v5, PostgreSQL, Signaturänderung","Security-Review-Finding M17 (mittel): tenant-ungebundene Store-Methoden mit `WHERE id=$1` ohne Tenant-Filter, latentes IDOR-Risiko. Fundstellen: `syncjob.go:109-122,191-269`, `datevtransfer/store.go:935-1001`, `erpexport/store.go:1424-1490`.",,,"Betroffene Store-Methoden nehmen Tenant-Parameter als zwingenden Bestandteil der Signatur entgegen
WHERE-Klausel ist um AND tenant_slug=$2 ergänzt
Alle Aufrufer sind angepasst, Projekt compiliert fehlerfrei
Zugriff mit id eines fremden Mandanten liefert kein Ergebnis","Vor dem Fix: Store-Methode mit id von Mandant A und Tenant-Kontext von Mandant B liefert fremden Datensatz
Nach dem Fix: gleicher Aufruf liefert kein Ergebnis bei nicht passendem tenant_slug
Regressionstest: Aufruf mit korrekt zueinander passendem id/tenant_slug liefert erwarteten Datensatz, für alle drei Stores
Build-Test: Projekt compiliert fehlerfrei, kein Aufrufer ohne Tenant-Parameter"
1
Code
Titel
Epic
Rolle
Komplexitaet
Aufwand_PT
Welle
Status
Technik
Beschreibung
Haengt_ab_von
Schaltet_frei
Akzeptanzkriterien
Pruefungen
2
ENG-01
Connector-Plugin-Modell
🔌 Connector-Engine & Grundgerüst
Backend
Mittel
3
1
Fertig
Plugin-Schnittstelle, Go-Interface, Registrierung
Plugin-Schnittstelle, über die einzelne Drittsystem-Connectoren (ERP, CRM, DATEV, M365, andere DMS, Backup-Ziele) registriert werden, ohne dass die Engine connectorspezifisches Wissen braucht.
Neuer Connector lässt sich ohne Codeänderung an der Engine registrieren
Fehlende Registrierung führt zu klarer Fehlermeldung statt Absturz
Connector-Metadaten (Name, Version, unterstützte Operationen) sind abrufbar
Zwei Testconnectoren parallel registriert und einzeln ansprechbar
Deregistrierung entfernt Connector vollständig
Fehlerhafter Connector wird beim Laden abgewiesen, Engine bleibt lauffähig
Verwaltung von Zugangsdaten für Drittsysteme (OAuth-Tokens, API-Keys), verschlüsselt gespeichert und je Connector-Instanz zugeordnet.
ENG-01
M365-01 API-01 QA-04 QA-07 QA-02 ENG-07
Zugangsdaten sind ausschließlich verschlüsselt gespeichert
OAuth-Token-Erneuerung läuft automatisiert ohne Nutzereingriff
Widerruf einer Verbindung entfernt zugehörige Zugangsdaten vollständig
Datenbankinhalt der Zugangsdaten-Tabelle ist ohne Schlüssel nicht lesbar
Ablaufender OAuth-Token wird vor Ablauf erneuert
Widerruf im Test entfernt Zugangsdaten nachweislich
Konfigurierbares Feld-Mapping zwischen NEXARCH-Datenmodell und Drittsystem-Feldern je Connector-Instanz.
ENG-01
API-01 QA-02
Feld-Mapping ist ohne Codeänderung konfigurierbar
Ungültiges Mapping wird beim Speichern abgewiesen
Pflichtfeld ohne Zuordnung wird vor Ausführung gemeldet
Ungültiges Mapping im Test abgewiesen
Fehlendes Pflichtfeld-Mapping verhindert Sync-Start
Geändertes Mapping wirkt erst auf nachfolgende Läufe
6
ENG-05
Fehlerbehandlung & Retry bei Drittsystem-Ausfällen
🔌 Connector-Engine & Grundgerüst
Backend
Mittel
3
3
Fertig
Retry mit Backoff, Fehlerprotokoll, Postgres-Jobqueue
Fehlerbehandlung für Sync-Jobs bei Drittsystem-Ausfällen: Retry mit Backoff, Fehlerprotokoll, Abbruchgrenze.
ENG-03
API-02 QA-02 ENG-08
Fehlgeschlagener Sync-Job wird mit Backoff automatisch wiederholt
Dauerhafter Ausfall führt nach Grenzwert zu klarem Fehlerstatus statt Endlosschleife
Fehlerprotokoll je Lauf ist einsehbar
Simulierter Drittsystem-Ausfall löst Retry mit Backoff aus
Abbruchgrenze im Test erreicht und Status korrekt gesetzt
Fehlerprotokoll enthält Ursache und Zeitpunkt
7
ENG-06
Connector-Audit-Kopplung (Core AUD)
🔌 Connector-Engine & Grundgerüst
Backend
Einfach
2
2
Fertig
Audit-Ereignis-Kopplung
Kopplung aller Connector-Aktionen (Verbindung angelegt, Sync ausgeführt, Zugangsdaten geändert) an das zentrale Core-Audit-Log.
ENG-01
QA-02
Jede sicherheitsrelevante Connector-Aktion erzeugt einen Audit-Eintrag im Core-Audit-Log
Audit-Eintrag enthält Person, Zeitpunkt und betroffenen Connector
Fehlende Audit-Kopplung verhindert die Aktion nicht, wird aber protokolliert
Verbindung anlegen erzeugt nachweisbaren Audit-Eintrag
Zugangsdaten ändern erzeugt nachweisbaren Audit-Eintrag
Ausfall des Audit-Dienstes blockiert Connector-Betrieb nicht
8
ERP-01
ERP-Connector-Grundgerüst
📈 ERP/CRM-Anbindung
Backend
Mittel
3
2
Fertig
ERP-Connector, REST/SOAP-Client
Connector-Grundgerüst für die Anbindung gängiger ERP-Systeme: Verbindungsaufbau, Basisoperationen (Lesen/Schreiben von Stammdaten und Belegen).
ENG-01
ERP-03 ERP-04
Verbindung zu einem Test-ERP-System lässt sich aufbauen und prüfen
Basisoperationen (Lesen/Schreiben) sind über das Connector-Plugin-Modell nutzbar
Verbindungsfehler wird klar gemeldet statt stillem Abbruch
Verbindungsaufbau gegen Test-ERP-System erfolgreich geprüft
Lese- und Schreiboperation im Test erfolgreich
Simulierter Verbindungsfehler wird korrekt gemeldet
9
ERP-02
CRM-Connector-Grundgerüst
📈 ERP/CRM-Anbindung
Backend
Mittel
3
2
Fertig
CRM-Connector, REST-Client
Connector-Grundgerüst für die Anbindung gängiger CRM-Systeme: Verbindungsaufbau, Basisoperationen für Kontakte/Kunden.
ENG-01
ERP-03 QA-03
Verbindung zu einem Test-CRM-System lässt sich aufbauen und prüfen
Basisoperationen (Lesen/Schreiben) sind über das Connector-Plugin-Modell nutzbar
Verbindungsfehler wird klar gemeldet statt stillem Abbruch
Verbindungsaufbau gegen Test-CRM-System erfolgreich geprüft
Lese- und Schreiboperation im Test erfolgreich
Simulierter Verbindungsfehler wird korrekt gemeldet
10
ERP-03
Stammdaten-Abgleich (Kunden/Lieferanten)
📈 ERP/CRM-Anbindung
Backend
Mittel
3
3
Fertig
Sync-Logik, Konfliktbehandlung
Automatisierter Abgleich von Kunden- und Lieferantenstammdaten zwischen NEXARCH und angebundenem ERP/CRM.
ERP-01 ERP-02
QA-03
Neuer Stammdatensatz im Drittsystem erscheint nach Sync in NEXARCH
Änderungskonflikt wird erkannt und nicht stillschweigend überschrieben
Abgleich läuft nach Zeitplan über die Sync-Job-Verwaltung
Neuanlage im Test-ERP nach Sync in NEXARCH sichtbar
Gleichzeitige Änderung auf beiden Seiten erzeugt erkennbaren Konflikt statt Datenverlust
Zeitplan-gesteuerter Lauf im Test erfolgreich
11
ERP-04
Beleg-/Dokumentexport an ERP
📈 ERP/CRM-Anbindung
Backend
Mittel
3
3
Fertig
Dokumentexport, Feld-Mapping
Export von Belegen/Dokumenten aus NEXARCH an das angebundene ERP-System inklusive Metadaten.
ERP-01
QA-03
Beleg lässt sich mit zugeordneten Metadaten an das ERP exportieren
Fehlgeschlagener Export wird über die Fehlerbehandlung erneut versucht
Bereits exportierter Beleg wird nicht doppelt übertragen
Testbeleg im ERP nach Export mit korrekten Metadaten auffindbar
Simulierter Exportfehler löst Retry aus
Doppelversand im Test ausgeschlossen
12
DAT-01
DATEV-Format-Export (Belege/Buchungsstapel)
🧾 DATEV-Anbindung
Backend
Mittel
3
2
Fertig
DATEV-Exportformat, Buchungsstapel-Struktur
Export von Belegen und Buchungsstapeln im DATEV-Format aus NEXARCH-Dokumenten und -Metadaten.
ENG-01 RET-05
DAT-02 DAT-03
Export erzeugt gültige DATEV-Exportdatei aus Testbelegen
Pflichtfelder des DATEV-Formats werden vollständig befüllt oder der Export klar abgewiesen
Exportierter Buchungsstapel ist eindeutig einem Zeitraum zugeordnet
Exportiertes Objekt (Buchungsstapel) wird bei Archive RET-05 mit der GoBD-Aufbewahrungsklasse registriert, statt unregistriert im Dateisystem zu liegen
Erzeugte Exportdatei besteht Formatprüfung gegen DATEV-Spezifikation
Fehlendes Pflichtfeld führt zu klarer Abweisung statt fehlerhaftem Export
Zeitraumzuordnung im Test korrekt
Export eines Testbuchungsstapels erzeugt nachweisbar eine Registrierung bei Archive RET-05
13
DAT-02
DATEV-Konnektor (Schnittstellen-Protokoll)
🧾 DATEV-Anbindung
Backend
Komplex
4
3
Fertig
DATEV-Schnittstellenprotokoll, Übertragungslogik
Konnektor, der den Export im DATEV-Format über das offizielle Schnittstellenprotokoll an DATEV-Systeme überträgt.
DAT-01
DAT-03
Übertragung an ein Test-DATEV-Zielsystem gelingt protokollkonform
Fehlgeschlagene Übertragung wird über die Fehlerbehandlung erneut versucht
Übertragungsstatus ist je Lauf nachvollziehbar
Protokollkonforme Übertragung im Test gegen Referenzsystem geprüft
Simulierter Übertragungsfehler löst Retry aus
Übertragungsstatus im Test korrekt und nachvollziehbar
14
DAT-03
DATEV-Export-Oberfläche & Protokoll
🧾 DATEV-Anbindung
Frontend
Einfach
2
4
Fertig
React/Next.js-Oberfläche, Exportprotokoll-Ansicht
Oberfläche zum Anstoßen von DATEV-Exporten sowie Einsicht in Exportprotokolle und Übertragungsstatus.
DAT-01 DAT-02 SHL-01
QA-03
Export lässt sich über die Oberfläche mit Zeitraum-Auswahl anstoßen
Exportprotokoll ist je Lauf einsehbar
Fehlgeschlagener Export ist in der Oberfläche klar erkennbar
Export-Anstoß im Test aus der Oberfläche erfolgreich
Protokollansicht zeigt reale Testläufe korrekt an
Fehlgeschlagener Testlauf ist visuell klar unterscheidbar
15
M365-01
Microsoft-Graph-API-Anbindung (Auth/Basis)
☁️ Microsoft 365-Anbindung
Backend
Mittel
3
3
Fertig
Microsoft Graph API, OAuth2
Basis-Anbindung an Microsoft Graph: Authentifizierung über OAuth2 und grundlegende API-Aufrufe als Voraussetzung für SharePoint/OneDrive- und Outlook-Anbindung.
ENG-02
M365-02 M365-03
Authentifizierung gegen Microsoft Graph im Test erfolgreich
Zugangsdaten werden über die Connect-Credential-Verwaltung gespeichert
Abgelaufene Berechtigung wird erkannt und klar gemeldet
OAuth2-Anmeldung im Test gegen Microsoft-Testmandant erfolgreich
Testaufruf einer Graph-API-Basisoperation erfolgreich
Simulierter Berechtigungsablauf wird korrekt erkannt und gemeldet
16
M365-02
SharePoint/OneDrive-Dokumentabgleich
☁️ Microsoft 365-Anbindung
Backend
Mittel
3
4
Fertig
SharePoint/OneDrive-API, Sync-Logik
Abgleich von Dokumenten zwischen NEXARCH und SharePoint/OneDrive über die Microsoft-Graph-Anbindung.
M365-01
QA-03
Dokument aus SharePoint/OneDrive erscheint nach Sync in NEXARCH mit Metadaten
Änderungskonflikt wird erkannt und nicht stillschweigend überschrieben
Abgleich läuft nach Zeitplan über die Sync-Job-Verwaltung
Testdokument aus SharePoint nach Sync in NEXARCH korrekt vorhanden
Gleichzeitige Änderung auf beiden Seiten erzeugt erkennbaren Konflikt
Zeitplan-gesteuerter Lauf im Test erfolgreich
17
M365-03
Outlook-Kalender-Kopplung (Fristen/Wiedervorlage)
☁️ Microsoft 365-Anbindung
Backend
Mittel
3
4
Fertig
Outlook-Kalender-API, Fristen-Kopplung
Kopplung von NEXARCH-Fristen und Wiedervorlagen mit dem Outlook-Kalender über die Microsoft-Graph-Anbindung.
M365-01
QA-03
Frist/Wiedervorlage erscheint als Kalendereintrag in Outlook
Änderung der Frist in NEXARCH aktualisiert den Kalendereintrag
Gelöschte Frist entfernt den zugehörigen Kalendereintrag
Testfrist im Test-Outlook-Kalender korrekt sichtbar
Friständerung im Test korrekt im Kalender nachgezogen
Löschung im Test entfernt Kalendereintrag vollständig
Offen dokumentiertes Export-/Import-Format für Dokumente und Metadaten zur Interoperabilität mit anderen DMS-Systemen.
ENG-01
DMS2-02 QA-03
Format ist vollständig dokumentiert und ohne NEXARCH-Werkzeug lesbar
Export enthält Dokument, Metadaten und Versionsbezug
Format-Validierung weist fehlerhafte Dateien ab
Exportierte Testdatei extern ohne NEXARCH-Werkzeug lesbar geprüft
Enthaltene Metadaten im Test vollständig und korrekt
Fehlerhafte Testdatei wird bei Validierung abgewiesen
19
DMS2-02
Import-Assistent für Drittsystem-Exporte
🔄 Andere-DMS-Interoperabilität
Fullstack
Mittel
3
3
Fertig
Import-Assistent mit Mapping-Vorschau-Oberfläche (Next.js/React), Backend-Parser für Drittsystem-Exportformate
Assistent, der Exporte aus gängigen Drittsystem-DMS einliest, Feld-Mapping vorschlägt und den Import durchführt.
DMS2-01 SHL-01
QA-03
Testexport eines gängigen Drittsystems lässt sich einlesen
Feld-Mapping wird vorgeschlagen und ist vor Import änderbar
Import-Ergebnis mit Erfolgs-/Fehlerzahl ist einsehbar
Mapping-Vorschau ist eine bedienbare Oberfläche (nicht nur eine API-Antwort), in der Feldzuordnungen vor dem Import angepasst werden können
Testexport eines Drittsystems im Test erfolgreich eingelesen
Manuelle Mapping-Korrektur im Test übernommen
Import-Protokoll zeigt korrekte Erfolgs-/Fehlerzahl
Mapping-Vorschau im Browser bedient: Zuordnung geändert, Import mit geänderter Zuordnung ausgeführt
20
DMS2-03
Externe-Backup-Ziel-Anbindung
🔄 Andere-DMS-Interoperabilität
Backend
Mittel
3
2
Fertig
Backup-Ziel-Connector, verschlüsselte Übertragung
Anbindung externer Backup-Ziele (z. B. S3-kompatibler Speicher) für den verschlüsselten Export von Dokumentbeständen.
ENG-01
QA-03
Backup-Ziel lässt sich über das Connector-Plugin-Modell einrichten
Export an das Backup-Ziel erfolgt verschlüsselt
Fehlgeschlagener Backup-Export wird über die Fehlerbehandlung erneut versucht
Verbindungsaufbau zu Test-Backup-Ziel im Test erfolgreich
Übertragung im Test nachweislich verschlüsselt
Simulierter Übertragungsfehler löst Retry aus
Oberfläche zum Einrichten und Konfigurieren von Connectoren: Verbindung anlegen, Zugangsdaten hinterlegen, Feld-Mapping bearbeiten.
ENG-02 ENG-04 SHL-01
Connector lässt sich vollständig über die Oberfläche einrichten, ohne Konfigurationsdatei
Zugangsdaten werden nur maskiert angezeigt, nie im Klartext
Feld-Mapping ist über die Oberfläche bearbeitbar
Vollständige Einrichtung eines Testconnectors über die Oberfläche erfolgreich
Zugangsdaten in der Oberfläche im Test nachweislich maskiert
Mapping-Änderung über die Oberfläche im Test korrekt übernommen
22
API-02
Verbindungsstatus-Übersicht & Diagnose
🖥️ Connect-Oberfläche
Frontend
Einfach
2
4
Fertig
Next.js/React, Statusanzeige
Übersicht über alle eingerichteten Verbindungen mit Status, letztem Sync-Lauf und Diagnoseinformationen bei Fehlern.
ENG-05 SHL-01
Verbindungsstatus je Connector ist auf einen Blick erkennbar
Letzter Sync-Lauf mit Ergebnis ist einsehbar
Fehlerdiagnose zeigt die Ursache aus dem Fehlerprotokoll
Statusanzeige im Test korrekt für erfolgreichen und fehlgeschlagenen Lauf
Diagnoseansicht zeigt reale Testfehler nachvollziehbar an
Aktualisierung nach neuem Sync-Lauf im Test korrekt
23
API-03
Externe Webhook-Abonnements (nutzt Core API-07)
🖥️ Connect-Oberfläche
Backend
Mittel
3
2
Fertig
Core-Webhook-Registry-Anbindung
Abonnieren externer Systemereignisse über Webhooks, die die zentrale Core-Webhook-Registry zustellt – Connect registriert lediglich Abonnements, betreibt keine eigene Zustellung.
ENG-01
Connector kann ein Webhook-Ereignis über die Core-Webhook-Registry abonnieren
Zugestelltes Ereignis löst die zugeordnete Connector-Aktion aus
Abbestellen entfernt das Abonnement vollständig
Testabonnement über Core-Webhook-Registry im Test erfolgreich registriert
Testereignis löst im Test die erwartete Connector-Aktion aus
Abbestellung im Test vollständig entfernt
24
QA-01
Teststrategie Connect
✅ Prüfungen & Qualitätssicherung
Backend
Einfach
2
1
Fertig
Testkorpus, Teststrategie-Dokument
Teststrategie für Connect: Testkorpus aus realen Drittsystem-Antworten (ERP, CRM, DATEV, Microsoft Graph), Testarten je Ausbaustufe, Freigabekriterien.
Teststrategie ist dokumentiert und für alle Epics anwendbar
Testkorpus enthält reale Beispieldaten je angebundenem Drittsystemtyp
Freigabekriterien je Prüfgate sind eindeutig benannt
Pflichttests für sicherheitsrelevanten Code (Tenant-Scoping, Zugriffsprüfung, Auth-nahe Logik) sind als verbindliches Merge-Gate verankert – kein Merge auf solchen Code ohne Test, analog Core QA-01
Teststrategie-Dokument liegt vollständig vor und wurde geprüft
Testkorpus im Test auf Vollständigkeit je Systemtyp geprüft
Freigabekriterien im Test auf Eindeutigkeit geprüft
25
QA-02
Prüfgate Connector-Engine
✅ Prüfungen & Qualitätssicherung
Backend
Einfach
2
3
Fertig
Prüfprotokoll, automatisierte Tests
Verbindliches Prüfgate für die Connector-Engine (Plugin-Modell, Credential-Verwaltung, Sync-Jobs, Mapping, Fehlerbehandlung, Audit-Kopplung).
ENG-06 ENG-02 ENG-03 ENG-04 ENG-05
QA-05
Alle Akzeptanzkriterien der ENG-Kacheln sind geprüft und protokolliert
Automatisierte Tests der ENG-Kacheln laufen fehlerfrei
Prüfprotokoll ist abgelegt und nachlesbar
Vollständiger Testlauf über alle ENG-Kacheln durchgeführt und protokolliert
Fehlerinjektion (Drittsystem-Ausfall) im Test korrekt behandelt
Audit-Kopplung im Test nachweislich vollständig
26
QA-03
Prüfgate ERP/DATEV/M365
✅ Prüfungen & Qualitätssicherung
Backend
Einfach
2
5
Fertig
Prüfprotokoll, automatisierte Tests
Verbindliches Prüfgate für ERP/CRM-, DATEV- und Microsoft-365-Anbindung.
Alle Akzeptanzkriterien der ERP-, DAT- und M365-Kacheln sind geprüft und protokolliert
Automatisierte Tests laufen fehlerfrei gegen Testsysteme
Prüfprotokoll ist abgelegt und nachlesbar
Alle Akzeptanzkriterien der DMS2-Kacheln (Interoperabilität mit Drittsystemen) sind ebenfalls geprüft und protokolliert
Vollständiger Testlauf über ERP-, DAT- und M365-Kacheln durchgeführt und protokolliert
Mindestens ein echter Testlauf je Drittsystemtyp durchgeführt
Fehlerbehandlung bei simuliertem Ausfall je Systemtyp geprüft
27
QA-04
Sicherheitsprüfung Drittsystem-Credentials
✅ Prüfungen & Qualitätssicherung
Backend
Mittel
3
3
Fertig
Sicherheitsprüfung, Penetrationstest-Checkliste
Gezielte Sicherheitsprüfung der Drittsystem-Credential-Verwaltung: Verschlüsselung, Zugriffskontrolle, Schlüsselverwaltung.
ENG-02
QA-05
Verschlüsselung der Zugangsdaten besteht die Sicherheitsprüfung
Zugriff auf Zugangsdaten ist auf berechtigte Rollen beschränkt
Schlüsselverwaltung folgt dokumentierten Sicherheitsvorgaben
Verschlüsselungsprüfung gegen Datenbankinhalt durchgeführt und protokolliert
Zugriffsprüfung mit unberechtigter Rolle im Test abgewiesen
Schlüsselrotation im Test ohne Datenverlust durchgeführt
28
QA-05
Abnahme-Prüfung Connect
✅ Prüfungen & Qualitätssicherung
Backend
Einfach
2
6
Fertig
Abnahmeprotokoll
Abschließende Abnahme-Prüfung von NEXARCH Connect über alle Epics hinweg, Freigabe zur Nutzung durch andere Module.
QA-02 QA-03 QA-04 QA-06 QA-07 QA-08
Alle vorgelagerten Prüfgates sind abgeschlossen und protokolliert
Zusammenspiel aller Connectoren im Gesamttest geprüft
Abnahmeprotokoll ist abgelegt und nachlesbar
Gesamttest über alle Connectoren durchgeführt und protokolliert
Zusammenspiel mit Core-Webhook-Registry im Test geprüft
Abnahmeprotokoll vollständig und nachvollziehbar abgelegt
Vertragstests für externe Webhook-Abonnements (API-03) – anders als bei internen Modul-zu-Modul-Schnittstellen sind hier externe Drittsysteme die Konsumenten, ein Breaking Change trifft Kunden direkt, nicht nur ein anderes NEXARCH-Modul.
API-03
QA-05
Vertragstests decken das Webhook-Abonnement-Format vollständig ab
Absichtlich brechender Schema-Wechsel lässt Tests fehlschlagen
Tests laufen automatisiert in der CI
Testlauf gegen aktuellen Stand grün
Simulierte Breaking Change erkannt
CI-Integration nachgewiesen
30
QA-07
Last- & Leistungstest
✅ Prüfungen & Qualitätssicherung
Backend
Mittel
3
6
Fertig
Lastgenerator, Messprotokoll
Lasttest für Connect unter realistischer Last aus mehreren gleichzeitig synchronisierenden Connector-Instanzen (ERP, DATEV, M365) – insbesondere Credential-Verwaltung (ENG-02) und Sync-Job-Queue unter Last.
ENG-02
QA-05
Definierte Ziel-Latenz für Credential-Abruf unter Last mehrerer gleichzeitiger Connector-Instanzen eingehalten
Sync-Job-Queue verarbeitet viele gleichzeitig eingereihte Jobs ohne Verklemmung oder Doppelverarbeitung
Rate-Limiting gegenüber Drittsystemen bleibt unter Mehrinstanz-Last korrekt eingehalten
Lasttest mit simulierten parallelen Sync-Jobs mehrerer Connector-Typen durchgeführt, Ergebnis dokumentiert
Test auf Doppelverarbeitung/Verklemmung der Job-Queue unter Last
Rate-Limit-Verhalten gegenüber Drittsystemen bei mehreren gleichzeitigen Connector-Instanzen geprüft
31
QA-08
Barrierefreiheits-Audit
✅ Prüfungen & Qualitätssicherung
QA
Mittel
3
5
Fertig
Prüfwerkzeuge, Bildschirmleser
Unabhängige Prüfung aller Connect-Oberflächen (DATEV-Export-Oberfläche, Import-Assistent, Connect-Konfigurationsoberfläche, Verbindungsstatus-Übersicht) gegen WCAG 2.1 AA mit Werkzeugen und manuellem Durchlauf, gegen die von Core SHL-01 geerbten Basis-Komponenten sowie modulspezifische Ergänzungen.
DAT-03 DMS2-02 API-01 API-02
QA-05
Keine kritischen Verstöße offen
Manueller Bildschirmleser-Durchlauf dokumentiert
Restbefunde sind mit Frist eingeplant
Automatisierte Prüfung über alle Hauptseiten
Vollständiger Ablauf ohne Maus durchgeführt
Auditbericht abgelegt
32
ENG-07
Drittsystem-Zugangsdaten über Core-Tenant-KEK-Hierarchie verschlüsseln
🔌 Connector-Engine & Grundgerüst
Backend
Mittel
2
7
Fertig
Envelope-Encryption (Tenant-KEK aus Core API-10), PostgreSQL, Go
ENG-02 speichert Zugangsdaten für Drittsysteme (OAuth-Tokens, API-Keys) verschlüsselt, ohne festzulegen, mit welchem Schlüssel. Analog zu DMS `IAM-19` müssen diese Zugangsdaten über den Tenant-KEK aus der Core-Schlüsselhierarchie (API-10) verschlüsselt werden statt über ein separates, eigenes Verschlüsselungsschema – sonst entsteht neben der zentralen Schlüsselverwaltung ein zweiter, unabhängig zu härtender Verschlüsselungspfad für hochsensible Zugangsdaten.
ENG-02
Drittsystem-Zugangsdaten (OAuth-Tokens, API-Keys) sind in der Datenbank ausschließlich verschlüsselt über den Tenant-KEK des jeweiligen Mandanten gespeichert
Ein direkter Lesezugriff auf die Zugangsdaten-Tabelle liefert keinen verwertbaren Klartext
Bestehende Connector-Authentifizierung aus ENG-02 funktioniert nach der Umstellung unverändert
Test: Zugangsdaten in der Datenbank direkt auslesen, prüfen dass nur Chiffrat sichtbar ist
Regressionstest: Connector-Verbindungsaufbau (ERP/DATEV/M365/DMS2) funktioniert nach Umstellung auf Tenant-KEK-Verschlüsselung weiterhin
Test: Entschlüsselung schlägt fehl, wenn der falsche Tenant-KEK verwendet wird (kein Cross-Tenant-Zugriff auf Drittsystem-Credentials)
33
ENG-08
Ressourcenlimits & Rate-Limiting für Drittsystem-Sync-Jobs
ENG-03 verwaltet periodische Sync-Jobs, ENG-05 behandelt Fehler bei Drittsystem-Ausfällen mit Retry/Backoff, ohne Obergrenzen für Laufzeit oder Datenmenge je Sync-Lauf festzulegen. Ein fehlerhaft konfigurierter oder kompromittierter Connector (z. B. ein Drittsystem, das ungewöhnlich große Antworten liefert oder in einer Retry-Schleife hängen bleibt) kann sonst Ressourcen auf Kosten anderer Mandanten/Connectoren binden. Harte Obergrenzen je Sync-Lauf definieren (max. Laufzeit, max. übertragene Datenmenge, max. Anzahl Retry-Versuche als Abbruchgrenze aus ENG-05) sowie Rate-Limiting für ausgehende Anfragen an ein einzelnes Drittsystem.
ENG-03 ENG-05
Jeder Sync-Job hat konfigurierbare Obergrenzen für Laufzeit und übertragene Datenmenge
Die Abbruchgrenze für Retry-Versuche aus ENG-05 wird durchgesetzt, ein Job endet nach Erreichen der Grenze kontrolliert statt endlos zu wiederholen
Ausgehende Anfragen an ein einzelnes Drittsystem sind ratenbegrenzt, sodass ein einzelner Connector nicht das gesamte Sync-System für andere Connectoren/Mandanten blockiert
Test: Sync-Job, der die Laufzeit-/Datenmengenobergrenze überschreitet, wird kontrolliert abgebrochen
Test: Retry-Abbruchgrenze aus ENG-05 wird nach der konfigurierten Anzahl Versuche tatsächlich durchgesetzt
Lasttest: ein Connector mit Drittsystem-Fehlverhalten blockiert nicht die Sync-Jobs anderer Connectoren/Mandanten
34
ENG-10
Modul-weiter Kill-Switch und Ausfallisolation für Connect
🔌 Connector-Engine & Grundgerüst
Backend
Mittel
2
8
Fertig
Kill-Switch per Umgebungsvariable; Totalausfall ohne Auswirkung auf andere Module; Einzel-Connector-Ausfall blockiert nicht den Rest
Kill-Switch-Test; Smoke-Test anderer Module nach hartem Prozess-Kill; Ausfall-Connector-Test
35
SEC-01
Echte Authentifizierung und verifizierter Tenant-Kontext für Connect-APIs
🔒 Sicherheit
Backend
Hoch
3
8
Backlog
JWT-Verifikation (Core-Token), Go net/http Middleware, RBAC-Policy-Prüfung gegen Core
Security-Review-Finding K1 (kritisch): Connect-APIs prüfen nur `X-User-Id != ""`, Tenant kommt unverifiziert aus `X-Tenant-Slug`. `statusapi.WithPolicy()` existiert, wird aber nicht verdrahtet. Fundstellen: `statusapi.go:57-70`, `dms2importapi.go:41-54`, `datevapi.go:30-43`, `main.go:48-49`. Echte AuthN analog DMS-Vorbild (`moduleauth/middleware.go:72`) einführen.
Jeder Connect-API-Aufruf verlangt ein gültiges, kryptografisch verifiziertes Core-Token; ein Request ohne gültiges Token wird mit 401 abgewiesen
Tenant- und User-Kontext werden ausschließlich aus dem verifizierten Token abgeleitet; X-User-Id/X-Tenant-Slug haben keinen Einfluss mehr, wenn sie vom Tokeninhalt abweichen
statusapi.WithPolicy() ist vor jeder Fach-API verdrahtet; unzureichende RBAC-Berechtigung führt zu 403
Angriff mit gefälschtem X-Tenant-Slug-Header auf fremde Mandantendaten ist nach der Umstellung nachweislich blockiert
Angriff real nachstellen: curl mit gefälschtem X-Tenant-Slug liefert vor dem Fix fremde Mandantendaten über /connectors/status
Gleicher Angriff gegen POST /dms2/import/execute legt vor dem Fix Import-Lauf im Namen des fremden Mandanten an
Nach dem Fix: gleicher Request ohne gültiges Token bzw. mit gefälschtem Slug wird mit 401/403 abgewiesen
Regressionstest: legitimer Request mit gültigem Token funktioniert unverändert
Test: RBAC-Policy-Verweigerung löst 403 aus
36
SEC-02
Entpack-Limit gegen Zip-Bomben im DMS2-Import
🔒 Sicherheit
Backend
Mittel
1
8
Backlog
Go archive/zip, Streaming-Lese-Limits
Security-Review-Finding H12 (hoch): `io.ReadAll(rc)` ohne Limit in `readZipEntry` (`dms2import/parse.go:219-225`) und analog in `dmsexchange.go:1966-1973`. Das 200-MiB-Limit in `dms2importapi.go:26` gilt nur für die komprimierte Größe, `UncompressedSize64` wird nie geprüft (Zip-Bomb-Risiko).
readZipEntry prüft UncompressedSize64 je Eintrag und kumulativ gegen feste Obergrenzen
Gleiches Limit gilt im analogen Entpack-Muster in dmsexchange.go
Überschreitung bricht den Import mit klarer Fehlermeldung ab statt abzustürzen
Limits greifen streaming während des Lesens, nicht erst nach vollständigem Entpacken
Angriff real nachstellen: Test-Zip (~10 MiB komprimiert) entpackt vor dem Fix unbegrenzt auf mehrere GiB
Nach dem Fix: gleicher Testfall bricht vor übermäßigem Speicherverbrauch mit Fehlermeldung ab
Regressionstest: normales Import-Zip innerhalb der Limits wird weiterhin korrekt eingelesen
Grenzfalltest: Zip knapp unter/über dem Limit liefert erwartetes Verhalten
37
SEC-03
Append-only-Schutz für Connect-Protokolltabellen
🔒 Sicherheit
Backend
Mittel
2
8
Backlog
PostgreSQL REVOKE/GRANT, Trigger-Funktion
Security-Review-Finding H15 (hoch): keine der 12 Migrationen unter `connect/migrations/` erzwingt Append-only auf Protokolltabellen (`datev_exports`, `dms2_import_runs`, `connect_audit_outbox`); Code macht UPDATE/DELETE (`syncjob.go:258`, `audittrail.go:1120`, `credential.go:793`). Etabliertes Muster aus Core AUD-07/DMS VER-08/Workflow ENG-07 übernehmen.
REVOKE UPDATE/DELETE von der Anwendungsrolle auf datev_exports, dms2_import_runs, connect_audit_outbox
Trigger weist versuchten UPDATE/DELETE ab und protokolliert den Versuch
INSERT funktioniert unverändert, inkl. Sequence-GRANT bei BIGSERIAL
Betroffene Codepfade (syncjob.go, audittrail.go, credential.go) funktionieren ohne Schreibversuch auf geschützte Felder
Vor der Migration: direktes UPDATE/DELETE mit Anwendungsrolle gelingt nachweislich
Nach der Migration: gleicher Versuch wird abgewiesen, Trigger protokolliert die Warnung
Regressionstest: INSERT in alle drei Tabellen funktioniert unverändert inkl. Sequence-Vergabe
Regressionstest: angepasste Codepfade (syncjob, audittrail, credential) funktionieren fachlich weiterhin korrekt
38
SEC-04
Fremdsystem-Antwortkörper vor Speicherung in last_error filtern
🔒 Sicherheit
Backend
Niedrig
1
8
Backlog
Go, Muster-/Regex-Filterung
Security-Review-Finding M16 (mittel): bis zu 1 MiB Fremdsystem-Antwortkörper ungefiltert in `last_error`, lesbar über `statusapi.go:102`. Fundstellen: `datevtransfer.go:676-682`, `m365connector.go:112`, `backupconnector.go:101,139`. Kann Secrets enthalten (z. B. AWS StringToSign/AccessKeyID).
Fremdsystem-Antwortkörper wird vor Speicherung in last_error auf sicherheitsrelevante Muster geprüft und diese werden entfernt/redigiert
Nur diagnostisch relevante Kurzfassung wird persistiert, keine vollständige Rohantwort
Kurzfassung bleibt für Fehlerdiagnose über die Status-API nachvollziehbar
Vor dem Fix: simulierter Fehlerfall mit AWS-artiger Antwort landet ungefiltert in last_error und ist über Status-API lesbar
Nach dem Fix: sicherheitsrelevante Angaben sind in der Kurzfassung nicht mehr enthalten
Regressionstest: normaler Fehlerfall liefert weiterhin diagnostisch brauchbare Kurzfassung
Test für alle drei Fundstellen einzeln (DATEV-Transfer, M365, Backup-Connector)
39
SEC-05
Tenant-Bindung der Connect-Store-Methoden (IDOR-Härtung)
🔒 Sicherheit
Backend
Mittel
2
8
Backlog
Go, pgx/v5, PostgreSQL, Signaturänderung
Security-Review-Finding M17 (mittel): tenant-ungebundene Store-Methoden mit `WHERE id=$1` ohne Tenant-Filter, latentes IDOR-Risiko. Fundstellen: `syncjob.go:109-122,191-269`, `datevtransfer/store.go:935-1001`, `erpexport/store.go:1424-1490`.
Betroffene Store-Methoden nehmen Tenant-Parameter als zwingenden Bestandteil der Signatur entgegen
WHERE-Klausel ist um AND tenant_slug=$2 ergänzt
Alle Aufrufer sind angepasst, Projekt compiliert fehlerfrei
Zugriff mit id eines fremden Mandanten liefert kein Ergebnis
Vor dem Fix: Store-Methode mit id von Mandant A und Tenant-Kontext von Mandant B liefert fremden Datensatz
Nach dem Fix: gleicher Aufruf liefert kein Ergebnis bei nicht passendem tenant_slug
Regressionstest: Aufruf mit korrekt zueinander passendem id/tenant_slug liefert erwarteten Datensatz, für alle drei Stores
Build-Test: Projekt compiliert fehlerfrei, kein Aufrufer ohne Tenant-Parameter
Du bist erfahrene Entwicklerin im Bereich Frontend und baust NEXARCH Connect (Modul für externe Systemanbindungen: ERP/CRM, DATEV, Microsoft 365, Interoperabilität mit anderen DMS-Systemen und externe Backup-Ziele), das vollständig auf der REST-API-Infrastruktur, dem Rate-Limiting, der Webhook-Zustellung, der Token-Verwaltung und dem Audit-Log von NEXARCH Core aufbaut, statt eigene Infrastruktur dafür zu bauen.
Go-Backend (net/http, pgx/v5, PostgreSQL, kein ORM), bcrypt, Postgres-Jobqueue statt Redis, Next.js/React/TypeScript-Frontend, natives systemd-Deployment. Multi-Tenancy Modell A.
Oberfläche und Bedienbarkeit. Keine Geschäftslogik, die serverseitig gehört.
## Auftrag
Oberfläche zum Einrichten und Konfigurieren von Connectoren: Verbindung anlegen, Zugangsdaten hinterlegen, Feld-Mapping bearbeiten.
> Eine schlanke Konfigurationsoberfläche für Connectoren wie bei Zapier/n8n, kein visueller Workflow-Builder.
**Übernehmen:**
- Zapier/n8n: übersichtliche Verbindungs-Einrichtung und Statusanzeige je Connector, ohne grafischen Workflow-Builder.
- Airbyte: klare Diagnoseansicht bei fehlgeschlagenen Sync-Läufen.
**Bewusst vermeiden:**
- Kein eigener Workflow-Builder – die Oberfläche konfiguriert Connectoren, sie modelliert keine Prozesse.
- Keine eigene Webhook-Infrastruktur – die Oberfläche nutzt ausschließlich die zentrale Core-Webhook-Registry (API-07).
**Für genau diese Kachel:** Oberfläche zum Einrichten und Konfigurieren von Connectoren: Verbindung anlegen, Zugangsdaten hinterlegen, Feld-Mapping bearbeiten.
## Ausgangslage
Die folgenden Arbeitspakete sind bereits fertiggestellt und dürfen vorausgesetzt werden. Baue auf ihnen auf, statt Funktionalität zu duplizieren:
-`ENG-02` Verbindungs-Credential-Verwaltung (OAuth/API-Keys, verschlüsselt) – Verwaltung von Zugangsdaten für Drittsysteme (OAuth-Tokens, API-Keys), verschlüsselt gespeichert und je Connector-Instanz zugeordnet.
-`ENG-04` Feld-Mapping-Konfiguration (NEXARCH ↔ Drittsystem) – Konfigurierbares Feld-Mapping zwischen NEXARCH-Datenmodell und Drittsystem-Feldern je Connector-Instanz.
- Core `SHL-01` UI-Shell & Design-System (zentral) – zentrales Design-System mit WCAG-AA, i18n-Rahmen und Theming; Modul-Oberflächen erben diese Eigenschaften strukturell statt sie einzeln zu bauen.
## Akzeptanzkriterien
Die Kachel gilt erst als umgesetzt, wenn alle Punkte erfüllt sind:
1. Connector lässt sich vollständig über die Oberfläche einrichten, ohne Konfigurationsdatei
2. Zugangsdaten werden nur maskiert angezeigt, nie im Klartext
3. Feld-Mapping ist über die Oberfläche bearbeitbar
## Prüfungen vor der Abnahme
Führe jede Prüfung tatsächlich durch und halte das Ergebnis schriftlich fest. Nicht durchgeführte Prüfungen zählen als offen:
1. Vollständige Einrichtung eines Testconnectors über die Oberfläche erfolgreich
2. Zugangsdaten in der Oberfläche im Test nachweislich maskiert
3. Mapping-Änderung über die Oberfläche im Test korrekt übernommen
## Nicht Bestandteil dieser Kachel
Diese Punkte gehören ausdrücklich in andere Kacheln. Bereite höchstens die Schnittstelle dafür vor:
-`API-02` Verbindungsstatus-Übersicht & Diagnose
## Arbeitsweise
1. Lies zuerst den bestehenden Code der Vorbedingungen und halte dich an die dort etablierten Muster.
2. Setze die kleinste Lösung um, die alle Akzeptanzkriterien erfüllt. Kein Umbau angrenzender Bereiche.
3. Schreibe zu jedem Akzeptanzkriterium mindestens einen automatisierten Test.
4. Führe alle Prüfungen aus und dokumentiere Zielwert und Ergebnis.
5. Deutschsprachige Oberflächentexte, englischsprachige Bezeichner im Code.
6. Keine Zugangsdaten, Schlüssel oder Verbindungszeichenfolgen im Code – ausschließlich über Umgebungsvariablen.
Du bist erfahrene Entwicklerin im Bereich Frontend und baust NEXARCH Connect (Modul für externe Systemanbindungen: ERP/CRM, DATEV, Microsoft 365, Interoperabilität mit anderen DMS-Systemen und externe Backup-Ziele), das vollständig auf der REST-API-Infrastruktur, dem Rate-Limiting, der Webhook-Zustellung, der Token-Verwaltung und dem Audit-Log von NEXARCH Core aufbaut, statt eigene Infrastruktur dafür zu bauen.
Go-Backend (net/http, pgx/v5, PostgreSQL, kein ORM), bcrypt, Postgres-Jobqueue statt Redis, Next.js/React/TypeScript-Frontend, natives systemd-Deployment. Multi-Tenancy Modell A.
Oberfläche und Bedienbarkeit. Keine Geschäftslogik, die serverseitig gehört.
## Auftrag
Übersicht über alle eingerichteten Verbindungen mit Status, letztem Sync-Lauf und Diagnoseinformationen bei Fehlern.
> Eine schlanke Konfigurationsoberfläche für Connectoren wie bei Zapier/n8n, kein visueller Workflow-Builder.
**Übernehmen:**
- Zapier/n8n: übersichtliche Verbindungs-Einrichtung und Statusanzeige je Connector, ohne grafischen Workflow-Builder.
- Airbyte: klare Diagnoseansicht bei fehlgeschlagenen Sync-Läufen.
**Bewusst vermeiden:**
- Kein eigener Workflow-Builder – die Oberfläche konfiguriert Connectoren, sie modelliert keine Prozesse.
- Keine eigene Webhook-Infrastruktur – die Oberfläche nutzt ausschließlich die zentrale Core-Webhook-Registry (API-07).
**Für genau diese Kachel:** Übersicht über alle eingerichteten Verbindungen mit Status, letztem Sync-Lauf und Diagnoseinformationen bei Fehlern.
## Ausgangslage
Die folgenden Arbeitspakete sind bereits fertiggestellt und dürfen vorausgesetzt werden. Baue auf ihnen auf, statt Funktionalität zu duplizieren:
-`ENG-05` Fehlerbehandlung & Retry bei Drittsystem-Ausfällen – Fehlerbehandlung für Sync-Jobs bei Drittsystem-Ausfällen: Retry mit Backoff, Fehlerprotokoll, Abbruchgrenze.
- Core `SHL-01` UI-Shell & Design-System (zentral) – zentrales Design-System mit WCAG-AA, i18n-Rahmen und Theming; Modul-Oberflächen erben diese Eigenschaften strukturell statt sie einzeln zu bauen.
## Akzeptanzkriterien
Die Kachel gilt erst als umgesetzt, wenn alle Punkte erfüllt sind:
1. Verbindungsstatus je Connector ist auf einen Blick erkennbar
2. Letzter Sync-Lauf mit Ergebnis ist einsehbar
3. Fehlerdiagnose zeigt die Ursache aus dem Fehlerprotokoll
## Prüfungen vor der Abnahme
Führe jede Prüfung tatsächlich durch und halte das Ergebnis schriftlich fest. Nicht durchgeführte Prüfungen zählen als offen:
1. Statusanzeige im Test korrekt für erfolgreichen und fehlgeschlagenen Lauf
2. Diagnoseansicht zeigt reale Testfehler nachvollziehbar an
3. Aktualisierung nach neuem Sync-Lauf im Test korrekt
## Nicht Bestandteil dieser Kachel
Diese Punkte gehören ausdrücklich in andere Kacheln. Bereite höchstens die Schnittstelle dafür vor:
-`QA-02` Prüfgate Connector-Engine
## Arbeitsweise
1. Lies zuerst den bestehenden Code der Vorbedingungen und halte dich an die dort etablierten Muster.
2. Setze die kleinste Lösung um, die alle Akzeptanzkriterien erfüllt. Kein Umbau angrenzender Bereiche.
3. Schreibe zu jedem Akzeptanzkriterium mindestens einen automatisierten Test.
4. Führe alle Prüfungen aus und dokumentiere Zielwert und Ergebnis.
5. Deutschsprachige Oberflächentexte, englischsprachige Bezeichner im Code.
6. Keine Zugangsdaten, Schlüssel oder Verbindungszeichenfolgen im Code – ausschließlich über Umgebungsvariablen.
Du bist erfahrene Entwicklerin im Bereich Backend und baust NEXARCH Connect (Modul für externe Systemanbindungen: ERP/CRM, DATEV, Microsoft 365, Interoperabilität mit anderen DMS-Systemen und externe Backup-Ziele), das vollständig auf der REST-API-Infrastruktur, dem Rate-Limiting, der Webhook-Zustellung, der Token-Verwaltung und dem Audit-Log von NEXARCH Core aufbaut, statt eigene Infrastruktur dafür zu bauen.
Go-Backend (net/http, pgx/v5, PostgreSQL, kein ORM), bcrypt, Postgres-Jobqueue statt Redis, Next.js/React/TypeScript-Frontend, natives systemd-Deployment. Multi-Tenancy Modell A.
Serverseitige Logik, Datenzugriff und Schnittstelle. Keine Geschäftslogik in der Oberfläche.
## Auftrag
Abonnieren externer Systemereignisse über Webhooks, die die zentrale Core-Webhook-Registry zustellt – Connect registriert lediglich Abonnements, betreibt keine eigene Zustellung.
> Eine schlanke Konfigurationsoberfläche für Connectoren wie bei Zapier/n8n, kein visueller Workflow-Builder.
**Übernehmen:**
- Zapier/n8n: übersichtliche Verbindungs-Einrichtung und Statusanzeige je Connector, ohne grafischen Workflow-Builder.
- Airbyte: klare Diagnoseansicht bei fehlgeschlagenen Sync-Läufen.
**Bewusst vermeiden:**
- Kein eigener Workflow-Builder – die Oberfläche konfiguriert Connectoren, sie modelliert keine Prozesse.
- Keine eigene Webhook-Infrastruktur – die Oberfläche nutzt ausschließlich die zentrale Core-Webhook-Registry (API-07).
**Für genau diese Kachel:** Abonnieren externer Systemereignisse über Webhooks, die die zentrale Core-Webhook-Registry zustellt – Connect registriert lediglich Abonnements, betreibt keine eigene Zustellung.
## Ausgangslage
Die folgenden Arbeitspakete sind bereits fertiggestellt und dürfen vorausgesetzt werden. Baue auf ihnen auf, statt Funktionalität zu duplizieren:
-`ENG-01` Connector-Plugin-Modell – Plugin-Schnittstelle, über die einzelne Drittsystem-Connectoren (ERP, CRM, DATEV, M365, andere DMS, Backup-Ziele) registriert werden, ohne dass die Engine connectorspezifisches Wissen braucht.
## Akzeptanzkriterien
Die Kachel gilt erst als umgesetzt, wenn alle Punkte erfüllt sind:
1. Connector kann ein Webhook-Ereignis über die Core-Webhook-Registry abonnieren
2. Zugestelltes Ereignis löst die zugeordnete Connector-Aktion aus
3. Abbestellen entfernt das Abonnement vollständig
## Prüfungen vor der Abnahme
Führe jede Prüfung tatsächlich durch und halte das Ergebnis schriftlich fest. Nicht durchgeführte Prüfungen zählen als offen:
1. Testabonnement über Core-Webhook-Registry im Test erfolgreich registriert
2. Testereignis löst im Test die erwartete Connector-Aktion aus
3. Abbestellung im Test vollständig entfernt
## Nicht Bestandteil dieser Kachel
Diese Punkte gehören ausdrücklich in andere Kacheln. Bereite höchstens die Schnittstelle dafür vor:
-`QA-02` Prüfgate Connector-Engine
## Arbeitsweise
1. Lies zuerst den bestehenden Code der Vorbedingungen und halte dich an die dort etablierten Muster.
2. Setze die kleinste Lösung um, die alle Akzeptanzkriterien erfüllt. Kein Umbau angrenzender Bereiche.
3. Schreibe zu jedem Akzeptanzkriterium mindestens einen automatisierten Test.
4. Führe alle Prüfungen aus und dokumentiere Zielwert und Ergebnis.
5. Deutschsprachige Oberflächentexte, englischsprachige Bezeichner im Code.
6. Keine Zugangsdaten, Schlüssel oder Verbindungszeichenfolgen im Code – ausschließlich über Umgebungsvariablen.
Du bist erfahrene Entwicklerin im Bereich Backend und baust NEXARCH Connect (Modul für externe Systemanbindungen: ERP/CRM, DATEV, Microsoft 365, Interoperabilität mit anderen DMS-Systemen und externe Backup-Ziele), das vollständig auf der REST-API-Infrastruktur, dem Rate-Limiting, der Webhook-Zustellung, der Token-Verwaltung und dem Audit-Log von NEXARCH Core aufbaut, statt eigene Infrastruktur dafür zu bauen.
Go-Backend (net/http, pgx/v5, PostgreSQL, kein ORM), bcrypt, Postgres-Jobqueue statt Redis, Next.js/React/TypeScript-Frontend, natives systemd-Deployment. Multi-Tenancy Modell A.
Serverseitige Logik, Datenzugriff und Schnittstelle. Keine Geschäftslogik in der Oberfläche.
## Auftrag
Export von Belegen und Buchungsstapeln im DATEV-Format aus NEXARCH-Dokumenten und -Metadaten.
> DATEV-Export so verlässlich wie ein Airbyte-Sync-Job, mit offen dokumentiertem Format statt Blackbox-Konnektor.
**Übernehmen:**
- Airbyte: Retry und Fehlerbehandlung bei Exportläufen, damit ein fehlgeschlagener Export nicht stillschweigend verloren geht.
- Vollständiges Exportprotokoll je Lauf, damit jeder DATEV-Export nachvollziehbar bleibt.
**Bewusst vermeiden:**
- Kein Vendor-Lock durch proprietäres DATEV-Werkzeug – das Exportformat bleibt offen dokumentiert und ohne Herstellerwerkzeug nachvollziehbar.
- Keine stille Fehlklassifizierung von Belegen – Abweichungen werden im Protokoll sichtbar.
**Für genau diese Kachel:** Export von Belegen und Buchungsstapeln im DATEV-Format aus NEXARCH-Dokumenten und -Metadaten.
## Ausgangslage
Die folgenden Arbeitspakete sind bereits fertiggestellt und dürfen vorausgesetzt werden. Baue auf ihnen auf, statt Funktionalität zu duplizieren:
-`ENG-01` Connector-Plugin-Modell – Plugin-Schnittstelle, über die einzelne Drittsystem-Connectoren (ERP, CRM, DATEV, M365, andere DMS, Backup-Ziele) registriert werden, ohne dass die Engine connectorspezifisches Wissen braucht.
- Setzt voraus (externes Archive-Board, siehe /home/sysops/Dokumente/Scripte/nexarch/archive-kanban/): `RET-05` Modul-Adapter-Schnittstelle – exportierte GoBD-relevante Buchungsstapel werden hier mit Aufbewahrungsklasse registriert, statt unregistriert im Dateisystem zu liegen.
## Akzeptanzkriterien
Die Kachel gilt erst als umgesetzt, wenn alle Punkte erfüllt sind:
1. Export erzeugt gültige DATEV-Exportdatei aus Testbelegen
2. Pflichtfelder des DATEV-Formats werden vollständig befüllt oder der Export klar abgewiesen
3. Exportierter Buchungsstapel ist eindeutig einem Zeitraum zugeordnet
4. Exportiertes Objekt (Buchungsstapel) wird bei Archive RET-05 mit der GoBD-Aufbewahrungsklasse registriert, statt unregistriert im Dateisystem zu liegen
## Prüfungen vor der Abnahme
Führe jede Prüfung tatsächlich durch und halte das Ergebnis schriftlich fest. Nicht durchgeführte Prüfungen zählen als offen:
1. Erzeugte Exportdatei besteht Formatprüfung gegen DATEV-Spezifikation
2. Fehlendes Pflichtfeld führt zu klarer Abweisung statt fehlerhaftem Export
3. Zeitraumzuordnung im Test korrekt
4. Export eines Testbuchungsstapels erzeugt nachweisbar eine Registrierung bei Archive RET-05
## Nicht Bestandteil dieser Kachel
Diese Punkte gehören ausdrücklich in andere Kacheln. Bereite höchstens die Schnittstelle dafür vor:
Du bist erfahrene Entwicklerin im Bereich Backend und baust NEXARCH Connect (Modul für externe Systemanbindungen: ERP/CRM, DATEV, Microsoft 365, Interoperabilität mit anderen DMS-Systemen und externe Backup-Ziele), das vollständig auf der REST-API-Infrastruktur, dem Rate-Limiting, der Webhook-Zustellung, der Token-Verwaltung und dem Audit-Log von NEXARCH Core aufbaut, statt eigene Infrastruktur dafür zu bauen.
Go-Backend (net/http, pgx/v5, PostgreSQL, kein ORM), bcrypt, Postgres-Jobqueue statt Redis, Next.js/React/TypeScript-Frontend, natives systemd-Deployment. Multi-Tenancy Modell A.
Serverseitige Logik, Datenzugriff und Schnittstelle. Keine Geschäftslogik in der Oberfläche.
## Auftrag
Konnektor, der den Export im DATEV-Format über das offizielle Schnittstellenprotokoll an DATEV-Systeme überträgt.
Du bist erfahrene Entwicklerin im Bereich Frontend und baust NEXARCH Connect (Modul für externe Systemanbindungen: ERP/CRM, DATEV, Microsoft 365, Interoperabilität mit anderen DMS-Systemen und externe Backup-Ziele), das vollständig auf der REST-API-Infrastruktur, dem Rate-Limiting, der Webhook-Zustellung, der Token-Verwaltung und dem Audit-Log von NEXARCH Core aufbaut, statt eigene Infrastruktur dafür zu bauen.
Go-Backend (net/http, pgx/v5, PostgreSQL, kein ORM), bcrypt, Postgres-Jobqueue statt Redis, Next.js/React/TypeScript-Frontend, natives systemd-Deployment. Multi-Tenancy Modell A.
Oberfläche und Bedienbarkeit. Keine Geschäftslogik, die serverseitig gehört.
## Auftrag
Oberfläche zum Anstoßen von DATEV-Exporten sowie Einsicht in Exportprotokolle und Übertragungsstatus.
> DATEV-Export so verlässlich wie ein Airbyte-Sync-Job, mit offen dokumentiertem Format statt Blackbox-Konnektor.
**Übernehmen:**
- Airbyte: Retry und Fehlerbehandlung bei Exportläufen, damit ein fehlgeschlagener Export nicht stillschweigend verloren geht.
- Vollständiges Exportprotokoll je Lauf, damit jeder DATEV-Export nachvollziehbar bleibt.
**Bewusst vermeiden:**
- Kein Vendor-Lock durch proprietäres DATEV-Werkzeug – das Exportformat bleibt offen dokumentiert und ohne Herstellerwerkzeug nachvollziehbar.
- Keine stille Fehlklassifizierung von Belegen – Abweichungen werden im Protokoll sichtbar.
**Für genau diese Kachel:** Oberfläche zum Anstoßen von DATEV-Exporten sowie Einsicht in Exportprotokolle und Übertragungsstatus.
## Ausgangslage
Die folgenden Arbeitspakete sind bereits fertiggestellt und dürfen vorausgesetzt werden. Baue auf ihnen auf, statt Funktionalität zu duplizieren:
-`DAT-01` DATEV-Format-Export (Belege/Buchungsstapel) – Export von Belegen und Buchungsstapeln im DATEV-Format aus NEXARCH-Dokumenten und -Metadaten.
-`DAT-02` DATEV-Konnektor (Schnittstellen-Protokoll) – Konnektor, der den Export im DATEV-Format über das offizielle Schnittstellenprotokoll an DATEV-Systeme überträgt.
- Core `SHL-01` UI-Shell & Design-System (zentral) – zentrales Design-System mit WCAG-AA, i18n-Rahmen und Theming; Modul-Oberflächen erben diese Eigenschaften strukturell statt sie einzeln zu bauen.
## Akzeptanzkriterien
Die Kachel gilt erst als umgesetzt, wenn alle Punkte erfüllt sind:
1. Export lässt sich über die Oberfläche mit Zeitraum-Auswahl anstoßen
2. Exportprotokoll ist je Lauf einsehbar
3. Fehlgeschlagener Export ist in der Oberfläche klar erkennbar
## Prüfungen vor der Abnahme
Führe jede Prüfung tatsächlich durch und halte das Ergebnis schriftlich fest. Nicht durchgeführte Prüfungen zählen als offen:
1. Export-Anstoß im Test aus der Oberfläche erfolgreich
2. Protokollansicht zeigt reale Testläufe korrekt an
3. Fehlgeschlagener Testlauf ist visuell klar unterscheidbar
## Nicht Bestandteil dieser Kachel
Diese Punkte gehören ausdrücklich in andere Kacheln. Bereite höchstens die Schnittstelle dafür vor:
-`QA-03` Prüfgate ERP/DATEV/M365
## Arbeitsweise
1. Lies zuerst den bestehenden Code der Vorbedingungen und halte dich an die dort etablierten Muster.
2. Setze die kleinste Lösung um, die alle Akzeptanzkriterien erfüllt. Kein Umbau angrenzender Bereiche.
3. Schreibe zu jedem Akzeptanzkriterium mindestens einen automatisierten Test.
4. Führe alle Prüfungen aus und dokumentiere Zielwert und Ergebnis.
5. Deutschsprachige Oberflächentexte, englischsprachige Bezeichner im Code.
6. Keine Zugangsdaten, Schlüssel oder Verbindungszeichenfolgen im Code – ausschließlich über Umgebungsvariablen.
Du bist erfahrene Entwicklerin im Bereich Backend und baust NEXARCH Connect (Modul für externe Systemanbindungen: ERP/CRM, DATEV, Microsoft 365, Interoperabilität mit anderen DMS-Systemen und externe Backup-Ziele), das vollständig auf der REST-API-Infrastruktur, dem Rate-Limiting, der Webhook-Zustellung, der Token-Verwaltung und dem Audit-Log von NEXARCH Core aufbaut, statt eigene Infrastruktur dafür zu bauen.
Go-Backend (net/http, pgx/v5, PostgreSQL, kein ORM), bcrypt, Postgres-Jobqueue statt Redis, Next.js/React/TypeScript-Frontend, natives systemd-Deployment. Multi-Tenancy Modell A.
Serverseitige Logik, Datenzugriff und Schnittstelle. Keine Geschäftslogik in der Oberfläche.
## Auftrag
Offen dokumentiertes Export-/Import-Format für Dokumente und Metadaten zur Interoperabilität mit anderen DMS-Systemen.
> Offener Austausch mit anderen DMS-Systemen wie bei einem dokumentierten Airbyte-Konnektor, kein geschlossenes Migrationswerkzeug.
**Übernehmen:**
- Airbyte: offen dokumentiertes Austauschformat als Vorbild für Export/Import zwischen DMS-Systemen.
- Zapier/n8n: der Import-Assistent bleibt ein austauschbarer Adapter, kein Einwegwerkzeug.
**Bewusst vermeiden:**
- Kein proprietäres, geschlossenes Migrationsformat – offen dokumentiert und ohne Herstellerwerkzeug lesbar.
- Keine Backup-Ziel-Anbindung mit Herstellerbindung – Zugangsdaten und Protokoll bleiben austauschbar.
**Für genau diese Kachel:** Offen dokumentiertes Export-/Import-Format für Dokumente und Metadaten zur Interoperabilität mit anderen DMS-Systemen.
## Ausgangslage
Die folgenden Arbeitspakete sind bereits fertiggestellt und dürfen vorausgesetzt werden. Baue auf ihnen auf, statt Funktionalität zu duplizieren:
-`ENG-01` Connector-Plugin-Modell – Plugin-Schnittstelle, über die einzelne Drittsystem-Connectoren (ERP, CRM, DATEV, M365, andere DMS, Backup-Ziele) registriert werden, ohne dass die Engine connectorspezifisches Wissen braucht.
## Akzeptanzkriterien
Die Kachel gilt erst als umgesetzt, wenn alle Punkte erfüllt sind:
1. Format ist vollständig dokumentiert und ohne NEXARCH-Werkzeug lesbar
2. Export enthält Dokument, Metadaten und Versionsbezug
3. Format-Validierung weist fehlerhafte Dateien ab
## Prüfungen vor der Abnahme
Führe jede Prüfung tatsächlich durch und halte das Ergebnis schriftlich fest. Nicht durchgeführte Prüfungen zählen als offen:
1. Exportierte Testdatei extern ohne NEXARCH-Werkzeug lesbar geprüft
2. Enthaltene Metadaten im Test vollständig und korrekt
3. Fehlerhafte Testdatei wird bei Validierung abgewiesen
## Nicht Bestandteil dieser Kachel
Diese Punkte gehören ausdrücklich in andere Kacheln. Bereite höchstens die Schnittstelle dafür vor:
-`DMS2-02` Import-Assistent für Drittsystem-Exporte
## Arbeitsweise
1. Lies zuerst den bestehenden Code der Vorbedingungen und halte dich an die dort etablierten Muster.
2. Setze die kleinste Lösung um, die alle Akzeptanzkriterien erfüllt. Kein Umbau angrenzender Bereiche.
3. Schreibe zu jedem Akzeptanzkriterium mindestens einen automatisierten Test.
4. Führe alle Prüfungen aus und dokumentiere Zielwert und Ergebnis.
5. Deutschsprachige Oberflächentexte, englischsprachige Bezeichner im Code.
6. Keine Zugangsdaten, Schlüssel oder Verbindungszeichenfolgen im Code – ausschließlich über Umgebungsvariablen.
## Abschluss
- Commit-Nachricht: `DMS2-01: 01 standardisiertes export import format offen dokumentiert`
Du bist erfahrene Entwicklerin im Bereich Backend und baust NEXARCH Connect (Modul für externe Systemanbindungen: ERP/CRM, DATEV, Microsoft 365, Interoperabilität mit anderen DMS-Systemen und externe Backup-Ziele), das vollständig auf der REST-API-Infrastruktur, dem Rate-Limiting, der Webhook-Zustellung, der Token-Verwaltung und dem Audit-Log von NEXARCH Core aufbaut, statt eigene Infrastruktur dafür zu bauen.
Go-Backend (net/http, pgx/v5, PostgreSQL, kein ORM), bcrypt, Postgres-Jobqueue statt Redis, Next.js/React/TypeScript-Frontend, natives systemd-Deployment. Multi-Tenancy Modell A.
Serverseitige Logik, Datenzugriff und Schnittstelle. Keine Geschäftslogik in der Oberfläche.
## Auftrag
Assistent, der Exporte aus gängigen Drittsystem-DMS einliest, Feld-Mapping vorschlägt und den Import durchführt.
**Technische Grundlage:** Import-Assistent mit Mapping-Vorschau-Oberfläche (Next.js/React), Backend-Parser für Drittsystem-Exportformate
## Produkt-DNA für diesen Bereich
> Offener Austausch mit anderen DMS-Systemen wie bei einem dokumentierten Airbyte-Konnektor, kein geschlossenes Migrationswerkzeug.
**Übernehmen:**
- Airbyte: offen dokumentiertes Austauschformat als Vorbild für Export/Import zwischen DMS-Systemen.
- Zapier/n8n: der Import-Assistent bleibt ein austauschbarer Adapter, kein Einwegwerkzeug.
**Bewusst vermeiden:**
- Kein proprietäres, geschlossenes Migrationsformat – offen dokumentiert und ohne Herstellerwerkzeug lesbar.
- Keine Backup-Ziel-Anbindung mit Herstellerbindung – Zugangsdaten und Protokoll bleiben austauschbar.
**Für genau diese Kachel:** Assistent, der Exporte aus gängigen Drittsystem-DMS einliest, Feld-Mapping vorschlägt und den Import durchführt.
## Ausgangslage
Die folgenden Arbeitspakete sind bereits fertiggestellt und dürfen vorausgesetzt werden. Baue auf ihnen auf, statt Funktionalität zu duplizieren:
-`DMS2-01` Standardisiertes Export-/Import-Format (offen, dokumentiert) – Offen dokumentiertes Export-/Import-Format für Dokumente und Metadaten zur Interoperabilität mit anderen DMS-Systemen.
- Core `SHL-01` UI-Shell & Design-System (zentral) – zentrales Design-System mit WCAG-AA, i18n-Rahmen und Theming; Modul-Oberflächen erben diese Eigenschaften strukturell statt sie einzeln zu bauen.
## Akzeptanzkriterien
Die Kachel gilt erst als umgesetzt, wenn alle Punkte erfüllt sind:
1. Testexport eines gängigen Drittsystems lässt sich einlesen
2. Feld-Mapping wird vorgeschlagen und ist vor Import änderbar
3. Import-Ergebnis mit Erfolgs-/Fehlerzahl ist einsehbar
4. Mapping-Vorschau ist eine bedienbare Oberfläche (nicht nur eine API-Antwort), in der Feldzuordnungen vor dem Import angepasst werden können
## Prüfungen vor der Abnahme
Führe jede Prüfung tatsächlich durch und halte das Ergebnis schriftlich fest. Nicht durchgeführte Prüfungen zählen als offen:
1. Testexport eines Drittsystems im Test erfolgreich eingelesen
2. Manuelle Mapping-Korrektur im Test übernommen
3. Import-Protokoll zeigt korrekte Erfolgs-/Fehlerzahl
4. Mapping-Vorschau im Browser bedient: Zuordnung geändert, Import mit geänderter Zuordnung ausgeführt
## Nicht Bestandteil dieser Kachel
Diese Punkte gehören ausdrücklich in andere Kacheln. Bereite höchstens die Schnittstelle dafür vor:
-`QA-02` Prüfgate Connector-Engine
## Arbeitsweise
1. Lies zuerst den bestehenden Code der Vorbedingungen und halte dich an die dort etablierten Muster.
2. Setze die kleinste Lösung um, die alle Akzeptanzkriterien erfüllt. Kein Umbau angrenzender Bereiche.
3. Schreibe zu jedem Akzeptanzkriterium mindestens einen automatisierten Test.
4. Führe alle Prüfungen aus und dokumentiere Zielwert und Ergebnis.
5. Deutschsprachige Oberflächentexte, englischsprachige Bezeichner im Code.
6. Keine Zugangsdaten, Schlüssel oder Verbindungszeichenfolgen im Code – ausschließlich über Umgebungsvariablen.
- Schrittweise committen, Branch pushen, dann anhalten. Kein Merge, kein Deploy.
- In der Beschreibung des Pull Request die durchgeführten Prüfungen mit Ergebnis auflisten.
Loaded 100 of 480 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.