Rechtstexte: PDF-Bau für Fassung 6 (Modi abo6 und funktionen6, nach Freigabe)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-16 16:10:31 +00:00
1 parent b4b18792c3
commit 99d7e2bdca
2 files changed
+72 -2

No files matched your search

+46 -1
View File
@@ -15,6 +15,11 @@
# auftraege = Widerrufsbelehrung der Projektauftraege (Fassung TEXTE_VERSION, Standard: TEXTE_FASSUNG aus server/services/auftraege/texte.js) und AGB
# (Fassung AGB_VERSION, Standard: AGB_FASSUNG aus server/services/auftraege/konstanten.js); die HTML-Seiten kommen vorher aus
# `node scripts/build-legal-html.mjs auftraege`, Pruefsumme und Neudruck wie bei termine und shop. `all` druckt auch diese beiden PDFs.
# abo6 = Abo-Bedingungen Fassung 6 (public/neu/rechtliches/abo-bedingungen.html -> WEBklar-Abo-Vertragsunterlagen.pdf daneben, <PDF>.sha256 mit der SHA-256 der
# Seite, Neudruck nur bei geaenderter Seite, FORCE=1 druckt neu). Entwurf; erst nach der Freigabe drucken, vorher `free -m`, mit `nice`. `all` druckt diese Datei nicht.
# funktionen6 = die zehn Funktionsunterlagen der Fassung 6 (Leistungsbeschreibungen und AVV, Fassung FUNKTIONEN6_VERSION, Standard: FUNKTIONEN_FASSUNG_V6 aus
# server/services/products.js) aus public/neu/rechtliches/<slug>-<Fassung>.html nach <slug>-<Fassung>.pdf; die HTML-Seiten kommen vorher aus
# `node scripts/build-legal-html.mjs funktionen6`, Pruefsumme und Neudruck wie bei abo6. Entwurf; erst nach der Freigabe drucken, vorher `free -m`, mit `nice`.
# datenschutz = nur die Datenschutzerklaerung (docs/WEBklar-Datenschutzerklaerung.pdf); daneben liegt <PDF>.sha256 mit der SHA-256 von
# public/datenschutz.html (test/legalTexts.test.js prueft sie); ein PDF mit passender Pruefsumme wird nicht neu gedruckt (FORCE=1 druckt neu)
# Vorher `free -m` pruefen und mit `nice` aufrufen; jeder Chrome-Aufruf laeuft hoechstens 120 Sekunden (timeout), die PDFs nacheinander.
@@ -82,6 +87,16 @@ agb_version() {
echo "$v"
}
# Fassung der Funktionsunterlagen 6: FUNKTIONEN6_VERSION, sonst FUNKTIONEN_FASSUNG_V6 aus server/services/products.js
funktionen6_version() {
local v="${FUNKTIONEN6_VERSION:-}"
if [ -z "$v" ]; then
v="$(timeout 60 node --max-old-space-size=256 --input-type=module -e "const { FUNKTIONEN_FASSUNG_V6 } = await import('./server/services/products.js'); console.log(FUNKTIONEN_FASSUNG_V6)")"
fi
[[ "$v" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]] || { echo "Ungueltige Fassung: $v" >&2; exit 1; }
echo "$v"
}
# Widerrufsbelehrung der Projektauftraege und AGB drucken (je PDF nur, wenn die Pruefsumme der HTML-Seite nicht mehr passt)
auftraege_pdfs() {
local texte agb eintrag slug fassung quelle ziel summe
@@ -173,6 +188,36 @@ datenschutz)
echo "$summe" > "$ziel.sha256"
fi
;;
abo6)
# Entwurf Fassung 6 der Abo-Bedingungen: Seite und PDF liegen im Vorschaupfad; erst nach der Freigabe drucken
quelle="public/neu/rechtliches/abo-bedingungen.html"
ziel="public/neu/rechtliches/WEBklar-Abo-Vertragsunterlagen.pdf"
[ -f "$quelle" ] || { echo "HTML fehlt: $quelle"; exit 1; }
summe="$(sha256sum "$quelle" | cut -d' ' -f1)"
if [ -z "${FORCE:-}" ] && [ -f "$ziel" ] && [ "$(cat "$ziel.sha256" 2>/dev/null)" = "$summe" ]; then
echo "= $ziel (unveraendert)"
else
pdf "$quelle" "$ziel"
echo "$summe" > "$ziel.sha256"
fi
;;
funktionen6)
# Entwurf Fassung 6 der Funktionsunterlagen (zehn Seiten): Leistungsbeschreibungen und AVV, nacheinander, nie parallel
fassung="$(funktionen6_version)"
for slug in leistungsbeschreibung-news leistungsbeschreibung-terminplaner avv-terminplaner leistungsbeschreibung-webshop avv-webshop \
leistungsbeschreibung-unterkunft avv-unterkunft leistungsbeschreibung-zeiten leistungsbeschreibung-website-analyse avv-website-analyse; do
quelle="public/neu/rechtliches/$slug-$fassung.html"
ziel="public/neu/rechtliches/$slug-$fassung.pdf"
[ -f "$quelle" ] || { echo "HTML fehlt: $quelle (zuerst node scripts/build-legal-html.mjs funktionen6)"; exit 1; }
summe="$(sha256sum "$quelle" | cut -d' ' -f1)"
if [ -z "${FORCE:-}" ] && [ -f "$ziel" ] && [ "$(cat "$ziel.sha256" 2>/dev/null)" = "$summe" ]; then
echo "= $ziel (unveraendert)"
else
pdf "$quelle" "$ziel"
echo "$summe" > "$ziel.sha256"
fi
done
;;
all)
pdf docs/leitfaden-empfehlungsgeber.html docs/WEBklar-Leitfaden-Empfehlungsgeber.pdf
# Fassung 3 (public/WEBklar-Wartungs-Abo-Vertragsunterlagen.pdf, Archiv unter public/vertragsunterlagen/v3/) wird nicht neu erzeugt
@@ -182,6 +227,6 @@ all)
auftraege_pdfs
;;
*)
echo "Usage: $0 [all|analyse|termine|shop|unterkunft|datenschutz]"; echo " $0 auftraege (Widerrufsbelehrung der Projektauftraege und AGB)"; exit 1
echo "Usage: $0 [all|analyse|termine|shop|unterkunft|datenschutz]"; echo " $0 auftraege (Widerrufsbelehrung der Projektauftraege und AGB)"; echo " $0 abo6|funktionen6 (Entwurf Fassung 6: Abo-Bedingungen bzw. Funktionsunterlagen, erst nach der Freigabe)"; exit 1
;;
esac