diff --git a/HANDOFF.md b/HANDOFF.md index 8da619c..a4983c5 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -85,6 +85,58 @@ Mit einem gültigen, bereits erzeugten Key im Browser testen: Antwortcodes gemeinsam auswerten. Klartext-Keys niemals in Chat oder Logs kopieren. +### Aktueller Blocker im Browser-Flow — 2026-09-06 + +Der Browser-Flow erreicht inzwischen die Detailseite und fragt Status, +Quellen, Claims, Evidenz und Bericht ab. Eine tatsächlich gestartete Recherche +liefert jedoch derzeit keine Ergebnisse. Dies ist ein Backend-Problem, nicht +mehr der Frontend-Proxy oder die API-Key-Loginstrecke. + +Reproduzierbare Logbefunde aus `docker compose logs nsct-api`: + +- `Planning failed: Error code: 401 - {'error': 'authentication required'}` +- `No search providers configured — search will return empty results` +- abgelehnte State-Transitions, etwa `fetching -> analyzing`, + `fetching -> synthesizing` und `fetching -> completed`. + +Ursachen und nächste Reparaturen: + +1. `src/nsct/providers/llm.py` ergänzt in `_create_client()` immer `/v1`. + `NSCT_LLM_BASE_URL` ist laut `.env.example` und Deployment-Dokumentation + bereits eine OpenAI-kompatible URL mit `/v1`. Den Basis-URL-Join + normalisieren, damit nie `/v1/v1` entsteht. Danach einen authentifizierten + Chat-Completions-Probe ausführen, ohne URL oder Key auszugeben. +2. `src/nsct/orchestration/orchestrator.py::_get_multi_search()` importiert + `nsct.providers.searxng.SearXNGProvider`, aber + `src/nsct/providers/searxng.py` existiert nicht. Der `ImportError` wird + still geschluckt; deshalb hat die Pipeline keinen Search-Provider. Entweder + den SearXNG-Provider implementieren oder den vorhandenen + `DuckDuckGoProvider` als Fallback registrieren. Compose setzt bereits + `NSCT_SEARXNG_BASE_URL=http://searxng:8080/`. +3. Das Orchestrator-/REST-Fehlerhandling muss bei nicht ausführbarer Pipeline + einen nachvollziehbaren `FAILED`-Status mitsamt Fehlergrund liefern, statt + mit leeren Fallbacks scheinbar abgeschlossene Schritte zu zeigen. Die + Transition-Matrix und die Fallback-Logik in `orchestrator.py` prüfen und + gezielt testen. + +Frontend-Fixes des laufenden Browser-Tests (alle im Frontend-Repository +`/home/faligam/apps/NSCT-FrontEnd`, `main`, gepusht): + +- `e5b37ae`: Error-Banner-Store repariert. +- `25530b3`: Research-Liste normalisiert `research_id`/`state` zu + `id`/`status`. +- `77b71c6`: Browser-Session wird nach Reload aus `localStorage` restauriert; + Statusvertrag normalisiert. +- `5022ef4` und `d5c270c`: SvelteKit-Detailroute `[id]` und + `$page.params.id` korrigiert. +- `6117c4f`: Löschaktion für immutable, abgeschlossene Researches ausgeblendet. +- `7acf1b9`: Detailansicht lädt die fünf Research-Unterressourcen. + +Sicherheitsnotiz: Ein im Browser-Test verwendeter Frontend-API-Key wurde in +einem Chat-/Netzwerkdump offengelegt. Diesen Key lokal über +`nsct-api-key revoke ` widerrufen und einen neuen Key erzeugen. Den +Klartext nie in Handoff, Git oder Chat eintragen. + --- ## Projekt: NSCT – Neutral Search Crawler Tool