Compare commits

..

5 Commits

Author SHA1 Message Date
1bfd8b3a96 Merge branch 'main' of https://git.kocoder.xyz/Diplomarbeit-Absolventenverein/pm 2026-04-18 19:24:07 +02:00
020707c380 Neue Version 2026-04-18 19:23:49 +02:00
e623ca9340 Fix: Theme Linking?
Some checks failed
build-debian-package / Convert to PDF (push) Failing after 15s
2026-04-18 16:12:07 +02:00
76e0d6b65f Use the correct path
Some checks failed
build-debian-package / Convert to PDF (push) Failing after 15s
2026-04-18 16:10:18 +02:00
b408cb0d0f Fix: mermaid diagrams
Some checks failed
build-debian-package / Convert to PDF (push) Failing after 12s
2026-04-18 16:07:01 +02:00
6 changed files with 43 additions and 42 deletions

View File

@@ -21,7 +21,7 @@ jobs:
- uses: docker://git.kocoder.xyz/docker/ga-pandoc:d2995fb914e313703da2c7754763e7fa01dae88f - uses: docker://git.kocoder.xyz/docker/ga-pandoc:d2995fb914e313703da2c7754763e7fa01dae88f
name: Pandoc name: Pandoc
with: with:
env: TEXINPUTS=/workspace/Diplomarbeit-Absolventenverein/pm/Defensio:/workspace/Diplomarbeit-Absolventenverein/pm/Defensio/libs/awesome-beamer/:/workspace/Diplomarbeit-Absolventenverein/pm/Defensio/libs/smile/ env: TEXINPUTS=./Defensio:./Defensio/libs/awesome-beamer/:./Defensio/libs/smile/
command: pandoc command: pandoc
args: >- args: >-
/workspace/Diplomarbeit-Absolventenverein/pm/Defensio/01_Praesentation_Allgemein.md /workspace/Diplomarbeit-Absolventenverein/pm/Defensio/01_Praesentation_Allgemein.md

3
.gitignore vendored
View File

@@ -1 +1,2 @@
diplomarbeitsbuch.pdf diplomarbeitsbuch.pdf
defensio.pdf

View File

@@ -39,29 +39,12 @@
- **Problem**: Datenverlust (Hardware, Software, Cyberangriffe). - **Problem**: Datenverlust (Hardware, Software, Cyberangriffe).
- **Lösung**: Vollautomatisiertes Backup-Skript. - **Lösung**: Vollautomatisiertes Backup-Skript.
```mermaid **Automatischer Ablauf (täglich 02:30 Uhr):**
graph LR 1. Cronjob startet → Konfiguration wird geladen
Start((Start: Cronjob 02:30)) --> Init[Initialisierung] 2. Datenbank-Backup wird erstellt
Init --> Vars[Konfiguration laden] 3. Restliches Dateisystem wird komprimiert
4. Fehlerüberprüfung → bei Fehler: Log-Eintrag & Abbruch
subgraph Sicherungsphase 5. Rotation: Nur die letzten 30 Backups bleiben erhalten, ältere werden automatisch gelöscht
Dir[Erstelle Backup-Ordner] --> DB[Datenbank-Backup]
DB --> Files[Dateisystem sichern]
end
Files --> Check{Fehler?}
Check -- Ja --> Mail[Log Error & Abbruch]
Check -- Nein --> Rotate[Lade Backups-Liste]
subgraph Speicherverwaltung
Rotate --> Count{Anzahl > 30?}
Count -- Ja --> Delete[Älteste löschen]
Count -- Nein --> Finish[Abschluss]
Delete --> Finish
end
Finish --> Ende((Ende))
```
--- ---
@@ -97,22 +80,10 @@ graph LR
## Der Premium-Bereich (2) ## Der Premium-Bereich (2)
**Architektur des Premium-Bereich-Moduls:** **Architektur des Premium-Bereich-Moduls:**
```mermaid **Technische Architektur:**
graph LR - **Frontend**: Blazor WebAssembly (Oqtane) → ruft API auf
subgraph Client [WebAssembly] - **Backend**: ASP.NET Core Controller → Service-Schicht mit Rechteverwaltung
UI[Benutzeroberfläche] --> SvcC[Service Client] - **Datenbank**: EF Core → PostgreSQL mit Audit-Trail (jede Premium-Vergabe nachvollziehbar)
end
subgraph Server [ASP.NET Core]
SvcC --> Ctrl[API Controller]
Ctrl --> SvcS[Service Schicht]
end
subgraph Data [Datenbank]
SvcS --> EF[EF Core]
EF --> DB[(PostgreSQL)]
end
```
**Datensparsame Mitgliedersuche & Kontaktfunktion:** **Datensparsame Mitgliedersuche & Kontaktfunktion:**
![Mitgliedersuche und Kontaktfunktion für Premium-Mitglieder](../Diplomarbeitsbuch/images/04-Florian/premium-mitglieder-suche.png) ![Mitgliedersuche und Kontaktfunktion für Premium-Mitglieder](../Diplomarbeitsbuch/images/04-Florian/premium-mitglieder-suche.png)

View File

@@ -0,0 +1,3 @@
{
"args": ["--no-sandbox"]
}

View File

@@ -151,6 +151,11 @@ local mermaid = {
compile = function (self, code) compile = function (self, code)
local mime_type = self.mime_type or 'image/svg+xml' local mime_type = self.mime_type or 'image/svg+xml'
local file_extension = extension_for_mimetype[mime_type] local file_extension = extension_for_mimetype[mime_type]
-- Resolve puppeteer config path
local puppeteer_config = pandoc.path.join({pandoc.system.get_working_directory(), 'puppeteer-config.json'})
return with_temporary_directory("diagram", function (tmpdir) return with_temporary_directory("diagram", function (tmpdir)
return with_working_directory(tmpdir, function () return with_working_directory(tmpdir, function ()
local infile = 'diagram.mmd' local infile = 'diagram.mmd'
@@ -158,7 +163,7 @@ local mermaid = {
write_file(infile, code) write_file(infile, code)
pipe( pipe(
self.execpath or 'mmdc', self.execpath or 'mmdc',
{"--pdfFit", "--iconPacksNamesAndUrls", "mdi#https://unpkg.com/@iconify-json/mdi@1.2.3/icons.json", "--input", infile, "--output", outfile}, {"--pdfFit", "--iconPacksNamesAndUrls", "mdi#https://unpkg.com/@iconify-json/mdi@1.2.3/icons.json", "-p", puppeteer_config, "--input", infile, "--output", outfile},
'' ''
) )
return read_file(outfile), mime_type return read_file(outfile), mime_type
@@ -167,6 +172,24 @@ local mermaid = {
end, end,
} }
-- Source - https://stackoverflow.com/a/27028488
-- Posted by hookenz, modified by community. See post 'Timeline' for change history
-- Retrieved 2026-04-18, License - CC BY-SA 4.0
function dump(o)
if type(o) == 'table' then
local s = '{ '
for k,v in pairs(o) do
if type(k) ~= 'number' then k = '"'..k..'"' end
s = s .. '['..k..'] = ' .. dump(v) .. ','
end
return s .. '} '
else
return tostring(o)
end
end
--- TikZ --- TikZ
-- --

3
puppeteer-config.json Normal file
View File

@@ -0,0 +1,3 @@
{
"args": ["--no-sandbox"]
}