Kundenansicht neu P10: Korrekturen aus der Pruefung (Task 5 Kaeufe lesen)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-29 12:07:57 +00:00
1 parent 1b79210a7c
commit e8ede69188
2 files changed
+81

No files matched your search

+13
View File
@@ -9,6 +9,9 @@
* Nur zur Information, kein Hindernis: der Widerruf funktioniert nach dem Umschalten weiter.
* Die Frist ist eine Näherung: Anker ist consentAt am Dokument, sonst orderedAt (der Nachweis in featureConsents wird nicht gelesen).
* Ohne Datum gilt die Frist vorsichtshalber als laufend.
* Behalten-Sitzung Öffnungszeiten "Behalten": starteBehalten ändert den Zustand nicht, es trägt nur behaltenSessionId ein. Eine
* solche Zahlung ist also weder 'ordered' noch gekauft. Eigene Zeile mit den Dokument-IDs, kein Exit 1: eine
* abgelaufene Sitzungs-ID bleibt stehen, bis aktiviert oder gebucht wird. Vor dem Umschalten von Hand klären.
*
* Ausgabe: nur Zahlen und Dokument-IDs, nie Namen, Adressen oder Beträge.
* node scripts/kauf-bestand-pruefen.mjs
@@ -38,6 +41,13 @@ function fristStand(doc, jetzt) {
return { laeuft: withdrawalDeadline(anker).endsAt > jetzt, ohneDatum: false }
}
/** Wie unlockedByVon (siteFeatures.js), hier nachgebaut, damit das Skript nicht Stripe und Mailer lädt. */
const freigeschaltetVon = (doc) => doc.unlockedBy || (doc.unlockedByPurchase ? 'kauf' : 'team')
/** Behalten-Sitzung eingetragen und noch nicht gebucht (gebucht = stripeSessionId ist diese Sitzung und das Dokument ein Kauf). */
const behaltenEingetragen = (doc) =>
Boolean(doc.behaltenSessionId) && !(doc.stripeSessionId === doc.behaltenSessionId && freigeschaltetVon(doc) === 'kauf')
const liste = (ids) => (ids.length ? ` (${ids.join(', ')})` : '')
/**
@@ -47,6 +57,7 @@ const liste = (ids) => (ids.length ? ` (${ids.join(', ')})` : '')
export async function pruefeKaeufe({ log = console.log, jetzt = new Date() } = {}) {
const docs = await listAllDocuments(config.collections.portalFeatures)
const offeneBestellungen = docs.filter((d) => d.state === 'ordered').map((d) => d.$id)
const behalten = docs.filter(behaltenEingetragen).map((d) => d.$id)
const gekauft = docs.filter(istGekauft)
const fristLaeuft = []
const ohneDatum = []
@@ -59,6 +70,8 @@ export async function pruefeKaeufe({ log = console.log, jetzt = new Date() } = {
log(`Funktionsdokumente: ${docs.length}, davon gekauft: ${gekauft.length}`)
log(`Offene Bestellungen: ${offeneBestellungen.length}${liste(offeneBestellungen)}`)
log(`Fristen laufen: ${fristLaeuft.length}${liste(fristLaeuft)}${ohneDatum.length ? ` - davon ohne Datum: ${ohneDatum.length}` : ''}`)
log(`Behalten-Sitzung eingetragen: ${behalten.length}${liste(behalten)}`)
if (behalten.length) log('Hinweis: bei einer Behalten-Sitzung kann die Zahlung noch laufen oder die Sitzung abgelaufen sein; kein Hindernis, vor dem Umschalten aber klären.')
if (offeneBestellungen.length) log('Offene Bestellungen vorhanden: erst die Zahlung abwarten (oder klären), dann umschalten.')
return { offeneBestellungen, fristLaeuft, gekauftGesamt: gekauft.length }
}