Gaestetexte/Datenschutz: Storno-Regel im Archiv, PDF-Pruefsumme, PDF-Kopfpruefung

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-05 05:03:54 +00:00
1 parent 9a2a70b491
commit ec320853ce
13 files changed
+124 -12

No files matched your search

+10 -2
View File
@@ -66,9 +66,13 @@ export function legalPdfFiles(satz, version) {
)
}
/** Ein Anhang ist ein PDF: nicht leer und mit "%PDF-" am Anfang. */
const istPdf = (inhalt) => inhalt.length >= 5 && inhalt.subarray(0, 5).toString('latin1') === '%PDF-'
/**
* PDFs als Mail-Anhaenge in der Reihenfolge des Satzes (termine: lb, avv, widerruf; analyse: avv, lb); wirft, wenn eine
* Datei fehlt oder nicht lesbar ist. ohne: Dokumente, die nicht angehaengt werden (sie muessen nicht vorhanden sein).
* Datei fehlt, nicht lesbar, leer oder kein PDF ist (nie ein leerer oder falscher Anhang). ohne: Dokumente, die nicht
* angehaengt werden (sie muessen nicht vorhanden sein).
*/
export async function legalPdfAttachments(satz, version, { ohne = [] } = {}) {
const dateien = legalPdfFiles(satz, version)
@@ -78,7 +82,11 @@ export async function legalPdfAttachments(satz, version, { ohne = [] } = {}) {
return Promise.all(
Object.entries(dateien)
.filter(([doc]) => !ohne.includes(doc))
.map(async ([, f]) => ({ filename: f.filename, content: await readFile(f.path), contentType: 'application/pdf' }))
.map(async ([, f]) => {
const content = await readFile(f.path)
if (!istPdf(content)) throw new Error(`Rechtstexte: ${f.filename} ist leer oder kein PDF`)
return { filename: f.filename, content, contentType: 'application/pdf' }
})
)
}
+1 -1
View File
@@ -386,7 +386,7 @@ export const ZUSTIMMUNG_VORZEITIG = (name) =>
+ 'Mir ist bekannt, dass mein Widerrufsrecht mit der vollständigen Erbringung der Leistung erlischt (§ 356 Abs. 5 Nr. 2 BGB). '
+ 'Widerrufe ich vor der vollständigen Erbringung, schulde ich einen angemessenen Betrag für die bis dahin erbrachte Leistung (§ 357a Abs. 2 BGB).'
/** Pflicht-Haken, wenn der Betrieb Stornobedingungen hat. */
/** Pflicht-Haken, wenn der Betrieb Stornobedingungen hat und die gebuchte Leistung einen Preis hat (bei kostenlosen Leistungen gibt es ihn nicht). */
export const ZUSTIMMUNG_STORNO = 'Ich habe die Stornobedingungen gelesen.'
/**