Änderungen von Dokument Digitale Mitgliederverwaltung

Zuletzt geändert von Daniel Herrmann am 2026/02/22 21:17

Von Version Icon 55.1 Icon
bearbeitet von Daniel Herrmann
am 2025/10/24 14:49
Änderungskommentar: Es gibt keinen Kommentar für diese Version
Auf Version Icon 49.1 Icon
bearbeitet von Daniel Herrmann
am 2025/10/19 18:46
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

Details

Icon Seiteneigenschaften
Inhalt
... ... @@ -23,43 +23,50 @@
23 23  
24 24  Kurz gesagt: Die EES ist schnell und unkompliziert, aber unsicher und nur für risikofreie Vorgänge geeignet. Die FES ist technisch sicherer, rechtlich belastbarer und für wichtige, aber formfreie Vereinbarungen ideal. Die QES ist rechtlich vollwertig wie eine handschriftliche Unterschrift und für alle Schriftformerfordernisse zwingend notwendig. Zusammenfassung:
25 25  
26 -~|
26 +(% class="wrapped" style="text-decoration: none;" %)
27 +|=(((
28 +Signaturtyp
29 +)))|=(((
30 +Sicherheitsniveau
31 +)))|=(((
32 +Rechtliche Wirkung
33 +)))|=(((
34 +Umsetzung
35 +)))
36 +|(((
37 +**EES**
38 +)))|(((
39 +niedrig
40 +)))|(((
41 +schwacher Beweiswert
42 +)))|(((
43 +Eingescannte Unterschrift, ein einfacher Button
44 +)))
45 +|(((
46 +**FES**
47 +)))|(((
48 +mittel
49 +)))|(((
50 +starker Beweiswert, aber kein Ersatz der Schriftform
51 +)))|(((
52 +Adobe Sign, DocuSign oder ähnliches
53 +)))
54 +|(((
55 +**QES**
56 +)))|(((
57 +hoch
58 +)))|(((
59 +gesetzlich Schriftformersatz
60 +)))|(((
61 +Mehrfaktor, über einen zugelassenen Vertrauensdienstleister
62 +)))
27 27  
28 -Signaturtyp |
64 +\\
29 29  
30 -Sicherheitsniveau |
66 +{{confluence_tip title="Zusammenfassung"}}
67 +Für uns im Makerspace bedeutet das, dass wir die EES und FES (über DocuSeal) einsetzen können. Wir haben keine Partnerschaft mit einem Anbieter, der die QES und damit die Schriftformerfordernis abdecken würde, sodass wir alle Dokumente, für die die Schriftform erforderlich ist, weiterhin handschriftlich unterschreiben lassen.
68 +{{/confluence_tip}}
31 31  
32 -Rechtliche Wirkung |
33 -
34 -|=Umsetzung
35 -|
36 -
37 -**EES** |
38 -
39 -niedrig |
40 -
41 -schwacher Beweiswert |
42 -
43 -Eingescannte Unterschrift, ein einfacher Button | |
44 -
45 -**FES** |
46 -
47 -mittel |
48 -
49 -starker Beweiswert, aber kein Ersatz der Schriftform |
50 -
51 -Adobe Sign, DocuSign oder ähnliches | |
52 -
53 -**QES** |
54 -
55 -hoch |
56 -
57 -gesetzlich Schriftformersatz |
58 -
59 -Mehrfaktor, über einen zugelassenen Vertrauensdienstleister |
60 -
61 -~{~{confluence_tip title="Zusammenfassung"}} Für uns im Makerspace bedeutet das, dass wir die EES und FES (über DocuSeal) einsetzen können. Wir haben keine Partnerschaft mit einem Anbieter, der die QES und damit die Schriftformerfordernis abdecken würde, sodass wir alle Dokumente, für die die Schriftform erforderlich ist, weiterhin handschriftlich unterschreiben lassen. ~{~{/confluence_tip}}
62 -
63 63  = Dokumente und Workflow =
64 64  
65 65  == Dokumenten-Arten ==
... ... @@ -477,13 +477,13 @@
477 477  
478 478  === Paperless NGX ===
479 479  
480 -Paperless-NGX ist ein freies, quelloffenes Dokumentenmanagementsystem (DMS), das als aktiv gepflegter Community-Fork des eingestellten „paperless-ng“ entstanden ist. Die Software läuft unter Linux, ist in Python und TypeScript geschrieben, unter der GPL-3.0 lizenziert und wird üblicherweise containerisiert mit Docker betrieben. In unserem Fall wird sie vor Ort im Makerspace auf dem vorhandenen Kubernetes-Cluster betrieben.
487 +(% style="text-decoration: none;color:var(--ds-text,#333333);" %)Paperless-NGX ist ein freies, quelloffenes Dokumentenmanagementsystem (DMS), das als aktiv gepflegter Community-Fork des eingestellten „paperless-ng“ entstanden ist. Die Software läuft unter Linux, ist in Python und TypeScript geschrieben, unter der GPL-3.0 lizenziert und wird üblicherweise containerisiert mit Docker betrieben. In unserem Fall wird sie vor Ort im Makerspace auf dem vorhandenen Kubernetes-Cluster betrieben.
481 481  
482 -Sie dient dazu, Papierdokumente und digitale Dateien zentral zu erfassen, automatisch zu verarbeiten, strukturiert zu archivieren und komfortabel wiederzufinden. Die Dokumente können über verschiedene Wege ins System gelangen – etwa durch einen speziellen „consume“-Ordner, per E-Mail-Import oder via Drag-and-drop im Webinterface. Bei der Verarbeitung wird eine leistungsfähige Texterkennung (OCR) auf Basis von Tesseract eingesetzt, die über 100 Sprachen unterstützt und auch gescannte Dokumente durchsuchbar macht. Zusätzlich werden Metadaten wie Tags, Korrespondenten, Dokumenttypen oder benutzerdefinierte Felder erfasst; diese lassen sich automatisiert per Machine-Learning oder durch definierte Workflows zuweisen, die auch externe Aktionen wie E-Mails oder Webhooks auslösen können.
489 +(% style="text-decoration: none;color:var(--ds-text,#333333);" %) Sie dient dazu, Papierdokumente und digitale Dateien zentral zu erfassen, automatisch zu verarbeiten, strukturiert zu archivieren und komfortabel wiederzufinden. Die Dokumente können über verschiedene Wege ins System gelangen – etwa durch einen speziellen „consume“-Ordner, per E-Mail-Import oder via Drag-and-drop im Webinterface. Bei der Verarbeitung wird eine leistungsfähige Texterkennung (OCR) auf Basis von Tesseract eingesetzt, die über 100 Sprachen unterstützt und auch gescannte Dokumente durchsuchbar macht. Zusätzlich werden Metadaten wie Tags, Korrespondenten, Dokumenttypen oder benutzerdefinierte Felder erfasst; diese lassen sich automatisiert per Machine-Learning oder durch definierte Workflows zuweisen, die auch externe Aktionen wie E-Mails oder Webhooks auslösen können.
483 483  
484 -Die Speicherung erfolgt in einem standardisierten PDF/A-Format für die Langzeitarchivierung, wobei stets auch die Originaldateien erhalten bleiben. Metadaten werden in einer Datenbank (PostgreSQL) verwaltet, während die eigentlichen Dateien im Dateisystem (über Kubernetes CSI direkt auf dem NAS) liegen. Über das Webinterface stehen Funktionen wie Volltextsuche mit Auto-Completion, Hervorhebung von Treffern, Filterung und „Ähnliche Dokumente“-Vorschläge zur Verfügung. Mehrbenutzerfähigkeit, fein abgestufte Rechtevergabe und ein anpassbares Dashboard erleichtern die Zusammenarbeit.
491 +(% style="text-decoration: none;color:var(--ds-text,#333333);" %)Die Speicherung erfolgt in einem standardisierten PDF/A-Format für die Langzeitarchivierung, wobei stets auch die Originaldateien erhalten bleiben. Metadaten werden in einer Datenbank (PostgreSQL) verwaltet, während die eigentlichen Dateien im Dateisystem (über Kubernetes CSI direkt auf dem NAS) liegen. Über das Webinterface stehen Funktionen wie Volltextsuche mit Auto-Completion, Hervorhebung von Treffern, Filterung und „Ähnliche Dokumente“-Vorschläge zur Verfügung. Mehrbenutzerfähigkeit, fein abgestufte Rechtevergabe und ein anpassbares Dashboard erleichtern die Zusammenarbeit.
485 485  
486 -=== N8n ===
493 +=== (% style="text-decoration: none;color:var(--ds-text,#333333);" %)N8n(%%) ===
487 487  
488 488  n8n ist ein **Open-Source-Tool zur Workflow-Automatisierung**, das man selbst hosten kann. Über eine **visuelle Oberfläche** baut man Workflows per Drag-and-drop aus sogenannten „Nodes“, die verschiedene Dienste und Aktionen miteinander verbinden. Es gibt Hunderte vorgefertigte Integrationen, z. B. für Slack, Mail oder MQTT. Ebenfalls gibt es eine große Auswahl an für uns relevante Community Nodes (Vikunja, Listmonk, und so weiter) sowie die Möglichkeit, eigene Nodes zu schreiben (beispielsweise Paperless oder NATS).
489 489  
... ... @@ -508,7 +508,7 @@
508 508  Im Wesentlichen teilt sich die Architektur in zwei Zonen, die **öffentliche** und die **interne** Zone:
509 509  
510 510  * **Paperless** ist das maßgebliche System, welches ausschließlich **intern** erreichbar ist. Es enthält alle Dokumente und somit sehr viele Mitglieder-Daten. Weiterhin ist es auf ein Teil der Infrastruktur im Makerspace (NAS, Drucker, Scanner) angewiesen, sodass es im Netzwerk des Makerspaces laufen muss. Aus Sicherheitsgründen ist Paperless ausschließlich im lokalen Netzwerk des Makerspaces oder per VPN erreichbar.
511 -* Alle den **Mitgliedern gegenüber sichtbare Systeme (Homepage, Backend, ...) sind öffentlich **und auf einem gemieteten Server beim deutschen Anbieter Hetzner gehostet. [[Details dazu finden sich im Wiki>>doc:xwiki:IN.IT Infrastruktur.Public Server Infrastruktur.WebHome]]. Die meiste bestehende Automatisierung wird aktuell im Backend durchgeführt, ist dort allerdings in Python Logic fest einprogrammiert. Die meiste Logik soll in Zukunft über N8n realisiert werden.
518 +* Alle den **Mitgliedern gegenüber sichtbare Systeme (Homepage, Backend, ...) sind öffentlich **und auf einem gemieteten Server beim deutschen Anbieter Hetzner gehostet. [[Details dazu finden sich im Wiki>>confluencePage:page:IN.Public Server Infrastruktur]]. Die meiste bestehende Automatisierung wird aktuell im Backend durchgeführt, ist dort allerdings in Python Logic fest einprogrammiert. Die meiste Logik soll in Zukunft über N8n realisiert werden.
512 512  
513 513  Für die Kommunikation zwischen beiden Zonen kommt eine **Event Queue** zum Einsatz, wir nutzen hier NATS. NATS wird ebenfalls **auf dem öffentlichen Server installiert. **Der Makerspace selbst ist nur über eine reguläre DSL Leitung an das Internet angebunden, sodass wir hier keine hohe Verfügbarkeit voraussetzen können. Durch die Installation der NATS Services auf dem öffentlichen Server können die dort laufenden Services wie das Backend jederzeit (auch wenn die Internet-Verbindung im Makerspace nicht zur Verfügung steht) die Events veröffentlichen. Die Events werden dann bis zu 7 Tage in der NATS EventQueue persistent gespeichert, und nach Wiederherstellung der Verbindung abgearbeitet.
514 514  
... ... @@ -697,7 +697,7 @@
697 697  
698 698  = Paperless NGX =
699 699  
700 -Das Herzstück der digitalen Mitgliederakte bildet Paperless NGX. Es wird im Makerspace lokal betrieben und ist daher nur aus dem Netzwerk des Makerspaces oder [[per VPN>>doc:xwiki:IN.IT Infrastruktur.IT im Makerspace.[HOWTO] Makerspace VPN.WebHome]] erreichbar. Der Zugang zu Paperless ist über OpenID Connect an [[doc:xwiki:IN.IT Infrastruktur.Services.Keycloak.WebHome]] gekoppelt, Zugang besteht nur für Mitglieder der Gruppen **Vorstand** und **Mitgliederverwaltung**.
707 +Das Herzstück der digitalen Mitgliederakte bildet Paperless NGX. Es wird im Makerspace lokal betrieben und ist daher nur aus dem Netzwerk des Makerspaces oder [[per VPN>>confluencePage:page:IN.[HOWTO] Makerspace VPN]] erreichbar. Der Zugang zu Paperless ist über OpenID Connect an [[confluencePage:page:IN.Keycloak]] gekoppelt, Zugang besteht nur für Mitglieder der Gruppen **Vorstand** und **Mitgliederverwaltung**.
701 701  
702 702  == Paperless Übersicht ==
703 703  
... ... @@ -805,9 +805,9 @@
805 805  
806 806  **Aus diesem Grund wird auf jedes Dokument einen spezieller QR Code aufgedruckt**. Der QR code wird vom Post-Consume Script verwendet um die Metadaten in Paperless zuzuordnen. Weiterhin können Daten übermittelt werden, die dann mittels Webhook an N8n übermittelt werden und dort im Workflow verwendet werden können. Der Aufbau orientiert sich an dem Aufbau eines **JSON Web Tokens (JWT).**
807 807  
808 -=== (% style="color:var(--ds-text-accent-purple-bolder,#352c63)" %)Barcode erzeugen(%%) ===
815 +=== (% style="color:var(--ds-text-accent-purple-bolder,#352c63);" %)Barcode erzeugen(%%) ===
809 809  
810 -(% style="color:var(--ds-text-accent-purple-bolder,#352c63)" %)Der Prozess zur Erzeugung eines QR Codes ist wie folgt:
817 +(% style="color:var(--ds-text-accent-purple-bolder,#352c63);" %)Der Prozess zur Erzeugung eines QR Codes ist wie folgt:
811 811  
812 812  * **Payload (Daten) festlegen**. Einige Werte sind verpflichtend, andere können nach Bedarf optional hinzugefügt werden.
813 813  * JWT erzeugen und signieren. der JWT besteht aus drei Teilen:
... ... @@ -822,7 +822,7 @@
822 822  
823 823  === Body ===
824 824  
825 -Die folgenden Claims sind im Body verfügbar.
832 +Die folgenden Claims sind im Body verfügbar:
826 826  
827 827  |=(((
828 828  Claim
... ... @@ -872,7 +872,6 @@
872 872  )))|(((
873 873  Typ des Dokuments basierend auf der unten definierten Liste.
874 874  )))
875 -|mode|String|✅️ |Kann entweder "digital" oder "manual" sein und bestimmt, ob N8n den unterschriebenen Vertrag ans Backend meldet.
876 876  |(((
877 877  (% class="code" %)
878 878  (((
... ... @@ -927,25 +927,25 @@
927 927  
928 928  Die Implementierung für die Erzeugung und das Validieren erfolgt in Python. Dies hat den Hintergrund, dass sowohl unser Backend als auch Paperless NGX (und damit das Post-Consumption Script) in Python implementiert ist. Es gibt verschiedene Libraries, die betrachtet wurden:
929 929  
930 -|=(((
936 +|=(% scope="col" %)(((
931 931  Name
932 -)))|=(((
938 +)))|=(% scope="col" %)(((
933 933  CVE
934 -)))|=(((
940 +)))|=(% scope="col" %)(((
935 935  Github
936 -)))|=(((
942 +)))|=(% scope="col" %)(((
937 937  GH⭐
938 -)))|=(((
944 +)))|=(% scope="col" %)(((
939 939  Letztes Release
940 -)))|=(((
946 +)))|=(% scope="col" %)(((
941 941  Offene Issues
942 -)))|=(((
948 +)))|=(% scope="col" %)(((
943 943  Dokumentation
944 -)))|=(((
950 +)))|=(% scope="col" %)(((
945 945  Qualität Dokumentation
946 -)))|=(((
952 +)))|=(% scope="col" %)(((
947 947  In Backend vorhanden?
948 -)))|=(((
954 +)))|=(% scope="col" %)(((
949 949  In Paperless vorhanden?
950 950  )))
951 951  |(((
... ... @@ -1018,11 +1018,11 @@
1018 1018  
1019 1019  === PDF417 Code ===
1020 1020  
1021 -Als Format für den Code wurde PDF417 ausgewählt, da dieser mehr Platz und Fehlerkorrektur bietet. Weiterhin gibt es eine einfach zu nutzende Library für Python (Erzeugung) und PDF417 wird von (% style="color:var(--ds-text-accent-purple-bolder,#352c63); text-decoration:none" %)ZXING unterstützt, welches in Paperless eingebettet ist. Ein solcher Barcode sieht beispielsweise so aus:
1027 +Als Format für den Code wurde PDF417 ausgewählt, da dieser mehr Platz und Fehlerkorrektur bietet. Weiterhin gibt es eine einfach zu nutzende Library für Python (Erzeugung) und PDF417 wird von (% style="text-decoration: none;color:var(--ds-text-accent-purple-bolder,#352c63);" %)ZXING unterstützt, welches in Paperless eingebettet ist. Ein solcher Barcode sieht beispielsweise so aus:
1022 1022  
1023 -(% style="color:var(--ds-text-accent-purple-bolder,#352c63); text-decoration:none" %)[[image:attach:barcode.jpg||height="250"]]
1029 +(% style="text-decoration: none;color:var(--ds-text-accent-purple-bolder,#352c63);" %)[[image:attach:barcode.jpg||height="250"]]
1024 1024  
1025 -(% style="color:var(--ds-text-accent-purple-bolder,#352c63); text-decoration:none" %)Daraus kann dann eine Base64 basierte Repräsentation berechnet werden, die einfach in Docuseal hochgeladen werden kann.
1031 +(% style="text-decoration: none;color:var(--ds-text-accent-purple-bolder,#352c63);" %)Daraus kann dann eine Base64 basierte Repräsentation berechnet werden, die einfach in Docuseal hochgeladen werden kann.
1026 1026  
1027 1027  === Referenz-Implementierung ===
1028 1028