Änderungen von Dokument Digitale Mitgliederverwaltung

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

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

Zusammenfassung

Details

Icon Seiteneigenschaften
Inhalt
... ... @@ -515,7 +515,7 @@
515 515  Im Wesentlichen teilt sich die Architektur in zwei Zonen, die **öffentliche** und die **interne** Zone:
516 516  
517 517  * **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.
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.
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>>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.
519 519  
520 520  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.
521 521  
... ... @@ -704,7 +704,7 @@
704 704  
705 705  = Paperless NGX =
706 706  
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**.
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>>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**.
708 708  
709 709  == Paperless Übersicht ==
710 710  
... ... @@ -812,9 +812,9 @@
812 812  
813 813  **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).**
814 814  
815 -=== (% style="color:var(--ds-text-accent-purple-bolder,#352c63);" %)Barcode erzeugen(%%) ===
815 +=== (% style="color:var(--ds-text-accent-purple-bolder,#352c63)" %)Barcode erzeugen(%%) ===
816 816  
817 -(% 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:
818 818  
819 819  * **Payload (Daten) festlegen**. Einige Werte sind verpflichtend, andere können nach Bedarf optional hinzugefügt werden.
820 820  * JWT erzeugen und signieren. der JWT besteht aus drei Teilen:
... ... @@ -829,7 +829,7 @@
829 829  
830 830  === Body ===
831 831  
832 -Die folgenden Claims sind im Body verfügbar:
832 +Die folgenden Claims sind im Body verfügbar.
833 833  
834 834  |=(((
835 835  Claim
... ... @@ -879,6 +879,7 @@
879 879  )))|(((
880 880  Typ des Dokuments basierend auf der unten definierten Liste.
881 881  )))
882 +|mode|String|✅️ |Kann entweder "digital" oder "manual" sein und bestimmt, ob N8n den unterschriebenen Vertrag ans Backend meldet.
882 882  |(((
883 883  (% class="code" %)
884 884  (((
... ... @@ -933,25 +933,25 @@
933 933  
934 934  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:
935 935  
936 -|=(% scope="col" %)(((
937 +|=(((
937 937  Name
938 -)))|=(% scope="col" %)(((
939 +)))|=(((
939 939  CVE
940 -)))|=(% scope="col" %)(((
941 +)))|=(((
941 941  Github
942 -)))|=(% scope="col" %)(((
943 +)))|=(((
943 943  GH⭐
944 -)))|=(% scope="col" %)(((
945 +)))|=(((
945 945  Letztes Release
946 -)))|=(% scope="col" %)(((
947 +)))|=(((
947 947  Offene Issues
948 -)))|=(% scope="col" %)(((
949 +)))|=(((
949 949  Dokumentation
950 -)))|=(% scope="col" %)(((
951 +)))|=(((
951 951  Qualität Dokumentation
952 -)))|=(% scope="col" %)(((
953 +)))|=(((
953 953  In Backend vorhanden?
954 -)))|=(% scope="col" %)(((
955 +)))|=(((
955 955  In Paperless vorhanden?
956 956  )))
957 957  |(((
... ... @@ -1024,11 +1024,11 @@
1024 1024  
1025 1025  === PDF417 Code ===
1026 1026  
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:
1028 +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:
1028 1028  
1029 -(% style="text-decoration: none;color:var(--ds-text-accent-purple-bolder,#352c63);" %)[[image:attach:barcode.jpg||height="250"]]
1030 +(% style="color:var(--ds-text-accent-purple-bolder,#352c63); text-decoration:none" %)[[image:attach:barcode.jpg||height="250"]]
1030 1030  
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.
1032 +(% 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.
1032 1032  
1033 1033  === Referenz-Implementierung ===
1034 1034