Commit graph

11 Commits

Autor SHA1 Nachricht Datum
claude-dev
c73541cdbe Block C: Prompt-Umlaute korrigiert + Timeout parametrisiert
- ENHANCE_PROMPT_ADHOC und ENHANCE_PROMPT_RESEARCH: Umschreibungen durch
  echte Umlaute ersetzt (fuer -> fuer, praezises -> praezises, ...). Behebt
  den Widerspruch, dass der Prompt "echte Umlaute verwenden" forderte,
  die Anweisung selbst aber ae/oe/ue/ss nutzte.
- call_claude() bekommt neuen timeout-Parameter. None = Fallback auf
  CLAUDE_TIMEOUT (1800s), sonst Override in Sekunden. asyncio.wait_for
  und die cancel-aware Variante nutzen durchgaengig den effective_timeout.
- Enhance-Endpoint ruft call_claude mit timeout=60 auf (Haiku-Single-Shot,
  vorher global 1800s).
- chat.py _call_claude_chat: Timeout von 60s auf 120s erhoeht (Chat-Antworten
  koennen etwas laenger dauern, haben aber keinen Anspruch auf 30 Min).
2026-04-23 17:56:28 +00:00
claude-dev
5d5ec7c924 Block B: ClaudeCliError + differenzierte HTTP-Status + Rate-Limit-Retry
- Neue Exception-Klasse ClaudeCliError(error_type, message) in claude_client.py
  mit Kategorien rate_limit / auth_error / timeout / cli_error.
- _classify_cli_error() als geteilter Klassifikator (Keywords fuer Rate-Limit
  und Auth-Fehler wie "does not have access", "login again").
- call_claude() erkennt jetzt auch is_error=true im JSON bei returncode=0
  (Hauptursache des Ausfalls vom 22.04.: CLI liefert "Your organization
  does not have access" mit is_error=true statt Exit-Code).
- Orchestrator: ClaudeCliError mit rate_limit/timeout als transient behandelt
  (3 Retries mit Backoff 0s/120s/300s). auth_error/cli_error brechen sofort
  ab ohne Retry. Behebt den bestehenden Bug, dass Rate-Limit-Fehler gar nicht
  retried wurden.
- routers/incidents.py Enhance-Endpoint: ClaudeCliError wird auf
  503 (auth_error) / 429 (rate_limit) gemappt, TimeoutError auf 504.
- routers/chat.py _call_claude_chat(): wirft jetzt ClaudeCliError statt
  generischem RuntimeError. Chat-Endpoint mappt auth_error auf 503.
- Frontend: neue ApiError-Klasse in api.js mit status+detail.
  generateDescription() in app.js zeigt differenzierte Toasts nach
  HTTP-Status (503/429/504/403).
- dashboard.html: Cache-Bust api.js + app.js auf v=20260423a
2026-04-23 17:54:13 +00:00
claude-dev
e8ac0d0c50 Block A: License-Check + Credits-Tracking fuer Enhance und Chat
- Neuer Helper charge_usage_to_tenant() in services/license_service.py:
  UPSERT in token_usage_monthly und Credits-Abzug aus licenses.credits_used.
  Wiederverwendbar fuer alle Claude-Call-Verursacher.
- Orchestrator: Inline-Buchungslogik (35 Zeilen) durch Helper-Aufruf ersetzt.
- routers/incidents.py POST /enhance-description: require_writable_license
  statt get_current_user, db_dependency hinzugefuegt, Credits-Buchung mit
  source="enhance" nach jedem Claude-Call.
- routers/chat.py POST /: analog require_writable_license + Credits-Buchung
  mit source="chat". _call_claude_chat() gibt jetzt zusaetzlich ClaudeUsage
  zurueck.

Abgelaufene/gesperrte Lizenzen koennen damit keine Haiku-Calls mehr ausloesen,
und alle Kosten werden konsistent auf Tenant-Ebene verbucht.
2026-04-23 17:49:32 +00:00
claude-dev
c8a8e10020 Chat-Doku aktualisiert + Tutorial-Einstieg temporaer deaktiviert
- Chat-System-Prompt: Aktualisierungs-Modi (Minuten/Stunden/Tage/Wochen, 10-Min-Minimum, Startzeit), 5 Faktencheck-Status (Bestaetigt, Gesichert, Unbestaetigt, Umstritten, Widerlegt), Export mit PDF/DOCX und Bereichsauswahl
- Tutorial-Button in Sidebar auskommentiert (Ueberarbeitung)
- Tutorial-Trigger im Chat auskommentiert (Opener-Hinweis und Keyword-Erkennung)
2026-04-23 17:43:27 +00:00
Claude Dev
fdbffa7e00 Chat-Assistent: UI-Bezeichnungen aktualisiert
Ad-hoc Lage -> Live-Monitoring, Ereignis beobachten
Recherche -> Recherche, Thema analysieren
Erstellen -> Lage anlegen
Lagebild/Recherchebericht Unterscheidung dokumentiert
Neue Regel: AKTUELLE UI-BEZEICHNUNGEN immer verwenden
2026-03-24 08:32:13 +01:00
Claude Dev
7d127688d1 feat: UI-Highlight bei Chat-Antworten, Barrierefreiheits-Doku im Assistenten 2026-03-15 23:31:09 +01:00
Claude Dev
d8f8fe4c86 fix: Support-Verweis klarstellen, kein Einblick in Nutzerinhalte suggerieren 2026-03-15 23:24:05 +01:00
Claude Dev
767d45de9b fix: Chat-Begruessung und Prompt angepasst, keine Limitationen auflisten, Support-Verweis 2026-03-15 23:15:25 +01:00
Claude Dev
c4f3e7c36a refactor: Chat-Assistent auf interaktive Anleitung umgebaut, DB-Lookups und Lage-Kontext entfernt 2026-03-15 23:11:38 +01:00
Claude Dev
2175fe9b0e fix: Regex-Fehler in _escape_prompt_content behoben
Invalid group reference \2 in re.sub entfernt (non-capturing group
hatte keine \2). Tags werden jetzt durch [tag] ersetzt.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:14:50 +01:00
Claude Dev
f3757ff3c2 security: Chat Guard Rails umfassend gehärtet
- Input: Unicode-Normalisierung (NFKC), Zero-Width-Chars entfernen,
  Injection-Pattern-Detection (Jailbreak, Rollen-Override, Tag-Escape)
- Output: Tech-Leak-Regex erweitert (Haiku/Sonnet/Opus/FastAPI/SQLite/etc.),
  Unicode-Confusable-Schutz, interne Domains/E-Mails/Ports gefiltert
- Prompt: History-Spoofing verhindert (Rollen-Prefixe escaped, XML-Tags escaped),
  klare Trennung System/Daten/Verlauf/Frage mit Boundary-Markern
- Conversations: Max 5 pro User, älteste wird entfernt
- LIKE-Queries: Wildcards (% und _) in User-Input escaped
- History: User-Nachrichten werden vor dem Speichern escaped

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:00:15 +01:00