Kundenansicht neu E-Fix M10: hatLoeschVermerk prüft den strengen Vermerk der Löschjobs

hatLoeschVermerk erkannte gelöschte Daten an /gelöscht am/ in adminNote. Der Vermerk der Jobs ist strenger (Shopdaten bzw. Buchungsdaten
gelöscht am JJJJ-MM-TT), freier Text des Teams ("Domain gelöscht am Kundenwunsch") traf das lockere Muster: das Abo kam zurück, der Abgleich hielt
die Daten für gelöscht und setzte das Dokument auf off statt die Funktion wieder einzuschalten. Jetzt je Funktion das Muster des Jobs mit Datum.
Test in knLoeschVermerk.test.js.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-16 21:49:18 +00:00
1 parent f6fc291dfe
commit 6ff63a7a11
2 files changed
+31 -1

No files matched your search

+3 -1
View File
@@ -86,7 +86,9 @@ const TAG_FELDER_LEER = Object.freeze({ ticketId: null, activatedAt: null, aboEn
/** Vermerk der bestehenden Loeschjobs von Webshop und Buchungskalender in der Notiz. */ /** Vermerk der bestehenden Loeschjobs von Webshop und Buchungskalender in der Notiz. */
const LOESCH_VERMERK = /\s*(?:[-–|]\s*)?(?:Shopdaten|Buchungsdaten) gelöscht am \d{4}-\d{2}-\d{2}/g const LOESCH_VERMERK = /\s*(?:[-–|]\s*)?(?:Shopdaten|Buchungsdaten) gelöscht am \d{4}-\d{2}-\d{2}/g
const hatLoeschVermerk = (doc) => (doc.featureKey === 'shop' || doc.featureKey === 'unterkunft') && /gelöscht am/.test(String(doc.adminNote ?? '')) // E-Fix M10: nur der Vermerk des jeweiligen Loeschjobs mit Datum (shop/jobs.js, unterkunft/aufbewahrung.js: MARKER_RE), nie freier Text des Teams wie "Domain geloescht am Kundenwunsch"
const LOESCH_VERMERK_JE_FUNKTION = Object.freeze({ shop: /Shopdaten gelöscht am \d{4}-\d{2}-\d{2}/, unterkunft: /Buchungsdaten gelöscht am \d{4}-\d{2}-\d{2}/ })
export const hatLoeschVermerk = (doc) => LOESCH_VERMERK_JE_FUNKTION[doc.featureKey]?.test(String(doc.adminNote ?? '')) === true
/** News: ist disabledAt plus die Loeschfrist (30 Tage) am Berliner Kalendertag erreicht? Ohne gueltiges disabledAt nie. */ /** News: ist disabledAt plus die Loeschfrist (30 Tage) am Berliner Kalendertag erreicht? Ohne gueltiges disabledAt nie. */
function loeschReif(doc, now) { function loeschReif(doc, now) {
+28
View File
@@ -0,0 +1,28 @@
import { test, after } from 'node:test'
import assert from 'node:assert/strict'
import { startAppwriteMock } from './support/appwriteMock.js'
import { startFakeStripe } from './support/fakeStripe.js'
import { useTestEnv } from './support/testEnv.js'
// E-Fix M10: hatLoeschVermerk erkennt gelöschte Daten nur am strengen Vermerk der Löschjobs (Shopdaten|Buchungsdaten gelöscht am JJJJ-MM-TT),
// nicht an freiem Text des Teams in adminNote.
const aw = await startAppwriteMock({ schema: {} })
const st = await startFakeStripe()
useTestEnv({ appwriteUrl: aw.url, stripeUrl: st.url })
after(() => Promise.all([aw.close(), st.close()]))
const { hatLoeschVermerk } = await import('../server/services/aboFunktionenAbgleich.js')
test('M10: hatLoeschVermerk braucht den Vermerk des jeweiligen Löschjobs mit Datum; freier Text des Teams zählt nicht', () => {
assert.equal(hatLoeschVermerk({ featureKey: 'shop', adminNote: 'Shopdaten gelöscht am 2026-10-04' }), true)
assert.equal(hatLoeschVermerk({ featureKey: 'unterkunft', adminNote: 'Buchungsdaten gelöscht am 2026-10-04' }), true)
assert.equal(hatLoeschVermerk({ featureKey: 'unterkunft', adminNote: '2026-10-05T09:00:00.000Z Kenso: disable | Buchungsdaten gelöscht am 2026-10-04' }), true, 'der Vermerk steht auch hinter Teamnotizen')
// freier Text: kein Löschvermerk, die Funktion kommt mit dem Abo zurück
for (const note of ['Domain gelöscht am Kundenwunsch', 'Daten gelöscht am 2026-10-04', 'gelöscht am', '2026-10-05T09:00:00.000Z Kenso: disable – Konto gelöscht am Montag']) {
for (const featureKey of ['shop', 'unterkunft']) assert.equal(hatLoeschVermerk({ featureKey, adminNote: note }), false, `${featureKey}: ${note}`)
}
// je Funktion getrennt: der Shop-Vermerk gilt nicht für den Buchungskalender und umgekehrt; andere Funktionen haben keinen
assert.equal(hatLoeschVermerk({ featureKey: 'unterkunft', adminNote: 'Shopdaten gelöscht am 2026-10-04' }), false)
assert.equal(hatLoeschVermerk({ featureKey: 'shop', adminNote: 'Buchungsdaten gelöscht am 2026-10-04' }), false)
for (const featureKey of ['news', 'termine', 'zeiten']) assert.equal(hatLoeschVermerk({ featureKey, adminNote: 'Shopdaten gelöscht am 2026-10-04' }), false)
assert.equal(hatLoeschVermerk({ featureKey: 'shop' }), false)
})