Freischaltung ueber das Register mit Pruefung von Einstellung und Abo
activateClosedTickets oeffnet jetzt alle Funktionen mit ticketFreischaltung im Register (ticketFreischaltungKeys) statt fest news und fragt unter der Sperre feature-activate:<id> nach dem frischen Lesen den Haken freischaltbar(doc). Der Standard fuer termine verlangt eine gespeicherte Einstellung und ein laufendes Wartungs-Abo. false oder Fehler (z. B. Abo nicht lesbar) lassen das Dokument in setup: Log und genau ein adminNote-Eintrag "Freischaltung wartet: <Grund>", keine Mail. News bleibt unveraendert. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f4754f573a
commit
f57dad73ca
4 files changed
+541
-10
No files matched your search
@@ -25,6 +25,18 @@ async function termineBestellpruefung({ customerId, projectId, feature }) {
|
||||
return bestellpruefung({ einstellung, fragebogen, feature, mitAbo: false })
|
||||
}
|
||||
|
||||
/**
|
||||
* Freischaltpruefung des Terminplaners (Spec 4.5: die Aktivierung bleibt gesperrt, bis ein Abo laeuft): die Einrichtung
|
||||
* ist erst freizugeben, wenn ein Wartungs-Abo laeuft und eine Einstellung gespeichert ist. Fail-closed: ein Lesefehler
|
||||
* (Abo, Einstellung) wirft, activateClosedTickets haelt das Dokument dann in 'setup'. Der Aufrufer liest das Dokument
|
||||
* unter der Sperre frisch und uebergibt es; auch das Abo wird hier frisch gelesen, nie aus einem Zwischenspeicher.
|
||||
*/
|
||||
async function termineFreischaltbar(doc) {
|
||||
const [{ ladeEinstellung }, { laeuft }] = await Promise.all([import('./termine/kontext.js'), import('./aboStatus.js')])
|
||||
if (!(await laeuft(doc.customerId))) return false
|
||||
return (await ladeEinstellung(doc.$id)) !== null
|
||||
}
|
||||
|
||||
/**
|
||||
* Platzhalter der Widerrufsbelehrung mit Muster-Widerrufsformular, die die Bestellseite vor dem Knopf zeigt und der
|
||||
* Zustimmungsnachweis speichert. Block F (Task F7) ersetzt den Haken belehrung durch widerrufsbelehrungFunktion().
|
||||
@@ -44,6 +56,7 @@ const STANDARD_HAKEN = {
|
||||
bestellpruefung: termineBestellpruefung,
|
||||
unterlagenBereit: async () => true,
|
||||
belehrung: async () => BELEHRUNG_PLATZHALTER,
|
||||
freischaltbar: termineFreischaltbar,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -58,9 +71,19 @@ export function featureKeys() {
|
||||
return Object.keys(config.features)
|
||||
}
|
||||
|
||||
/**
|
||||
* Schluessel der Funktionen, die nach einem geschlossenen Einrichtungs-Ticket freigeschaltet werden (ticketFreischaltung: true,
|
||||
* nur genau true), in Registerreihenfolge. config.features wird bei jedem Aufruf gelesen.
|
||||
*/
|
||||
export function ticketFreischaltungKeys() {
|
||||
return featureKeys().filter((key) => config.features[key].ticketFreischaltung === true)
|
||||
}
|
||||
|
||||
/**
|
||||
* Haken einer Funktion: { verfuegbar?, bestellpruefung?, unterlagenBereit?, belehrung?, freischaltbar? }.
|
||||
* Wer config.features.<key>.<haken> als Funktion setzt (Tests), ueberschreibt den Standard.
|
||||
* freischaltbar(doc) => Promise<boolean>: darf das Dokument (Zustand 'setup', Ticket geschlossen) jetzt aktiv werden?
|
||||
* Nur true gibt frei; false und jeder Fehler halten es in 'setup' (siehe activateClosedTickets).
|
||||
*/
|
||||
export function featureHaken(key) {
|
||||
const eintrag = featureConfig(key)
|
||||
|
||||
Reference in new issue
Block a user