13 KiB
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-kn-p10laufen im Worktree, der Teil A trägt (anderer Worktree: Pfad ersetzen). Protokolle liegen in/root/reports/kundenansicht-neu-2026-10-15/umschalten. - Die
.envwird nie ausgegeben: nurcommand grep -a -n '^<SCHLÜSSEL>=' /home/webklar/apps/.envundsed -iauf genau eine Zeile, vorher eine Sicherung. Neu gestartet wird nur mitdocker compose up -d --no-deps kundenbereich-server, niepreview-portal.
1. Voraussetzungen
- 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_STATUSsteht auf'freigegeben'; das WOMS-Paket P9 prüft Abschnitt 4. - 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 - Stop: Inhaber-OK nötig (Push, Teil A ändert für Kunden nichts, solange der Schalter nicht
onist):cd /home/webklar/apps/kundenbereich.webklar.com/dev-kn-p10 && git fetch origin && git log --oneline origin/main..kn-p10-a, danngit 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. - 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 - 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
- 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 - Erwartet:
Ohne Kundenart: <N>,Unbekannte Werte: 0und die BestätigungszeileKundenart 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. - Stop: Inhaber-OK nötig: Der Controller zeigt dir die Zahlen und fragt, ob alle diese Einträge auf
unternehmengesetzt werden. Das Skript füllt nur leere Felder; ohne die passende Bestätigungszeile schreibt es nichts. - Setzen,
<N>aus Schritt 1 (Exit 0, letzte ZeileSumme 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 - Gegenprobe: Schritt 1 noch einmal, erwartet
Ohne Kundenart: 0.
3. Fassung 6 hochgeladen
- Schlüssel, Bucket und Karten lesen (nur lesend, Schlüssel
/root/.appwrite-rechtliches.keystellst 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 - 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. Erwartetok abo-bedingungen, also eine aktuelle Version, derensourceauf:public/neu/rechtliches/abo-bedingungen.htmlendet. Die übrigen Zeilen betreffen die Funktionsunterlagen. - Du bestätigst in WOMS unter „Rechtliches“, dass die Karte
abo-bedingungendie Fassung 6 trägt („Version 6 · Stand 28.10.2026“). Die WOMS-NummervNzählt Uploads und ist nicht die Fassung. - 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
- Ist
kn-p9im live gebauten WOMS enthalten?git -C /home/webklar/apps/ticket.webklar.com/build merge-base --is-ancestor kn-p9 HEAD && echo live. Erwartet:live. - Du bestätigst: „Neuer Lead“ und „Neuer Kunde“ zeigen die Kundenart ohne Vorgabe.
- 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
- Kundenart (Vorflug):
docker exec -w /app webklar-kundenbereich-server node scripts/kundenart-bestand.mjs --pruefen | command grep -a "Ohne Kundenart". ErwartetOhne Kundenart: 0, sonst Abschnitt 2 wiederholen (ein Lead, der seitdem entstand, ist normal). - 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 (insbesonderefeatureConsents.kundenart, sonst scheitert jede Bestellung der neuen Ansicht mit 500) und'freigegeben'. Das Setup selbst läuft nur auf Anweisung nach deinem OK. - 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 indocker-compose.ymlzwei Zeilen- KUNDENANSICHT_NEU=${KUNDENANSICHT_NEU:-off}und- KUNDENANSICHT_NEU_PILOT_EMAILS=${KUNDENANSICHT_NEU_PILOT_EMAILS:-}, in.envKUNDENANSICHT_NEU=pilotund die Pilot-Liste. Fehlt eine Compose-Zeile, meldet der Controller es und wartet auf die Korrektur. - 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_EMAILSmuss*sein (sonst antwortet jede Abo-Bestellung eines Nicht-Pilot-Kunden mit 403);ANALYSE_ENABLEDundAUFTRAEGE_ENABLEDbleibenoff, bis ihre eigenen Livegänge erledigt sind. - Ruhe und Sicherung (Erwartet: 0, sonst die Zeilen ansehen):
docker logs --since 72h webklar-kundenbereich-server 2>&1 | command grep -a -c 'Unbehandelter Fehler', danncp -n /home/webklar/apps/.env /home/webklar/apps/.env.bak-$(date -u +%Y-%m-%d)-kundenansicht-on - 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“.
.envändern (erwartet genau die ZeileKUNDENANSICHT_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- 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
- Seiten (Exit 0, alle Zeilen
ok, einschließlich/abo-bedingungen.htmlmitVersion 6und des PDFs):cd /home/webklar/apps/kundenbereich.webklar.com/dev-kn-p10 && node scripts/umschalten-nachpruefung.mjs https://project.webklar.com --erwartet=neu - Routen (erwartet JSON mit
"authenticated":false):curl -s https://project.webklar.com/api/auth/me - Login und Oberfläche, du mit zwei Konten (Betrieb und Pilot-Konto) auf Handy und Desktop: (a)
/login.htmlist weiß, die Anmeldung führt auf Website; (b)#chat,#rechnungen,#wartungund#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. - Mails, optional: Probekauf mit dem Testkonto aus
ABO_TEST_EMAILS(0,50 €). Erwartet: K01 an den Kunden und T02 ans Team kommen an, der AnhangWEBklar-Abo-Vertragsunterlagen.pdfist Fassung 6, infeatureConsentssteht eine Zeile mitfeatureKeyabound der Kundenart. Stop: Inhaber-OK nötig für Kauf und Stornieren. - Logs (erwartet 0):
docker logs --since 30m webklar-kundenbereich-server 2>&1 | command grep -a -c -i 'Unbehandelter Fehler' - 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.
- 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
- Nur bei Fehler, und vorher informiert der Controller dich kurz.
.envzurück aufoffund 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- 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 - Verträge, die unter Fassung 6 abgeschlossen wurden, bleiben gültig: Fassungstabelle und Archiv bleiben stehen.
- Der Schalter ist der Rückweg nur bis zum Festschreiben (Abschnitt 8).
8. Danach: festschreiben und aufräumen
- Offline-Seite (Tag
kn-p10-b, Cachekb-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', danachcurl -s https://project.webklar.com/sw.js | command grep -a -c kb-offline-v2(erwartet1). - Beobachtungszeit aus Abschnitt 6 abwarten, dann sagst du „festschreiben“.
- Ab dem Festschreiben (Teil C, Tasks 14 bis 25 des Plans) gibt es kein Rückweg per Schalter:
offwürde die alten Bestellseiten (Wortlaut Fassung 5) mit Fassung 6 als einziger geltender Fassung kombinieren. Fehler werden vorwärts korrigiert. - 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 Entwurfslinks1, Status leer. - Festschreiben (Plan, Task 14): Seite und PDF wandern nach
public/,termsVersionundtermsVersionNeuwerden eins, alle Pins laufen grün, Commit und Tagkn-p10-c1. Die Rechtstexte ändern sich dabei nie; schlägt eine Wortlaut-Assertion fehl, stoppt der Agent und meldet sie dir. - 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 - 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. - Danach folgen im Plan das Lösen des Logins von
app.jsund das Löschen der alten Oberfläche (Tasks 16 bis 25), jeweils mit eigenem Tag und eigenem OK von dir.