generated from knso/webklar-preview-template
Der Nutzer konnte in einer Praesentation nicht kontern, und die Ursache war real: Alles, was BehoerdenKlar von ChatGPT unterscheidet (Erinnerungen, Kalender, Antwort-Entwurf), steckte in der App — und die ist noch nicht veroeffentlicht. Das Web-Produkt, das Kunden heute kaufen, war im Kern nur 'Brief erklaeren'. Kalender (.ics, rein im Browser, nichts wird hochgeladen): - Frist und Termin mit Erinnerung 3 Tage und 1 Tag vorher - Zeilen nach BYTES gefaltet (RFC 5545), damit Arabisch/Tigrinya nicht reissen - Termin 23:30 endet korrekt am naechsten Tag - Wanduhrzeit ohne Zeitzone = Ortszeit des Geraets - getestet: Frist, Termin mit Uhrzeit, Mitternacht, langer arabischer Text, Brief ohne Datum (-> keine Datei) Anruf-Hilfe (Worker-Schema um kontakt + anruf erweitert): - Telefonnummer als tel:-Knopf, Aktenzeichen hervorgehoben - Spickzettel: Satz auf Deutsch + Bedeutung in der Nutzersprache - Prompt-Regel: Kontaktdaten nur, wenn woertlich im Brief. Getestet mit Brief ohne Nummer -> telefon: null, nichts erfunden. Nebenbei zwei bestehende Fehler behoben: - Optionale Ergebniskarten wurden nie ausgeblendet: Beim zweiten Brief stand die Checkliste des ERSTEN Briefs noch da. Jetzt Reset zu Beginn. - dir=auto auf den Ergebnistexten: Arabisch/Farsi/Urdu wurden im Web linksbuendig dargestellt (in der App war das schon behoben). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
BehördenKlar Backend-Proxy
Cloudflare Worker, der den Anthropic-API-Key serverseitig hält. Die App schickt ihre Claude-Anfragen an diesen Worker statt direkt an Anthropic — kein API-Key in der App, Missbrauchsschutz inklusive.
Was der Worker macht
- Prüft die anonyme Geräte-ID (
x-geraete-id-Header) und setzt ein Tageslimit pro Gerät durch (Standard: 20 Anfragen, siehewrangler.toml) - Erlaubt nur die Modelle, die die App nutzt, und deckelt
max_tokens - Leitet den Request-Body unverändert an
api.anthropic.com/v1/messagesweiter und setzt dabei serverseitigx-api-key+anthropic-version - Gibt die Anthropic-Antwort unverändert zurück
Deployment (einmalig)
cd proxy
npm install
# Bei Cloudflare anmelden (kostenloser Account reicht für den Start)
npx wrangler login
# KV-Namespace für das Rate-Limit anlegen …
npx wrangler kv namespace create RATE_LIMIT
# … und die ausgegebene ID in wrangler.toml bei [[kv_namespaces]] eintragen
# Anthropic-API-Key als Secret hinterlegen (von console.anthropic.com)
npx wrangler secret put ANTHROPIC_API_KEY
# Deployen
npm run deploy
Der Deploy gibt eine URL aus, z. B. https://behoerdenklar-proxy.<account>.workers.dev.
App umstellen
In src/services/claudeClient.ts die URL eintragen:
const PROXY_URL: string | null = 'https://behoerdenklar-proxy.<account>.workers.dev';
Fertig — die App braucht dann keinen API-Key mehr in den Einstellungen.
Lokal testen
npm run dev # startet den Worker auf http://localhost:8787
Dann in claudeClient.ts vorübergehend PROXY_URL = 'http://localhost:8787'
setzen (im Simulator; auf echtem Gerät die LAN-IP des Rechners verwenden).
Später ergänzen (wenn Abo/IAP kommt)
- Abo-Prüfung: RevenueCat-Webhook oder Receipt-Validierung vor dem Weiterleiten
- Tageslimit je nach Abo-Stufe (Free: 3, Abo: 20+)
- Die Geräte-ID durch eine echte Nutzer-ID ersetzen