fix: Befunde aus Sicherheits- und Korrektheitsreview der Bienenpatenschaft
Docker Image bauen und veroeffentlichen / typecheck (push) Successful in 2m57s
Docker Image bauen und veroeffentlichen / lint (push) Successful in 3m7s
Docker Image bauen und veroeffentlichen / build-and-push (push) Canceled after 0s
Docker Image bauen und veroeffentlichen / test (push) Canceled after 1m22s

- Oeffentliche Kuendigung: exakte Identifikation, Limits je Vertrag und
  Adresse, Bestaetigung nur an die Kontoadresse mit Ruecknahme-Link (HMAC)
- Vorschau: Body-Grenze beim Lesen, Parallelitaets- und Minutenlimit, Cache
- Rabatte gelten nicht fuer Patenschaftspositionen
- Abo aktiv erst nach bestaetigter Zahlung, offene Abschluesse zaehlen
  zum Kontingent und werden nach 24 h aufgeraeumt, Sitzung 58 Minuten
- Konto-Loeschung nur ohne laufendes Abo, Urkunden-Dateien werden entfernt
- Abo-Lieferungen mit Zahlungszeile (DHL-Marke moeglich)
- Shop zeigt freien Bestand nach Abo-Reservierung
- Storno/volle Erstattung widerruft die Patenschaft (Status WIDERRUFEN)
- Umsatzsteuer der Patenschaft per VAT_RATE_PERCENT_PATENSCHAFT (19 %)
- Digitale Bestellungen archivieren sich, Kalendertage in Europe/Berlin,
  Monatsenden begrenzt, Datenauskunft um Patenschaften ergaenzt

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
Nick SzaunigandClaude Opus 5.5 committed 2026-10-16 15:09:32 +02:00
1 parent f227aeb8f9
commit 515fca1c16
97 files changed
+2979 -254

No files matched your search

+10
View File
@@ -63,6 +63,8 @@ export interface AccountSponsorshipStrings {
};
pendingTitle: string;
pendingText: string;
revokedTitle: string;
revokedText: string;
detailsHeading: string;
fields: {
number: string;
@@ -192,6 +194,7 @@ const de: AccountSponsorshipStrings = {
EXPIRED: "Abgelaufen",
CANCELLING: "Gekündigt",
ENDED: "Beendet",
REVOKED: "Widerrufen",
},
term: {
range: (start, end) => `${start} bis ${end}`,
@@ -231,6 +234,9 @@ const de: AccountSponsorshipStrings = {
},
pendingTitle: "Deine Urkunde wird gerade erstellt",
pendingText: "Sobald sie fertig ist, erscheinen hier Urkunde, Medaille und Downloads. Diese Seite aktualisiert sich von selbst.",
revokedTitle: "Diese Patenschaft wurde widerrufen",
revokedText:
"Die Bestellung wurde storniert oder erstattet. Urkunde, Medaille und Downloads stehen deshalb nicht mehr zur Verfügung. Bei Fragen schreib uns gern.",
detailsHeading: "Angaben",
fields: {
number: "Patenschaftsnummer",
@@ -365,6 +371,7 @@ const en: AccountSponsorshipStrings = {
EXPIRED: "Expired",
CANCELLING: "Cancelled",
ENDED: "Ended",
REVOKED: "Revoked",
},
term: {
range: (start, end) => `${start} to ${end}`,
@@ -402,6 +409,9 @@ const en: AccountSponsorshipStrings = {
},
pendingTitle: "Your certificate is being created",
pendingText: "As soon as it is ready, the certificate, medal and downloads appear here. This page refreshes on its own.",
revokedTitle: "This sponsorship has been revoked",
revokedText:
"The order was cancelled or refunded, so the certificate, medal and downloads are no longer available. Feel free to contact us with any questions.",
detailsHeading: "Details",
fields: {
number: "Sponsorship number",