Rechtstexte und K15: Prüfbefunde F5–F8 (AVV genauer, PDF-Prüfsumme, Unterlagen der vereinbarten Fassung)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-05 03:42:27 +00:00
1 parent 2c059cb3d6
commit 90098726b9
13 files changed
+345 -63

No files matched your search

+16 -6
View File
@@ -89,11 +89,21 @@ function funktionSatz(featureKey) {
/**
* Anhaenge der Bestellmail einer Funktion in der aktuellen Fassung: termine => Satz 'termine', news => []. Wirft bei
* unbekannter Funktion und bei fehlender Datei (der Aufrufer entscheidet, was dann geschieht).
* unbekannter Funktion und bei fehlender Datei (der Aufrufer entscheidet, was dann geschieht). opts.fassung waehlt eine andere
* (ausgelieferte) Fassung, etwa die, der ein Kunde bei der Bestellung zugestimmt hat; sonst gilt die aktuelle.
*/
export async function featureLegalAttachments(featureKey, opts) {
export async function featureLegalAttachments(featureKey, { fassung, ...opts } = {}) {
const satz = funktionSatz(featureKey)
return satz ? legalPdfAttachments(satz, aktuelleFassung(satz), opts) : []
return satz ? legalPdfAttachments(satz, fassung ?? aktuelleFassung(satz), opts) : []
}
/**
* Adressen der HTML-Seiten der Funktion ({ lb, avv, widerruf }, versioniert) in der aktuellen oder der gewaehlten Fassung
* (opts.fassung); news => null. Wirft bei unbekannter Funktion oder ungueltiger Fassung.
*/
export function featureLegalPaths(featureKey, { fassung } = {}) {
const satz = funktionSatz(featureKey)
return satz ? legalPaths(satz, fassung ?? aktuelleFassung(satz)) : null
}
/**
@@ -116,13 +126,13 @@ async function istLesbaresPdf(pfad) {
/**
* true, wenn alle Rechtsdokumente der Funktion in der aktuellen Fassung vorliegen: HTML-Seiten (die die Bestellseite
* verlinkt) und PDFs (die Mail anhaengt; je PDF stat und die ersten fuenf Bytes, nicht der ganze Inhalt). Unbekannte
* Funktion und jeder Lesefehler: false (fail-closed), nie ein Wurf.
* Funktion und jeder Lesefehler: false (fail-closed), nie ein Wurf. opts.fassung prueft eine andere Fassung als die aktuelle.
*/
export async function featureLegalReady(featureKey) {
export async function featureLegalReady(featureKey, { fassung } = {}) {
try {
const satz = funktionSatz(featureKey)
if (!satz) return true
const v = aktuelleFassung(satz)
const v = fassung ?? aktuelleFassung(satz)
await Promise.all(Object.values(legalPaths(satz, v)).map((adresse) => access(join(basisDir, adresse))))
const lesbar = await Promise.all(Object.values(legalPdfFiles(satz, v)).map((f) => istLesbaresPdf(f.path)))
return lesbar.every(Boolean)