From d1b7eddd1005e1830c29a9d63bb3f555a8f3ed5c Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 20 Oct 2026 04:52:56 +0000 Subject: [PATCH] =?UTF-8?q?Workers=20P4/P5:=20workersOffers.offerText=20(S?= =?UTF-8?q?chnappschuss=20des=20Angebotssatzes)=20in=20=C3=9Cbersicht=20un?= =?UTF-8?q?d=20P4-Schema-Schritt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- docs/superpowers/plans/2026-10-17-workers-00-uebersicht.md | 2 +- .../plans/2026-10-17-workers-p4-gespraeche-werkstatt.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/superpowers/plans/2026-10-17-workers-00-uebersicht.md b/docs/superpowers/plans/2026-10-17-workers-00-uebersicht.md index a073b72..2c5fa44 100644 --- a/docs/superpowers/plans/2026-10-17-workers-00-uebersicht.md +++ b/docs/superpowers/plans/2026-10-17-workers-00-uebersicht.md @@ -133,7 +133,7 @@ Indizes: `status`, `entrance+status`, `room`, `foundAt`, `purgeAfter`. `kind e[plattform_antwort,vorschau_freigabe,unsicher,beschwerde,preisfrage,mensch_gewuenscht,bau_fehlgeschlagen,mail_antwort]*` · `prospectId s(36)` · `threadId s(36)` · `previewId s(36)` · `title s(200)*` · `originalText s(8000)` · `draft s(8000)` · `sourceUrl s(1024)` · `status e[offen,in_arbeit,gesendet,verworfen,veraltet,erledigt]*` · `claimedBy s(64)` · `claimedAt dt` · `doneBy s(64)` · `doneAt dt` · `createdAt dt*` · `staleAt dt`. Index: `status+createdAt`. Antwort-Einträge haben deterministische IDs (`pultReplyId(prospectId, slot?)`, `slot` ∈ `vorschau`, `angebot` oder `folge<8 Hex>` (Folge-Antwort auf eine Rückmeldung von der Plattform, P4-T34); P4-E7), `addPult` liefert zusätzlich das nicht gespeicherte Feld `created` (P3-E9). ### 4.12 `workersOffers` – Kauf-Links (Schnittstelle zum Portal, P4 schreibt, P5 liest/aktualisiert) -`tokenHash s(64)*` (sha256 hex des 43-Zeichen-base64url-Tokens; Token selbst nie speichern) · `prospectId s(36)*` · `previewId s(36)*` (= `workersPreviews.$id`, 32 Zeichen) · `productKey s(32)*` (nur "hosting": das Portal verkauft nichts anderes, P5-E10) · `businessName s(256)*` · `email s(256)*` · `previewUrl s(1024)*` · `status e[offen,checkout,bezahlt,abgelaufen,widerrufen]*` · `expiresAt dt*` · `stripeSessionId s(128)` · `customerId s(36)` · `paidAt dt` · `createdAt dt*`. Index: `tokenHash` (unique), `status`. +`tokenHash s(64)*` (sha256 hex des 43-Zeichen-base64url-Tokens; Token selbst nie speichern) · `prospectId s(36)*` · `previewId s(36)*` (= `workersPreviews.$id`, 32 Zeichen) · `productKey s(32)*` (nur "hosting": das Portal verkauft nichts anderes, P5-E10) · `businessName s(256)*` · `email s(256)*` · `previewUrl s(1024)*` · `status e[offen,checkout,bezahlt,abgelaufen,widerrufen]*` · `expiresAt dt*` · `stripeSessionId s(128)` · `customerId s(36)` · `paidAt dt` · `createdAt dt*` · `offerText s(400)` (ab P5-T16: Schnappschuss des Angebotssatzes beim Anlegen; das Portal zitiert ihn, Rückfall `workersSettings.offerText`). Index: `tokenHash` (unique), `status`. Kauf-URL: `https://project.webklar.com/uebernahme.html#t=`. ### 4.13 `workersPreviews` – Vorschauen diff --git a/docs/superpowers/plans/2026-10-17-workers-p4-gespraeche-werkstatt.md b/docs/superpowers/plans/2026-10-17-workers-p4-gespraeche-werkstatt.md index 47896f3..91e74b6 100644 --- a/docs/superpowers/plans/2026-10-17-workers-p4-gespraeche-werkstatt.md +++ b/docs/superpowers/plans/2026-10-17-workers-p4-gespraeche-werkstatt.md @@ -1075,7 +1075,7 @@ cd /home/webklar/apps && sed -n '/^ workers:$/,/^ [a-z0-9_-]*:$/p' docker-comp ``` cd /home/webklar/apps/workers-dev && ( read -rs -p 'Appwrite-Key workers-setup: ' APPWRITE_API_KEY; echo; export APPWRITE_API_KEY; timeout 300 node --max-old-space-size=1024 scripts/setup-collections.mjs --check; echo "Exit $?" ) ``` -*Erwartet:* 13 Zeilen `= workers…: N Attribute, M Indizes vorhanden` (`workersSettings` mit 28 Attributen, `workersPreviews` mit 0 Indizes) und genau vier Zeilen `- workersSettings.sendingHalted FEHLT`, `- workersSettings.sendingHaltedReason FEHLT`, `- workersSettings.sendingHaltedClearedAt FEHLT`, `- Index workersPreviews.idx_status FEHLT`, dann `4 Eintrag/Einträge fehlen.` und `Exit 1`. Dann derselbe Befehl ohne `--check` (drei Zeilen `+ Attribut …`, `+ Index workersPreviews.idx_status`, am Ende `Fertig.`), danach wieder mit `--check`: `Alles vorhanden.`, `Exit 0`. **Danach den Schlüssel `workers-setup` in der Appwrite-Konsole löschen.** *Wenn nicht:* 401 oder „missing scope“ = falscher Schlüssel; mehr als vier `FEHLT`-Zeilen = ein früherer Schritt (P3 B4) fehlt, der Lauf ohne `--check` zieht alles nach (wiederholbar); `NICHT BEREIT` = ein paar Minuten warten und `--check` wiederholen. +*Erwartet:* 13 Zeilen `= workers…: N Attribute, M Indizes vorhanden` (`workersSettings` mit 28 Attributen, `workersPreviews` mit 0 Indizes) und genau fünf Zeilen `- workersSettings.sendingHalted FEHLT`, `- workersSettings.sendingHaltedReason FEHLT`, `- workersSettings.sendingHaltedClearedAt FEHLT`, `- workersOffers.offerText FEHLT`, `- Index workersPreviews.idx_status FEHLT` (Reihenfolge wie im Skript), dann `5 Eintrag/Einträge fehlen.` und `Exit 1`. Dann derselbe Befehl ohne `--check` (drei Zeilen `+ Attribut …`, `+ Index workersPreviews.idx_status`, am Ende `Fertig.`), danach wieder mit `--check`: `Alles vorhanden.`, `Exit 0`. **Danach den Schlüssel `workers-setup` in der Appwrite-Konsole löschen.** *Wenn nicht:* 401 oder „missing scope“ = falscher Schlüssel; mehr als vier `FEHLT`-Zeilen = ein früherer Schritt (P3 B4) fehlt, der Lauf ohne `--check` zieht alles nach (wiederholbar); `NICHT BEREIT` = ein paar Minuten warten und `--check` wiederholen. **B7. Stand übernehmen** (erst jetzt, gleich vor dem Bau: der `pull` ändert auch `prompts/*.md`, die der laufende P3-Dienst sofort liest). P4 baut auf P3 auf, `main` rückt per Fast-Forward vor. ```