Files
Webklar-Kundenbereich/docs/umschalten-kundenansicht.md
T

13 KiB

Umschalten auf die neue Kundenansicht

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.
  • Die .env wird nie ausgegeben: nur command grep -a -n '^<SCHLÜSSEL>=' /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. Kundenart der Bestandseinträge setzen

  1. Prüfen (nur lesend): mkdir -p /root/reports/kundenansicht-neu-2026-10-15/umschalten; docker exec -w /app webklar-kundenbereich-server node scripts/kundenart-bestand.mjs --pruefen | tee /root/reports/kundenansicht-neu-2026-10-15/umschalten/kundenart-pruefen-$(date -u +%Y%m%d-%H%M%S).log
  2. Erwartet: Ohne Kundenart: <N>, Unbekannte Werte: 0 und die Bestätigungszeile Kundenart unternehmen setzen: <N>. Stand der Spec (15.10.): 42 Einträge, 6 Kunden, 31 Leads, 5 verlorene. Weicht <N> ab oder gibt es unbekannte Werte, nennt der Controller dir die Zahlen und wartet.
  3. Stop: Inhaber-OK nötig: Der Controller zeigt dir die Zahlen und fragt, ob alle diese Einträge auf unternehmen gesetzt werden. Das Skript füllt nur leere Felder; ohne die passende Bestätigungszeile schreibt es nichts.
  4. Setzen, <N> aus Schritt 1 (Exit 0, letzte Zeile Summe gesetzt=<N> uebersprungen=0 fehler=0): set -o pipefail; docker exec -w /app webklar-kundenbereich-server node scripts/kundenart-bestand.mjs --ausfuehren --bestaetigung="Kundenart unternehmen setzen: <N>" | tee /root/reports/kundenansicht-neu-2026-10-15/umschalten/kundenart-ausfuehren-$(date -u +%Y%m%d-%H%M%S).log
  5. Gegenprobe: Schritt 1 noch einmal, erwartet Ohne Kundenart: 0.

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.
  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.

4. WOMS-Pflichtfeld live

  1. Ist kn-p9 im live gebauten WOMS enthalten? git -C /home/webklar/apps/ticket.webklar.com/build merge-base --is-ancestor kn-p9 HEAD && echo live. Erwartet: live.
  2. Du bestätigst: „Neuer Lead“ und „Neuer Kunde“ zeigen die Kundenart ohne Vorgabe.
  3. Fehlt eines von beiden, wird nicht umgeschaltet: Neue Einträge ohne Kundenart würden den Stand aus Abschnitt 2 sofort wieder aufweichen.

5. Schalter auf on

  1. Kundenart (Vorflug): docker exec -w /app webklar-kundenbereich-server node scripts/kundenart-bestand.mjs --pruefen | command grep -a "Ohne Kundenart". Erwartet Ohne Kundenart: 0, sonst Abschnitt 2 wiederholen (ein Lead, der seitdem entstand, ist normal).
  2. Setup und Wortlaut: docker exec -w /app webklar-kundenbereich-server node scripts/kundenansicht-setup.mjs --pruefen; docker exec -w /app webklar-kundenbereich-server grep -n "WORTLAUT_STATUS" server/services/bestelltexte.js. Erwartet: keine fehlenden Attribute (insbesondere featureConsents.kundenart, sonst scheitert jede Bestellung der neuen Ansicht mit 500) und 'freigegeben'. Das Setup selbst läuft nur auf Anweisung nach deinem OK.
  3. Schalter in Compose und .env: command grep -a -n 'KUNDENANSICHT_NEU' /home/webklar/apps/docker-compose.yml; command grep -a -n '^KUNDENANSICHT_NEU' /home/webklar/apps/.env. Erwartet in docker-compose.yml zwei Zeilen - KUNDENANSICHT_NEU=${KUNDENANSICHT_NEU:-off} und - KUNDENANSICHT_NEU_PILOT_EMAILS=${KUNDENANSICHT_NEU_PILOT_EMAILS:-}, in .env KUNDENANSICHT_NEU=pilot und die Pilot-Liste. Fehlt eine Compose-Zeile, meldet der Controller es und wartet auf die Korrektur.
  4. Katalog-Schalter, du bestätigst jeden Wert: command grep -a -n '^\(ABO_PILOT_EMAILS\|TERMINE_ENABLED\|SHOP_ENABLED\|UNTERKUNFT_ENABLED\|ZEITEN_ENABLED\|ANALYSE_ENABLED\|AUFTRAEGE_ENABLED\)=' /home/webklar/apps/.env. ABO_PILOT_EMAILS muss * sein (sonst antwortet jede Abo-Bestellung eines Nicht-Pilot-Kunden mit 403); ANALYSE_ENABLED und AUFTRAEGE_ENABLED bleiben off, bis ihre eigenen Livegänge erledigt sind.
  5. Ruhe und Sicherung (Erwartet: 0, sonst die Zeilen ansehen): docker logs --since 72h webklar-kundenbereich-server 2>&1 | command grep -a -c 'Unbehandelter Fehler', dann cp -n /home/webklar/apps/.env /home/webklar/apps/.env.bak-$(date -u +%Y-%m-%d)-kundenansicht-on
  6. Stop: Inhaber-OK nötig: Der Controller nennt dir das Ergebnis der Schritte 1 bis 5 und schlägt eine ruhige Uhrzeit vor; du sagst „umschalten, jetzt“.
  7. .env ändern (erwartet genau die Zeile KUNDENANSICHT_NEU=on, sonst stoppt der Controller): sed -i 's/^KUNDENANSICHT_NEU=.*/KUNDENANSICHT_NEU=on/' /home/webklar/apps/.env && command grep -a -n '^KUNDENANSICHT_NEU=' /home/webklar/apps/.env
  8. Neu starten (erwartet Up …; bei 502 in den ersten Sekunden Abschnitt 6 nach 10 s wiederholen): cd /home/webklar/apps && docker compose up -d --no-deps kundenbereich-server && docker ps --filter name=webklar-kundenbereich-server --format '{{.Status}}'

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
  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=<id> 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.
  5. Logs (erwartet 0): docker logs --since 30m webklar-kundenbereich-server 2>&1 | command grep -a -c -i 'Unbehandelter Fehler'
  6. Installierte App: Android öffnet weiß. iOS liest die Statusleiste beim Installieren; bleibt sie schwarz, entfernst du die App vom Home-Bildschirm und fügst sie neu hinzu.
  7. Beobachtungszeit: Beginn und Ende (Vorschlag: sieben Tage) stehen in /root/reports/kundenansicht-neu-2026-10-15/umschalten/beobachtung.txt. Die Offline-Seite aus Abschnitt 8 darf sofort laufen, das Festschreiben erst nach Ablauf und mit deinem neuen OK.

7. Rückweg

  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
  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).
  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.
  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
  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.