diff --git a/docs/umschalten-kundenansicht.md b/docs/umschalten-kundenansicht.md index d8c8990..36e9392 100644 --- a/docs/umschalten-kundenansicht.md +++ b/docs/umschalten-kundenansicht.md @@ -3,16 +3,16 @@ Anleitung für Inhaber und Controller, Reihenfolge laut Spec 5.10: Kundenart setzen, Fassung 6 hochgeladen, WOMS-Pflichtfeld live, dann `KUNDENANSICHT_NEU=on`. Bis zum Schalter bleibt für Kunden alles wie heute. Der Rückweg heißt `off` und gilt bis Abschnitt 8. - **Stop: Inhaber-OK nötig** heißt: Ein Agent führt den Schritt nie von sich aus aus, er meldet dir, was bereitliegt. Pushen tust nur du, nur fast-forward, nie `--force`. -- Befehle mit `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kundenansicht` laufen im Worktree, der Teil A trägt (anderer Worktree: Pfad ersetzen). Protokolle liegen in `/root/reports/kundenansicht-neu-2026-10-15/umschalten`. +- Befehle mit `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kn-p10` laufen im Worktree, der Teil A trägt (anderer Worktree: Pfad ersetzen). Protokolle liegen in `/root/reports/kundenansicht-neu-2026-10-15/umschalten`. - Die `.env` wird nie ausgegeben: nur `command grep -a -n '^=' /home/webklar/apps/.env` und `sed -i` auf genau eine Zeile, vorher eine Sicherung. Neu gestartet wird nur mit `docker compose up -d --no-deps kundenbereich-server`, nie `preview-portal`. ## 1. Voraussetzungen 1. Du hast Vorschau, Pilot und Fassung 6 freigegeben und ausdrücklich „umschalten“ gesagt. Der Hauptzweig des Portals ist nach Phase E fertig (P0 bis P8 und die freigegebene Rechtsrunde), `WORTLAUT_STATUS` steht auf `'freigegeben'`; das WOMS-Paket P9 prüft Abschnitt 4. -2. Teil A prüfen und taggen (erwartet: `fail 0`, Status leer): `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kundenansicht && timeout 900 nice -n 10 node --max-old-space-size=1024 --test --test-concurrency=1 test/kundenartBestand.test.js test/knUmschaltSeiten.test.js test/knUmschaltNachpruefung.test.js test/kaufBestandPruefen.test.js test/knUmschaltCheckliste.test.js test/kundenansichtDashboard.test.js test/adminPanelGone.test.js test/legalDocs.test.js && git status --short && git tag kn-p10-a` -3. **Stop: Inhaber-OK nötig** (Push, Teil A ändert für Kunden nichts, solange der Schalter nicht `on` ist): `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kundenansicht && git fetch origin && git log --oneline origin/main..kn-p10-a`, dann `git push origin 'kn-p10-a^{commit}:refs/heads/main'`. -4. Deploy prüfen (beide Kurzformen gleich, sonst zwei Minuten warten; im Log kein `Unbehandelter Fehler`): `git -C /home/webklar/apps/kundenbereich.webklar.com/build rev-parse --short HEAD && git -C /home/webklar/apps/kundenbereich.webklar.com/dev-kundenansicht rev-parse --short kn-p10-a && docker logs --since 5m webklar-kundenbereich-server 2>&1 | tail -5` -5. Ruhezustand (Exit 0, alle Zeilen `ok`): `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kundenansicht && node scripts/umschalten-nachpruefung.mjs https://project.webklar.com --erwartet=alt` +2. Teil A prüfen und taggen (erwartet: `fail 0`, Status leer): `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kn-p10 && timeout 900 nice -n 10 node --max-old-space-size=1024 --test --test-concurrency=1 test/kundenartBestand.test.js test/knUmschaltSeiten.test.js test/knUmschaltNachpruefung.test.js test/kaufBestandPruefen.test.js test/knUmschaltCheckliste.test.js test/kundenansichtDashboard.test.js test/adminPanelGone.test.js test/legalDocs.test.js && git status --short && git tag kn-p10-a` +3. **Stop: Inhaber-OK nötig** (Push, Teil A ändert für Kunden nichts, solange der Schalter nicht `on` ist): `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kn-p10 && git fetch origin && git log --oneline origin/main..kn-p10-a`, dann `git push origin 'kn-p10-a^{commit}:refs/heads/main'`. Fragt git nach dem Passwort (HTTP 401), pushst du wie bisher mit `/root/reports/workers-2026-10-16/push-mit-zugang.sh`. +4. Deploy prüfen (beide Kurzformen gleich, sonst zwei Minuten warten; im Log kein `Unbehandelter Fehler`): `git -C /home/webklar/apps/kundenbereich.webklar.com/build rev-parse --short HEAD && git -C /home/webklar/apps/kundenbereich.webklar.com/dev-kn-p10 rev-parse --short kn-p10-a && docker logs --since 5m webklar-kundenbereich-server 2>&1 | tail -5` +5. Ruhezustand (Exit 0, alle Zeilen `ok`): `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kn-p10 && node scripts/umschalten-nachpruefung.mjs https://project.webklar.com --erwartet=alt` ## 2. Kundenart der Bestandseinträge setzen @@ -24,8 +24,8 @@ Anleitung für Inhaber und Controller, Reihenfolge laut Spec 5.10: Kundenart set ## 3. Fassung 6 hochgeladen -1. Schlüssel, Bucket und Karten lesen (nur lesend, Schlüssel `/root/.appwrite-rechtliches.key` stellst du bereit; jede fehlende Karte ist ein Stopp): `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kundenansicht && node scripts/rechtliches-hochladen.mjs --probe` -2. Aktuelle Version prüfen (nur lesend): `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kundenansicht && node scripts/rechtliches-hochladen.mjs --pruefen | command grep -a abo-bedingungen`. Erwartet `ok abo-bedingungen`, also eine aktuelle Version, deren `source` auf `:public/neu/rechtliches/abo-bedingungen.html` endet. Die übrigen Zeilen betreffen die Funktionsunterlagen. +1. Schlüssel, Bucket und Karten lesen (nur lesend, Schlüssel `/root/.appwrite-rechtliches.key` stellst du bereit; jede fehlende Karte ist ein Stopp): `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kn-p10 && node scripts/rechtliches-hochladen.mjs --probe`. Gibt es den Schlüssel nicht, lädt der Controller die Fassung über die WOMS-Oberfläche in Chrome hoch (wie am 17.10.) und Schritt 2 entfällt; Schritt 3 gilt dann allein +2. Aktuelle Version prüfen (nur lesend): `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kn-p10 && node scripts/rechtliches-hochladen.mjs --pruefen | command grep -a abo-bedingungen`. Erwartet `ok abo-bedingungen`, also eine aktuelle Version, deren `source` auf `:public/neu/rechtliches/abo-bedingungen.html` endet. Die übrigen Zeilen betreffen die Funktionsunterlagen. 3. Du bestätigst in WOMS unter „Rechtliches“, dass die Karte `abo-bedingungen` die Fassung 6 trägt („Version 6 · Stand 28.10.2026“). Die WOMS-Nummer `vN` zählt Uploads und ist nicht die Fassung. 4. Fehlt sie, stoppt der Controller. **Stop: Inhaber-OK nötig:** Hochladen (Aufruf im Kopf von `scripts/rechtliches-hochladen.mjs`) nur auf deinen ausdrücklichen Auftrag. @@ -48,7 +48,7 @@ Anleitung für Inhaber und Controller, Reihenfolge laut Spec 5.10: Kundenart set ## 6. Nachprüfung -1. Seiten (Exit 0, alle Zeilen `ok`, einschließlich `/abo-bedingungen.html` mit `Version 6` und des PDFs): `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kundenansicht && node scripts/umschalten-nachpruefung.mjs https://project.webklar.com --erwartet=neu` +1. Seiten (Exit 0, alle Zeilen `ok`, einschließlich `/abo-bedingungen.html` mit `Version 6` und des PDFs): `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kn-p10 && node scripts/umschalten-nachpruefung.mjs https://project.webklar.com --erwartet=neu` 2. Routen (erwartet JSON mit `"authenticated":false`): `curl -s https://project.webklar.com/api/auth/me` 3. Login und Oberfläche, du mit zwei Konten (Betrieb und Pilot-Konto) auf Handy und Desktop: (a) `/login.html` ist weiß, die Anmeldung führt auf Website; (b) `#chat`, `#rechnungen`, `#wartung` und `#termine?bestellt=1&projekt=` landen am richtigen Ort mit erhaltener Query; (c) „Verträge kündigen“ und „Vertrag widerrufen“ liegen höchstens zwei Taps entfernt, beide Seiten öffnen weiß; (d) Funktionen zeigt „Meine/Entdecken“ ohne Preise, „Einschalten“ eines Betriebs hat kein Häkchen; (e) die Kundenansicht der Mitarbeiter (WOMS) zeigt die neue Oberfläche und sperrt Schreibaktionen. 4. Mails, optional: Probekauf mit dem Testkonto aus `ABO_TEST_EMAILS` (0,50 €). Erwartet: K01 an den Kunden und T02 ans Team kommen an, der Anhang `WEBklar-Abo-Vertragsunterlagen.pdf` ist Fassung 6, in `featureConsents` steht eine Zeile mit `featureKey` `abo` und der Kundenart. **Stop: Inhaber-OK nötig** für Kauf und Stornieren. @@ -60,17 +60,17 @@ Anleitung für Inhaber und Controller, Reihenfolge laut Spec 5.10: Kundenart set 1. Nur bei Fehler, und vorher informiert der Controller dich kurz. 2. `.env` zurück auf `off` und neu starten: `sed -i 's/^KUNDENANSICHT_NEU=.*/KUNDENANSICHT_NEU=off/' /home/webklar/apps/.env && cd /home/webklar/apps && docker compose up -d --no-deps kundenbereich-server` -3. Dann aus dem Worktree (erwartet Exit 0): `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kundenansicht && node scripts/umschalten-nachpruefung.mjs https://project.webklar.com --erwartet=alt` +3. Dann aus dem Worktree (erwartet Exit 0): `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kn-p10 && node scripts/umschalten-nachpruefung.mjs https://project.webklar.com --erwartet=alt` 4. Verträge, die unter Fassung 6 abgeschlossen wurden, bleiben gültig: Fassungstabelle und Archiv bleiben stehen. 5. Der Schalter ist der Rückweg nur bis zum Festschreiben (Abschnitt 8). ## 8. Danach: festschreiben und aufräumen -1. Offline-Seite (Tag `kn-p10-b`, Cache `kb-offline-v2`): erst nach dem Umschalten, sonst speichert der Service Worker die alte dunkle Seite erneut. **Stop: Inhaber-OK nötig:** `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kundenansicht && git push origin 'kn-p10-b^{commit}:refs/heads/main'`, danach `curl -s https://project.webklar.com/sw.js | command grep -a -c kb-offline-v2` (erwartet `1`). +1. Offline-Seite (Tag `kn-p10-b`, Cache `kb-offline-v2`): erst nach dem Umschalten, sonst speichert der Service Worker die alte dunkle Seite erneut. **Stop: Inhaber-OK nötig:** `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kn-p10 && git push origin 'kn-p10-b^{commit}:refs/heads/main'`, danach `curl -s https://project.webklar.com/sw.js | command grep -a -c kb-offline-v2` (erwartet `1`). 2. Beobachtungszeit aus Abschnitt 6 abwarten, dann sagst du „festschreiben“. 3. **Ab dem Festschreiben (Teil C, Tasks 14 bis 25 des Plans) gibt es kein Rückweg per Schalter:** `off` würde die alten Bestellseiten (Wortlaut Fassung 5) mit Fassung 6 als einziger geltender Fassung kombinieren. Fehler werden vorwärts korrigiert. -4. Vorher die Hashes prüfen; bei Abweichung stoppt der Agent: `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kundenansicht && sha256sum public/WEBklar-Abo-Vertragsunterlagen.pdf public/vertragsunterlagen/v5/WEBklar-Abo-Vertragsunterlagen.pdf public/neu/rechtliches/abo-bedingungen.html public/neu/rechtliches/WEBklar-Abo-Vertragsunterlagen.pdf && cat public/neu/rechtliches/WEBklar-Abo-Vertragsunterlagen.pdf.sha256 && command grep -a -c 'href="/neu/rechtliches/WEBklar-Abo-Vertragsunterlagen.pdf"' public/neu/rechtliches/abo-bedingungen.html && git status --short`. Erwartet: Zeile 1 gleich Zeile 2, Prüfsumme neben dem PDF gleich Zeile 3, Zahl der Entwurfslinks `1`, Status leer. +4. Vorher die Hashes prüfen; bei Abweichung stoppt der Agent: `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kn-p10 && sha256sum public/WEBklar-Abo-Vertragsunterlagen.pdf public/vertragsunterlagen/v5/WEBklar-Abo-Vertragsunterlagen.pdf public/neu/rechtliches/abo-bedingungen.html public/neu/rechtliches/WEBklar-Abo-Vertragsunterlagen.pdf && cat public/neu/rechtliches/WEBklar-Abo-Vertragsunterlagen.pdf.sha256 && command grep -a -c 'href="/neu/rechtliches/WEBklar-Abo-Vertragsunterlagen.pdf"' public/neu/rechtliches/abo-bedingungen.html && git status --short`. Erwartet: Zeile 1 gleich Zeile 2, Prüfsumme neben dem PDF gleich Zeile 3, Zahl der Entwurfslinks `1`, Status leer. 5. Festschreiben (Plan, Task 14): Seite und PDF wandern nach `public/`, `termsVersion` und `termsVersionNeu` werden eins, alle Pins laufen grün, Commit und Tag `kn-p10-c1`. Die Rechtstexte ändern sich dabei nie; schlägt eine Wortlaut-Assertion fehl, stoppt der Agent und meldet sie dir. -6. **Stop: Inhaber-OK nötig** (Push): `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kundenansicht && git push origin 'kn-p10-c1^{commit}:refs/heads/main'`. Prüfen (gleiche Kurzformen, Exit 0, `200`): `git -C /home/webklar/apps/kundenbereich.webklar.com/build rev-parse --short HEAD && cd /home/webklar/apps/kundenbereich.webklar.com/dev-kundenansicht && git rev-parse --short kn-p10-c1 && node scripts/umschalten-nachpruefung.mjs https://project.webklar.com --erwartet=neu && curl -s -o /dev/null -w '%{http_code}\n' https://project.webklar.com/vertragsunterlagen/v5/abo-bedingungen.html` +6. **Stop: Inhaber-OK nötig** (Push): `cd /home/webklar/apps/kundenbereich.webklar.com/dev-kn-p10 && git push origin 'kn-p10-c1^{commit}:refs/heads/main'`. Prüfen (gleiche Kurzformen, Exit 0, `200`): `git -C /home/webklar/apps/kundenbereich.webklar.com/build rev-parse --short HEAD && cd /home/webklar/apps/kundenbereich.webklar.com/dev-kn-p10 && git rev-parse --short kn-p10-c1 && node scripts/umschalten-nachpruefung.mjs https://project.webklar.com --erwartet=neu && curl -s -o /dev/null -w '%{http_code}\n' https://project.webklar.com/vertragsunterlagen/v5/abo-bedingungen.html` 7. Weiterleitung (erwartet `301 https://project.webklar.com/abo-bedingungen.html`): `curl -s -o /dev/null -w '%{http_code} %{redirect_url}\n' https://project.webklar.com/neu/rechtliches/abo-bedingungen.html`. Altvertrag: Ein Kunde mit Fassung 5 öffnet Verträge, Abo, „Bedingungen“ und bekommt das Archiv v5, nicht Fassung 6. Logs wie in Abschnitt 6, Schritt 5. 8. Danach folgen im Plan das Lösen des Logins von `app.js` und das Löschen der alten Oberfläche (Tasks 16 bis 25), jeweils mit eigenem Tag und eigenem OK von dir.