Workers P4/P5: workersOffers.offerText (Schnappschuss des Angebotssatzes) in Übersicht und P4-Schema-Schritt

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-10-20 04:52:56 +00:00
1 parent f388a37c46
commit d1b7eddd10
2 files changed
+2 -2

No files matched your search

@@ -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). `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) ### 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=<token>`. Kauf-URL: `https://project.webklar.com/uebernahme.html#t=<token>`.
### 4.13 `workersPreviews` – Vorschauen ### 4.13 `workersPreviews` – Vorschauen
@@ -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 $?" ) 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. **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.
``` ```