Konzept: Verträge, Hosting-Abo und E-Mail-Zusatzspeicher
Entwurf zur Durchsicht, noch keine Umsetzung. Beschreibt den Bereich "Verträge", das Hosting-Abo (15 €), beliebig viele Postfächer im Wartungs-Abo, den Wechsel Hosting -> Wartung (12 neue Monate) und den Zusatzspeicher (5 GB je 1 €/Monat, Stückzahl im Stripe-Abo) samt betroffener Rechtstexte, Mails und Dateien. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
18c3cdf3e5
commit
65ab5013cb
1 file changed
+519
@@ -0,0 +1,519 @@
|
||||
# Verträge, Hosting-Abo und E-Mail-Zusatzspeicher – Konzept
|
||||
|
||||
Stand 27.09.2026 · Entwurf zur Durchsicht · umgesetzt ist noch nichts
|
||||
|
||||
Betrifft das Kundenportal (project.webklar.com), die Website (webklar.com), das Ticketsystem (ticket.webklar.com), Stripe, Hetzner konsoleH und die Rechtstexte.
|
||||
|
||||
## 1. Ziel
|
||||
|
||||
1. Der Bereich „Wartung“ im Kundenportal heißt künftig **Verträge**. Dort liegt das Abo des Kunden.
|
||||
2. Neues **Hosting-Abo** für 15 € im Monat: Wir hosten die Website, dazu kommen 1 Domain und 1 E-Mail-Postfach.
|
||||
3. **Wartungs-Abo** (50 €): Statt einem Postfach gibt es beliebig viele, zusammen 5 GB.
|
||||
4. Hosting-Kunden können **jederzeit ins Wartungs-Abo wechseln**, auch in den ersten 12 Monaten.
|
||||
5. **E-Mail-Zusatzspeicher**: je 5 GB für 1 € im Monat, per Plus und Minus im eigenen Bereich, abgerechnet im laufenden Abo über Stripe.
|
||||
|
||||
Nicht Teil dieses Konzepts:
|
||||
|
||||
- mehrere Abos pro Kunde, etwa für zwei Websites. Pro Kunde gibt es weiterhin höchstens ein laufendes Abo.
|
||||
- Postfächer selbst im Portal anlegen oder löschen. Hetzner bietet dafür keine Schnittstelle, deshalb läuft das per Anfrage im Chat.
|
||||
- jährliche Zahlung.
|
||||
- Rückwechsel von Wartung zu Hosting per Knopf. Das geht nur auf Anfrage (3.6).
|
||||
|
||||
## 2. Entscheidungen
|
||||
|
||||
| Thema | Entscheidung | Herkunft |
|
||||
|---|---|---|
|
||||
| Name des Bereichs | „Verträge“ | Vorgabe |
|
||||
| Preis Hosting-Abo | 15,00 € pro Monat | Vorgabe |
|
||||
| Umfang Hosting-Abo | siehe 3.1: ohne Arbeitsstunde, ohne Pflege der Website | Vorschlag, bestätigt |
|
||||
| Hosting-Abo nur für | statische Websites (3.2) | Vorschlag, bestätigt |
|
||||
| Domain im Hosting-Abo | ja, 1 Domain | Vorschlag, bestätigt |
|
||||
| Mindestlaufzeit | beide Abos 12 Monate ab Leistungsbeginn, danach monatlich kündbar | Vorschlag, bestätigt |
|
||||
| Postfächer | Hosting: 1 Postfach, 5 GB. Wartung: beliebig viele, zusammen 5 GB | Vorgabe |
|
||||
| Wechsel Hosting → Wartung | jederzeit, als neuer Vertrag. Mit dem Wechsel beginnen 12 neue Monate Mindestlaufzeit (Variante A) | Vorgabe |
|
||||
| Zusatzspeicher | 5 GB je Paket für 1,00 € pro Monat, in beiden Abos, als zweite Position im selben Stripe-Abo | Vorgabe |
|
||||
| Aufbau der Rechtstexte | eine gemeinsame Fassung für beide Abos (8.1) | Vorschlag |
|
||||
| Offene Einzelpunkte | vorbelegt, siehe 13 | Vorschlag, bitte prüfen |
|
||||
|
||||
Alle Preise sind Endpreise. Gemäß § 19 UStG wird keine Umsatzsteuer berechnet.
|
||||
|
||||
## 3. Produkte
|
||||
|
||||
### 3.1 Leistungen im Vergleich
|
||||
|
||||
| | Hosting-Abo | Wartungs-Abo |
|
||||
|---|---|---|
|
||||
| Preis | 15,00 € pro Monat | 50,00 € pro Monat |
|
||||
| Website auf unserem Server in Deutschland (Hetzner, Falkenstein) | ✓ | ✓ |
|
||||
| SSL-Zertifikat, tägliche Datensicherung, Überwachung der Erreichbarkeit | ✓ | ✓ |
|
||||
| Updates von Betriebssystem und Server-Software | ✓ | ✓ |
|
||||
| Updates und Pflege der Website selbst | – | ✓ |
|
||||
| Geeignet für | statische Websites | alle Websites und Web-Anwendungen, die wir erstellt oder zur Betreuung übernommen haben |
|
||||
| Domain (.de, .com, .eu, .net, .org) | 1 | 1 |
|
||||
| E-Mail | 1 Postfach, 5 GB | beliebig viele Postfächer, zusammen 5 GB |
|
||||
| Zusatzspeicher | je 5 GB für 1,00 € pro Monat | je 5 GB für 1,00 € pro Monat |
|
||||
| Arbeitszeit | nur nach Freigabe, 100 € pro Stunde in 15-Minuten-Schritten | 1 Stunde pro Monat inklusive, darüber 100 € pro Stunde |
|
||||
| Servicezeiten und Reaktion | wie heute im Wartungs-Abo (Mo–Fr 9–17 Uhr, Antwort bis Ende des nächsten Werktags) | wie heute |
|
||||
| Mindestlaufzeit | 12 Monate | 12 Monate, auch nach einem Wechsel |
|
||||
|
||||
### 3.2 Hosting-Abo: nur statische Websites
|
||||
|
||||
- Statisch heißt: Der Webserver liefert die Dateien (HTML, CSS, JavaScript, Bilder) unverändert aus. Dazu gehören auch unsere React- und Vite-Seiten.
|
||||
- Nicht erlaubt sind ein CMS, ein Login, eine Datenbank und eigener serverseitiger Code wie PHP.
|
||||
- Der Grund: Eine dynamische Website ohne laufende Updates läge ungepflegt auf demselben Server wie Kundenportal, Datenbank und Rechnungen.
|
||||
- Kontaktformulare sind nur über einen Dienst möglich, den wir zentral betreiben und pflegen (siehe 13, Punkt 7).
|
||||
- Braucht eine Website später dynamische Teile, bieten wir den Wechsel ins Wartungs-Abo an.
|
||||
- Änderungen an der Website gibt es nur nach Freigabe und gegen 100 € pro Stunde, Anfrage im Chat. Die Behebung von Störungen an Server, Domain und Postfach ist inklusive, wie im Wartungs-Abo.
|
||||
|
||||
### 3.3 Postfächer (beide Abos)
|
||||
|
||||
- Die Postfächer liegen bei Hetzner Webhosting, Rechenzentrum Nürnberg. Das Hosting-Abo hat 1 Postfach, das Wartungs-Abo beliebig viele.
|
||||
- Hetzner setzt die Speichergrenze je Postfach. „Zusammen 5 GB“ heißt: Die Grenzen aller Postfächer eines Kunden ergeben zusammen höchstens 5 GB plus Zusatzspeicher.
|
||||
- Wie der Speicher verteilt wird, bestimmt der Kunde. Ohne Vorgabe teilen wir gleichmäßig auf.
|
||||
- Ist die Grenze eines Postfachs erreicht, nimmt es keine neuen Mails mehr an. Darauf weisen Portal und Bedingungen hin.
|
||||
- Anlegen, Löschen, neues Passwort oder andere Aufteilung fragt der Kunde im Chat an. Der Knopf „Postfach anfragen“ füllt die Nachricht vor.
|
||||
- Wir setzen es in konsoleH um, in der Regel innerhalb eines Werktags.
|
||||
- Zugangsdaten geben wir nur dem Kunden oder den Personen, die er in Textform benennt.
|
||||
- Faire Nutzung:
|
||||
- Postfächer nur für den Kunden, seine Beschäftigten und seine Organisation
|
||||
- kein Weiterverkauf
|
||||
- kein Newsletter- oder Massenversand
|
||||
- Es gelten die Versandgrenzen des Anbieters.
|
||||
- Kapazität: Alle Kundenpostfächer liegen in unserem Hetzner-Paket und teilen sich dessen Speicher (S 10 GB, M 50 GB, L 100 GB, XL 300 GB).
|
||||
- Das Admin-Panel zeigt die Summe der vergebenen Kontingente: 5 GB je laufendem Abo plus alle Pakete Zusatzspeicher.
|
||||
- Bevor der belegte Speicher in konsoleH 80 % erreicht, wechseln wir ins nächstgrößere Paket.
|
||||
|
||||
### 3.4 E-Mail-Zusatzspeicher
|
||||
|
||||
Ein Paket hat 5 GB und kostet 1,00 € pro Monat. Jeder Kunde kann 0 bis 10 Pakete buchen, in beiden Abos, auch Bestandskunden mit Version 3.
|
||||
|
||||
**Plus (Bestellung)**
|
||||
|
||||
- Direkt über dem Knopf steht eine Übersicht mit:
|
||||
- neuer Gesamtgröße
|
||||
- Mehrpreis pro Monat
|
||||
- anteiligem Betrag für den Rest des laufenden Monats (aus der Stripe-Vorschau)
|
||||
- Datum der nächsten Abbuchung
|
||||
- Link auf Bedingungen und Widerrufsbelehrung
|
||||
- Der Knopf heißt „Zahlungspflichtig bestellen“ (§ 312j Abs. 3 BGB). Der Vertrag kommt mit dem Klick zustande. Bezahlt wird mit der hinterlegten Zahlungsart.
|
||||
- Abrechnung:
|
||||
- Den Rest des laufenden Monats berechnet Stripe anteilig mit der nächsten Abbuchung, danach 1,00 € je Paket und Monat.
|
||||
- Pakete, die für den laufenden Monat schon bezahlt sind (etwa nach einem Minus im selben Monat), werden nicht noch einmal berechnet.
|
||||
- Bereitstellung: Wir stellen die Grenzen in konsoleH um, in der Regel innerhalb eines Werktags. Bis dahin zeigt das Portal „wird eingerichtet“.
|
||||
- Der Kunde bekommt eine Bestätigungsmail mit Zusammenfassung und den Vertragsbedingungen als PDF.
|
||||
|
||||
**Minus**
|
||||
|
||||
- Der Knopf heißt „Speichern“. Die Änderung wirkt zum Ende des laufenden Abrechnungsmonats, ohne anteilige Erstattung.
|
||||
- Das Portal zeigt „ab TT.MM. X GB“.
|
||||
- Der Dialog weist darauf hin: Passen die gespeicherten Mails dann nicht mehr hinein, nimmt das betroffene Postfach keine neuen Mails an, bis wieder Platz ist.
|
||||
- Der Kunde bekommt eine Bestätigungsmail.
|
||||
|
||||
**Widerruf**
|
||||
|
||||
- Jede Bestellung hat 14 Tage Widerrufsfrist.
|
||||
- Wir verlangen keinen ausdrücklichen Sofortbeginn und stellen trotzdem sofort bereit.
|
||||
- Bei Widerruf nehmen wir das Paket zurück und erstatten alles, was dafür gezahlt wurde. Wertersatz verlangen wir nicht.
|
||||
|
||||
**Kündigung**
|
||||
|
||||
- Jederzeit per Minus oder über „Verträge hier kündigen“ mit der Auswahl „Nur den E-Mail-Zusatzspeicher“.
|
||||
- Der Zusatzspeicher endet automatisch mit dem Abo. Bei einem Wechsel ins Wartungs-Abo bleibt er unverändert.
|
||||
|
||||
### 3.5 Wechsel vom Hosting- ins Wartungs-Abo
|
||||
|
||||
- **Wer:** Kunden mit laufendem, bezahltem Hosting-Abo (Stripe-Status `active`). Nicht möglich ist es in der Wartezeit bis zum Leistungsbeginn und bei offener Zahlung.
|
||||
- **Wann:** jederzeit, auch während der Mindestlaufzeit des Hosting-Abos.
|
||||
- **Rechtlich:** Es ist ein neuer Vertrag über das Wartungs-Abo. Das Hosting-Abo endet mit dem Wechsel im gegenseitigen Einvernehmen.
|
||||
- **Bestellung:**
|
||||
- Direkt über dem Knopf steht eine Übersicht mit:
|
||||
- Wartungs-Abo 50,00 € pro Monat
|
||||
- Zusatzspeicher, falls gebucht
|
||||
- Gutschrift für die ungenutzten Hosting-Tage
|
||||
- heute fälliger Betrag (aus der Stripe-Vorschau)
|
||||
- neuer Abbuchungstag
|
||||
- Ende der neuen Mindestlaufzeit
|
||||
- Der Kunde stimmt den Vertragsbedingungen (Version 4) einschließlich der Auftragsverarbeitung zu.
|
||||
- Pflicht-Häkchen: Der Kunde verlangt ausdrücklich, dass wir sofort beginnen, und nimmt die Folge für den Wertersatz zur Kenntnis (§ 357a Abs. 2 BGB). Einen späteren Beginn bietet der Wechsel nicht an.
|
||||
- Knopf „Zahlungspflichtig bestellen“.
|
||||
- **Abrechnung:**
|
||||
- Es bleibt dasselbe Stripe-Abo, der Preis wechselt von Hosting auf Wartung.
|
||||
- Der Abbuchungstag wird der Wechseltag.
|
||||
- Die ungenutzten Hosting-Tage werden auf der sofort fälligen Rechnung gutgeschrieben.
|
||||
- **Leistung:** Sie beginnt sofort. Die erste Stunde Arbeitszeit wird gutgeschrieben, sobald die Wechsel-Rechnung bezahlt ist, danach monatlich.
|
||||
- **Mindestlaufzeit:** 12 Monate ab dem Wechseltag.
|
||||
- **Widerruf des Wechsels:**
|
||||
- Das Hosting-Abo läuft zu den bisherigen Bedingungen weiter, als hätte es den Wechsel nicht gegeben, einschließlich seiner ursprünglichen Mindestlaufzeit.
|
||||
- Wir erstatten den Mehrbetrag, abzüglich Wertersatz nach § 357a Abs. 2 BGB (anteiliger Mehrpreis bis zum Widerruf).
|
||||
- Den Preis in Stripe stellen wir von Hand zurück, wie heute bei Widerrufen.
|
||||
- **Rabatte und Guthaben:** Ein laufender Angebotsrabatt läuft bis zu seinem Ende weiter. Guthaben aus einer Übernahmegutschrift wird weiter verrechnet.
|
||||
|
||||
### 3.6 Wechsel vom Wartungs- ins Hosting-Abo
|
||||
|
||||
- Möglich erst nach Ablauf der Mindestlaufzeit des Wartungs-Abos, zum Ende eines Abrechnungsmonats. Der Kunde meldet den Wunsch in Textform (Chat oder E-Mail), einen Knopf im Portal gibt es dafür nicht.
|
||||
- Voraussetzung ist eine statische Website (3.2). Vorher legt der Kunde fest, welches Postfach bleibt. Die anderen exportieren wir auf Wunsch.
|
||||
- Es beginnt keine neue Mindestlaufzeit, das Hosting-Abo ist danach monatlich kündbar.
|
||||
- Nicht genutzte Arbeitszeit verfällt mit dem Wechsel, wie bei Vertragsende.
|
||||
- Umsetzung von Hand: In Stripe wechselt der Preis zum Ende des Abrechnungsmonats auf Hosting, ohne anteilige Verrechnung. Der Kunde bekommt eine Bestätigungsmail.
|
||||
|
||||
## 4. Kundenportal
|
||||
|
||||
### 4.1 Navigation
|
||||
|
||||
- **Menüpunkt „Verträge“:** Er steht am Desktop in der Seitenleiste und in der App-Ansicht in der Tab-Leiste und ersetzt den Tab „Wartung“.
|
||||
- Hash `#vertraege`. Alte Links mit `#wartung` und `#abo` führen dorthin, `#abo` steht etwa in den Angebots-Mails.
|
||||
- **Seitenleisten-Karte:** „Ihre Wartung“ heißt künftig „Ihr Vertrag“. Sie zeigt:
|
||||
- den Produktnamen
|
||||
- die verfügbare Arbeitszeit, nur beim Wartungs-Abo
|
||||
- die nächste Abbuchung
|
||||
- die Hinweise wie heute (Zahlungsproblem, Widerrufsfrist, Übernahmegutschrift)
|
||||
- **Konto-Menü, Gruppe „Verträge“:**
|
||||
- Neuer erster Eintrag „Mein Vertrag“, er führt zu `#vertraege`.
|
||||
- „Vertragsbedingungen“ öffnet die Fassung, der der Kunde zugestimmt hat.
|
||||
- Die übrigen Einträge bleiben: „Abo verwalten & Rechnungen“, „Verträge hier kündigen“, „Vertrag widerrufen“.
|
||||
|
||||
### 4.2 Ansicht „Verträge“
|
||||
|
||||
Oben steht **Mein Vertrag**, wenn ein Abo läuft oder beendet ist:
|
||||
|
||||
- Produkt, Monatspreis einschließlich Zusatzspeicher und Status (gekündigt, Zahlungsproblem)
|
||||
- nächste Abbuchung mit Betrag und Hinweis zur Laufzeit („Mindestlaufzeit bis …“)
|
||||
- nur beim Wartungs-Abo: das Stundenkonto als Unterseite wie heute
|
||||
- E-Mail-Speicher mit Plus und Minus (4.3) und dem Knopf „Postfach anfragen“
|
||||
- Unterlagen: Vertragsbedingungen in der zugestimmten Fassung (PDF) und Rechnungen (Stripe-Kundenportal)
|
||||
- „Übernahmegutschrift beantragen“
|
||||
- während einer laufenden Widerrufsfrist hervorgehoben „Vertrag widerrufen · bis TT.MM.“ (§ 356a BGB). Das gilt auch für Wechsel und Zusatzspeicher innerhalb ihrer Frist.
|
||||
- bei einem Zahlungsproblem „Zahlungsart aktualisieren“
|
||||
|
||||
Darunter:
|
||||
|
||||
- **Hosting-Kunden:** eine Karte „Zum Wartungs-Abo wechseln“ mit den zusätzlichen Leistungen und dem Knopf.
|
||||
- **Ohne laufendes Abo:** beide Abos nebeneinander, jeweils mit „Abo abschließen“ und eigener Bestellseite (`#bestellen-hosting`, `#bestellen-wartung`). Persönliche Angebote erscheinen bei dem Abo, für das sie gelten.
|
||||
|
||||
### 4.3 Zusatzspeicher bedienen
|
||||
|
||||
```
|
||||
E-Mail-Speicher 5 GB inklusive
|
||||
Zusatzspeicher [ − ] 2 [ + ] × 5 GB = 15 GB gesamt
|
||||
+ 2,00 € im Monat
|
||||
[ Zahlungspflichtig bestellen ]
|
||||
```
|
||||
|
||||
- Der Knopf erscheint erst nach einer Änderung.
|
||||
- Mehr als bisher: Es folgt die Übersicht aus 3.4 und der Knopf „Zahlungspflichtig bestellen“.
|
||||
- Weniger als bisher: Es folgt der Hinweis auf das Monatsende und der Knopf „Speichern“.
|
||||
- Solange eine Erhöhung noch nicht eingerichtet ist, steht dort „wird eingerichtet“. Bei einer geplanten Reduzierung steht dort „ab TT.MM. X GB“.
|
||||
- Plus und Minus gehen nur bei Status `active`, also nicht in der Wartezeit bis zum Leistungsbeginn und nicht bei einem Zahlungsproblem.
|
||||
|
||||
### 4.4 Bestellseiten
|
||||
|
||||
- **Neuabschluss:**
|
||||
- Der Ablauf bleibt wie heute:
|
||||
- Übersicht direkt über dem Knopf
|
||||
- Zustimmung einschließlich Auftragsverarbeitung
|
||||
- Wahl zwischen sofortigem Beginn und Beginn nach der Widerrufsfrist
|
||||
- „Zahlungspflichtig bestellen“, danach Stripe Checkout
|
||||
- Neu ist, dass jedes Produkt seine eigene Übersicht, seinen Preis und seinen Stripe-Hinweistext bekommt.
|
||||
- **Wechsel:**
|
||||
- Eigene Seite `#wechsel` nach 3.5, ohne Stripe Checkout. Belastet wird die hinterlegte Zahlungsart.
|
||||
- Verlangt die Bank eine Bestätigung (3-D Secure), leitet das Portal auf die Stripe-Zahlungsseite dieser Rechnung weiter.
|
||||
|
||||
### 4.5 Öffentliche Formulare ohne Login
|
||||
|
||||
- **`kuendigen.html`:** Statt des festen „WEBklar Wartungs-Abo“ wählt der Kunde zwischen zwei Möglichkeiten (§ 312k Abs. 3 BGB verlangt eine eindeutige Bezeichnung des Vertrags):
|
||||
- „Mein Abo (Hosting- oder Wartungs-Abo, mit Zusatzspeicher)“
|
||||
- „Nur den E-Mail-Zusatzspeicher“
|
||||
|
||||
Die Bestätigung nennt das tatsächliche Abo.
|
||||
- **`widerrufen.html`:** Der Kunde wählt die Bestellung aus (§ 356a BGB):
|
||||
- „Abschluss meines Abos“
|
||||
- „Wechsel ins Wartungs-Abo“
|
||||
- „E-Mail-Zusatzspeicher“
|
||||
- **Server:** Er ordnet die Erklärung wie heute über die E-Mail-Adresse zu. Die Auswahl bestimmt, was gekündigt oder widerrufen wird.
|
||||
|
||||
## 5. Stripe
|
||||
|
||||
Produkte und Preise (monatlich, EUR, `tax_behavior: inclusive` wie heute):
|
||||
|
||||
| Produkt | Preis | lookup_key |
|
||||
|---|---|---|
|
||||
| WEBklar Wartungs-Abo (besteht) | 50,00 € | `webklar_wartung_monatlich_5000` |
|
||||
| WEBklar Hosting-Abo (neu) | 15,00 € | `webklar_hosting_monatlich_1500` |
|
||||
| WEBklar E-Mail-Zusatzspeicher 5 GB (neu) | 1,00 € je Stück | `webklar_mailspeicher_5gb_monatlich_100` |
|
||||
|
||||
- **Beschreibung des Wartungs-Produkts:** Sie wird in Stripe auf Version 4 geändert („beliebig viele Postfächer, zusammen 5 GB“). Der Code legt Produkte nur einmal an, deshalb geht das per Skript oder im Stripe-Dashboard.
|
||||
- **Aufbau:** ein Stripe-Abo je Kunde mit zwei Positionen, dem Abo-Preis (Hosting oder Wartung) und optional dem Zusatzspeicher mit Stückzahl.
|
||||
- **Aufrufe:**
|
||||
- Plus: `subscriptions.update` mit der neuen Stückzahl und `proration_behavior: create_prorations`. Bis zur schon bezahlten Stückzahl gilt `none`, notfalls in zwei Schritten.
|
||||
- Minus: `proration_behavior: none`.
|
||||
- Wechsel: Preis der Abo-Position tauschen mit `billing_cycle_anchor: now` und `proration_behavior: create_prorations`, dabei dasselbe `proration_date` wie in der Vorschau.
|
||||
- Den Betrag zeigen wir vorher jeweils mit `invoices.createPreview` an.
|
||||
- **Stripe-Kundenportal:** Die Überschrift wird „WEBklar – Abo verwalten“. Tarif- und Mengenänderungen bleiben dort aus, weil Stripe unsere Mindestlaufzeiten und Bestellschritte nicht kennt. Die Kündigung dort bleibt ebenfalls aus.
|
||||
- **Checkout-Hinweistext** (`custom_text`): je Produkt mit Preis und Mindestlaufzeit, statt fest „50,00 € … 12 Monate“.
|
||||
|
||||
## 6. Daten (Appwrite, woms-database)
|
||||
|
||||
**`subscriptions`** (ein Dokument je Stripe-Abo) bekommt neue Felder:
|
||||
|
||||
- `productKey`: `hosting` oder `wartung`. Alte Dokumente ohne Wert gelten als `wartung`.
|
||||
- `termStartAt`: Beginn der laufenden Mindestlaufzeit. Bei einem Neuabschluss ist das der Leistungsbeginn, bei einem Wechsel der Wechseltag.
|
||||
- `storageUnits`: gebuchte Pakete Zusatzspeicher.
|
||||
- `storagePaidUnits` und `storagePaidPeriodEnd`: Pakete, die für den laufenden Monat schon bezahlt sind.
|
||||
- `planKey` enthält künftig den lookup_key des tatsächlichen Abo-Preises.
|
||||
|
||||
**Neue Collection `contractEvents`.** Sie weist jede Bestellung und jede Änderung nach:
|
||||
|
||||
- Felder:
|
||||
- `customerId`, `subscriptionId`
|
||||
- `type`: `abschluss`, `wechsel`, `speicher`, `kuendigung` oder `widerruf`
|
||||
- `productKey`
|
||||
- `details`: JSON mit Stückzahl alt und neu, Beträgen und Wirksamkeitsdatum
|
||||
- `termsVersion`, `consentAt`, `consentIp`, `consentUserAgent`, `earlyStartConsentAt`
|
||||
- `status`: `offen`, `erledigt` oder `widerrufen`
|
||||
- `dueAt`, `doneAt`, `doneBy`, `confirmationSentAt`
|
||||
- Die offenen `speicher`-Ereignisse sind die Aufgabenliste für konsoleH.
|
||||
- Aus diesen Ereignissen ergibt sich die Widerrufsfrist je Bestellung. Heute zählt nur `startedAt`.
|
||||
- Aufbewahrt werden sie wie die bisherigen Zustimmungsdaten: drei Jahre nach Vertragsende (Datenschutzerklärung, Abschnitt 7).
|
||||
|
||||
**`aboOffers`** bekommt ein Feld `productKey`. Alte Angebote gelten als `wartung`. Der Normalpreis kommt aus dem Produktkatalog statt fest 50 €.
|
||||
|
||||
Einrichtung: `scripts/setup-abo-collections.mjs` wird erweitert.
|
||||
|
||||
## 7. Server (Kundenportal)
|
||||
|
||||
**`server/config.js`**
|
||||
|
||||
- Neuer Produktkatalog mit `products.hosting` und `products.wartung`. Jeder Eintrag enthält:
|
||||
- Name, Preis und lookup_key
|
||||
- Stripe-Beschreibung
|
||||
- Leistungsliste für die Oberfläche
|
||||
- Mindestlaufzeit und Minuten pro Monat (0 bzw. 60)
|
||||
- Neu ist auch `mailStorage` mit lookup_key, 100 Cent, 5 GB und höchstens 10 Paketen.
|
||||
- `abo.termsVersion` bleibt ein einziger Wert, weil es eine gemeinsame Fassung gibt (8.1).
|
||||
|
||||
**`server/services/stripeBilling.js`**
|
||||
|
||||
- Preise werden je Produkt angelegt oder gefunden.
|
||||
- `syncSubscription` liest Abo-Preis und Zusatzspeicher aus den Positionen.
|
||||
- Arbeitszeit gibt es nur, wenn die bezahlte Rechnung eine Wartungs-Position enthält, die keine anteilige Verrechnung ist und mehr als 0 € kostet. Heute bekommt jede bezahlte Abo-Rechnung eine Stunde.
|
||||
- Checkout je Produkt. Die Sperre „höchstens ein laufendes Abo je Kunde“ bleibt.
|
||||
- Neu kommen Wechsel, Zusatzspeicher und die Vorschauen dazu.
|
||||
- Die Mindestlaufzeit zählt ab `termStartAt`.
|
||||
|
||||
**`server/routes/abo.js`**
|
||||
|
||||
- `GET /api/abo` liefert:
|
||||
- den Produktkatalog
|
||||
- `productKey` und Speicherstand
|
||||
- ob ein Wechsel möglich ist
|
||||
- das Stundenkonto, aber nur beim Wartungs-Abo
|
||||
- Neue Aufrufe:
|
||||
- `POST /api/abo/checkout` mit `productKey`
|
||||
- `POST /api/abo/switch/preview` und `POST /api/abo/switch`
|
||||
- `POST /api/abo/storage/preview` und `POST /api/abo/storage`
|
||||
- Öffentliche Kündigung und öffentlicher Widerruf bekommen das Feld `contract`.
|
||||
|
||||
**Mails** (`server/services/mailer.js`): produktneutral, siehe 9.
|
||||
|
||||
**Admin** (`public/admin.html`, `public/admin.js`, Routen in `server/routes/portalAdmin.js`)
|
||||
|
||||
- Die Abo-Anzeige nennt Produkt und Speicher.
|
||||
- Neuer Reiter „E-Mail-Speicher“ mit:
|
||||
- offenen Aufgaben (einrichten, reduzieren zum Datum)
|
||||
- Knopf „Erledigt“
|
||||
- Summe der vergebenen Kontingente
|
||||
- Abo-Angebote bekommen eine Produktauswahl.
|
||||
|
||||
**Ticketsystem (WOMS):** Der Schalter „aufs Stundenkonto“ im Arbeitsnachweis erscheint nur bei Kunden mit laufendem Wartungs-Abo.
|
||||
|
||||
## 8. Rechtstexte
|
||||
|
||||
### 8.1 Aufbau
|
||||
|
||||
Eine gemeinsame Fassung „Vertragsbedingungen für die WEBklar-Abos“ in Version 4:
|
||||
|
||||
- allgemeiner Teil: Anbieter, Geltungsbereich, Vertragsschluss, Preise und Zahlung, Laufzeit und Kündigung, Wechsel, Zusatzspeicher, Vertragsende, Mängel, Haftung, Datenschutz, Änderungen, Schlussbestimmungen
|
||||
- Leistungsbeschreibung A (Hosting-Abo) und Leistungsbeschreibung B (Wartungs-Abo)
|
||||
- Widerrufsbelehrung nach dem gesetzlichen Muster (Wortlaut unverändert) mit Muster-Widerrufsformular
|
||||
- Anlage 1 Auftragsverarbeitungsvertrag, Anlage 2 TOM, Anlage 3 Unterauftragsverarbeiter, jeweils für beide Abos
|
||||
|
||||
Weitere Festlegungen:
|
||||
|
||||
- **Adresse:** Sie bleibt `project.webklar.com/abo-bedingungen.html`, weil sie in Mails, auf der Website und im Stripe-Kundenportal steht.
|
||||
- **PDF:** Das neue heißt `WEBklar-Abo-Vertragsunterlagen.pdf`.
|
||||
- **Version 3:** Sie wird archiviert (HTML und PDF unter `vertragsunterlagen/v3/`). `WEBklar-Wartungs-Abo-Vertragsunterlagen.pdf` bleibt als Fassung 3 abrufbar, denn § 2 sagt zu, dass wir den Vertragstext speichern.
|
||||
- **Zustimmung:** Gespeichert werden Version und Produkt.
|
||||
- **Versionsdatum:** Es ist der Tag der Freigabe in der Rechtsrunde.
|
||||
|
||||
### 8.2 Änderungen gegenüber Version 3
|
||||
|
||||
- **„Das Wichtigste auf einen Blick“:** beide Abos mit Preisen und Zusatzspeicher.
|
||||
- **Geltungsbereich:** beide Abos, mit Vorrang vor den AGB einschließlich Leistungsmodul C (jährliches Hosting).
|
||||
- **Vertragsschluss:**
|
||||
- Der Bestellweg führt über „Verträge“.
|
||||
- Wechsel und Zusatzspeicher sind eigene Bestellungen: Knopf, Vertragsschluss mit dem Klick, hinterlegte Zahlungsart, Bestätigungsmail.
|
||||
- **Leistungen:**
|
||||
- Aufteilung in A und B.
|
||||
- Postfächer: 1 bzw. beliebig viele, zusammen 5 GB, Aufteilung, Einrichtung auf Anfrage, volle Postfächer, faire Nutzung, Zugangsdaten nur an den Kunden.
|
||||
- Das Hosting-Abo gilt nur für statische Websites.
|
||||
- **Stundenkontingent:** nur im Wartungs-Abo. Die erste Stunde gibt es beim Wechsel.
|
||||
- **Pflichten des Kunden:**
|
||||
- Zugangsdaten aller Postfächer geheim halten.
|
||||
- Weitergabe an Beschäftigte in eigener Verantwortung.
|
||||
- Im Hosting-Abo keine dynamischen Inhalte ohne Wechsel.
|
||||
- **Preise und Zahlung:**
|
||||
- 15 €, 50 € und Zusatzspeicher.
|
||||
- Anteilige Berechnung beim Plus.
|
||||
- Abrechnung beim Wechsel.
|
||||
- Eine Sperre ist ab Verzug mit zwei Monatsgebühren möglich, statt wie bisher ab „100 €“.
|
||||
- **Laufzeit und Kündigung:**
|
||||
- Mindestlaufzeiten wie oben. Ein Wechsel startet 12 neue Monate.
|
||||
- Rückwechsel nach 3.6. Der Zusatzspeicher ist monatlich kündbar.
|
||||
- „Verträge hier kündigen“ bekommt die Auswahl.
|
||||
- **Widerruf:** Die Hinweise stehen außerhalb der Musterbelehrung:
|
||||
- Das Widerrufsrecht gilt je Bestellung.
|
||||
- Folgen beim Widerruf eines Wechsels.
|
||||
- Beim Zusatzspeicher kein Wertersatz.
|
||||
- **Vertragsende:** Export aller Postfächer.
|
||||
- **Auftragsverarbeitung:**
|
||||
- Gegenstand sind beide Abos, Datenart „Inhalte der Postfächer“.
|
||||
- Die Nutzer der Postfächer zählen zu den Betroffenen.
|
||||
- Bei Widerspruch gegen einen Unterauftragsverarbeiter wird „das Abo“ kündbar.
|
||||
- **TOM:** „Automatische Überwachung der Erreichbarkeit“ darf nur drinstehen, wenn sie läuft (10).
|
||||
|
||||
### 8.3 Weitere Texte
|
||||
|
||||
| Text | Änderung |
|
||||
|---|---|
|
||||
| Datenschutzerklärung (`public/datenschutz.html` + PDF) | Abschnitt 2 „unsere Abos“. Abschnitt 7 heißt „Abos und Zahlung über Stripe“, Nachweisdaten auch bei Wechsel und Zusatzspeicher. Abschnitt 8: Postfächer „im Rahmen unserer Abos“. Abschnitt 9: „für die Abos über Stripe“. Neues Stand-Datum |
|
||||
| Kündigungs- und Widerrufsseite | Auswahl nach 4.5, Bestätigungsseite (`legal-form.js`) |
|
||||
| Bedingungen der Übernahmegutschrift | gelten für beide Abos, `takeover.conditionsVersion` erhöhen |
|
||||
| AGB webklar.com, Leistungsmodul C | Hosting gibt es als Hosting-Abo nach den Abo-Bedingungen. Bestehende Jahresverträge behalten ihre Fassung. Nr. 9 („jährlich im Voraus“) anpassen |
|
||||
| Website | `/wartungs-abo` aktualisieren, neue Seite `/hosting-abo`, Link im Footer |
|
||||
| Leitfaden Empfehlungsgeber (+ PDF) | beide Abos |
|
||||
| Stripe | Produktbeschreibungen, Checkout-Hinweise |
|
||||
|
||||
## 9. Mails
|
||||
|
||||
Diese Änderungen gehören in die laufende Überarbeitung aller Portal-Mails. Alle Texte werden produktneutral, Produktname und Leistungen kommen aus dem Katalog.
|
||||
|
||||
| Mail | Änderung |
|
||||
|---|---|
|
||||
| K01 Vertragsbestätigung | je Produkt, mit PDF der zugestimmten Fassung |
|
||||
| K02 Kündigungsbestätigung (Stripe) | Produktname. Der Hinweis auf „Abo verwalten“ ist falsch, weil die Kündigung dort aus ist |
|
||||
| K03 Eingangsbestätigung Kündigung | nennt den gekündigten Vertrag (Abo oder Zusatzspeicher) |
|
||||
| K04 Eingangsbestätigung Widerruf | nennt die widerrufene Bestellung |
|
||||
| K05, K06 Angebote | Produkt des Angebots, Normalpreis aus dem Katalog |
|
||||
| K07–K10 Übernahmegutschrift | „Ihr Abo“ statt „Wartungs-Abo“ |
|
||||
| neu: Wechsel ins Wartungs-Abo bestätigt | mit PDF, Widerrufsbelehrung und neuer Mindestlaufzeit |
|
||||
| neu: Zusatzspeicher bestellt oder geändert | Zusammenfassung und Wirksamkeitsdatum, beim Plus mit PDF |
|
||||
| T02, T05–T09 | Produktname |
|
||||
| neu intern: Wechsel | Kunde und Beträge |
|
||||
| neu intern: Speicher-Aufgabe | Kunde, Postfächer, neue Größe, Fälligkeit |
|
||||
|
||||
## 10. Voraussetzungen vor dem Start
|
||||
|
||||
- Die Überwachung der Erreichbarkeit läuft. Beide Abos und die TOM sagen sie zu, auf dem Server ist sie heute nicht zu finden.
|
||||
- Unser Hetzner-Paket ist groß genug. Welches Paket wir haben, ist noch zu prüfen.
|
||||
- Die Rechtsrunde ist abgeschlossen: Version 4, Datenschutz, AGB, Formulare.
|
||||
- Die produktneutralen Mails sind fertig.
|
||||
- Die Stripe-Produkte sind angelegt. Ein Live-Check läuft nur mit ausdrücklicher Freigabe.
|
||||
|
||||
## 11. Reihenfolge
|
||||
|
||||
Die Umsetzung wird in zwei Pläne geteilt.
|
||||
|
||||
1. **Rechtstexte als Entwurf für die Rechtsrunde.** Das läuft parallel zu Plan 1.
|
||||
2. **Plan 1, unsichtbare Vorarbeiten.** Sie können vorher live gehen, ohne sichtbare Änderung und ohne neuen Text:
|
||||
- Produktkatalog
|
||||
- `planKey` und `productKey` aus Stripe
|
||||
- Stunde nur fürs Wartungs-Abo
|
||||
- Tests
|
||||
3. **Plan 2, sichtbarer Teil.** Er geht gemeinsam mit Version 4 live und umfasst:
|
||||
- Ansicht „Verträge“, Bestellseiten, Wechsel und Zusatzspeicher
|
||||
- Formulare, Admin und Mails
|
||||
- Website, AGB, Leitfaden und WOMS
|
||||
|
||||
Die Ansicht „Verträge“ kann nicht früher live gehen, weil § 2 der Version 3 den heutigen Bestellweg beschreibt.
|
||||
4. **Start:**
|
||||
- Stripe-Produkte anlegen
|
||||
- `termsVersion` auf Version 4 setzen, PDFs erzeugen
|
||||
- Portal und Website ausliefern und live prüfen
|
||||
|
||||
## 12. Tests
|
||||
|
||||
- **Unit-Tests** (`npm test`):
|
||||
- Produktkatalog
|
||||
- Stundengutschrift: Hosting-Rechnung ergibt keine Stunde, Wartungs-Rechnung 60 Minuten, Wechsel-Rechnung 60 Minuten, reine Speicheränderung keine
|
||||
- Speicher-Abrechnung: Plus, Minus, erneutes Plus im selben Monat
|
||||
- Mindestlaufzeit nach einem Wechsel
|
||||
- Widerrufsfrist je Bestellung
|
||||
- Zuordnung von Kündigung und Widerruf
|
||||
- **Server-Ablauf** mit Appwrite-Mock, SMTP-Sink und Fake-Stripe (Aufbau wie bei den bisherigen Tests):
|
||||
- Neuabschluss je Produkt
|
||||
- Wechsel mit Vorschau
|
||||
- Plus und Minus
|
||||
- Webhooks mit mehreren Positionen
|
||||
- öffentliche Kündigung und öffentlicher Widerruf
|
||||
- alle Mails
|
||||
- **Oberfläche** mit Playwright und Fixtures:
|
||||
- „Verträge“ in allen Zuständen: kein Abo, Hosting, Wartung, gekündigt, Zahlungsproblem, Widerrufsfrist, Speicher in Einrichtung, Reduzierung geplant
|
||||
- jeweils auf Handy und Desktop
|
||||
- Pixelvergleich der übrigen Ansichten
|
||||
- **Textprüfung:** Alle Dateien im Anhang nach „1 E-Mail-Postfach“ und nach festem „Wartungs-Abo“ durchsuchen.
|
||||
|
||||
## 13. Offene Punkte zur Durchsicht
|
||||
|
||||
Vorbelegt mit meinem Vorschlag, bitte bestätigen oder ändern:
|
||||
|
||||
1. Die Übernahmegutschrift gibt es auch fürs Hosting-Abo.
|
||||
2. Den Wechsel gibt es nur mit sofortigem Beginn (Pflicht-Häkchen).
|
||||
3. Zusatzspeicher ohne Häkchen für den Sofortbeginn. Bei Widerruf erstatten wir alles.
|
||||
4. Laufende Angebotsrabatte laufen beim Wechsel weiter.
|
||||
5. Rückwechsel von Wartung zu Hosting nur auf Anfrage nach der Mindestlaufzeit. Nicht genutzte Stunden verfallen.
|
||||
6. Höchstens 10 Pakete Zusatzspeicher je Kunde.
|
||||
7. Kontaktformulare auf statischen Seiten nur über einen Dienst, den wir zentral betreiben. Zu klären: Wie laufen Formulare heute auf Kundenseiten?
|
||||
8. Bestandskunden mit Version 3 behalten ihre Fassung.
|
||||
- Beliebig viele Postfächer bieten wir ihnen kostenlos per Mail an.
|
||||
- Zusatzspeicher können sie buchen, wenn sie dabei den Regeln zum Zusatzspeicher zustimmen.
|
||||
9. Abo-Start mit Version 3 jetzt oder erst mit Version 4: Das hängt nicht von diesem Konzept ab.
|
||||
|
||||
Außerdem brauche ich Angaben zu:
|
||||
|
||||
- unserem Hetzner-Paket
|
||||
- dem Werkzeug für die Überwachung der Erreichbarkeit, falls schon eins läuft
|
||||
|
||||
## Anhang: Dateiliste
|
||||
|
||||
**Kundenportal** (`knso/Webklar-Kundenbereich`)
|
||||
|
||||
- Rechtstexte:
|
||||
- `public/abo-bedingungen.html` und `public/WEBklar-Wartungs-Abo-Vertragsunterlagen.pdf`
|
||||
- `scripts/build-legal-pdfs.sh`
|
||||
- `public/datenschutz.html` und `docs/WEBklar-Datenschutzerklaerung.pdf`
|
||||
- Formulare: `public/kuendigen.html`, `public/widerrufen.html`, `public/legal-form.js`
|
||||
- Oberfläche: `public/dashboard.html`, `public/app.js`, `public/kundenbereich.css`
|
||||
- Admin: `public/admin.html`, `public/admin.js`
|
||||
- Server:
|
||||
- `server/config.js`
|
||||
- `server/services/stripeBilling.js`, `server/services/offers.js`, `server/services/takeoverCredits.js`, `server/services/mailer.js`, `server/services/hourLedger.js`
|
||||
- `server/routes/abo.js`, `server/routes/offers.js`, `server/routes/portalAdmin.js`
|
||||
- Einrichtung: `scripts/setup-abo-collections.mjs`
|
||||
- Leitfaden: `docs/leitfaden-empfehlungsgeber.html` (+ PDF)
|
||||
- Tests: neue Dateien unter `test/`
|
||||
|
||||
**Website** (`JUSN/Webklar`)
|
||||
|
||||
- `src/pages/WartungsAbo.tsx`
|
||||
- neu: `src/pages/HostingAbo.tsx`
|
||||
- `src/App.tsx`, `src/components/Footer.tsx`, `src/pages/AGB.tsx`
|
||||
|
||||
**Ticketsystem** (`JUSN/tickte-system`)
|
||||
|
||||
- `src/components/CreateWorksheetModal.jsx`, `src/components/WorksheetList.jsx`, `src/components/TicketRow.jsx`
|
||||
|
||||
**Außerhalb von Git**
|
||||
|
||||
- Stripe: Produkte, Preise, Beschreibung, Konfiguration des Kundenportals
|
||||
- Hetzner konsoleH: Paket, Postfach-Grenzen
|
||||
- Überwachung der Erreichbarkeit
|
||||
Reference in new issue
Block a user