Document browser flow backend blockers
This commit is contained in:
52
HANDOFF.md
52
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 <key_id>` widerrufen und einen neuen Key erzeugen. Den
|
||||
Klartext nie in Handoff, Git oder Chat eintragen.
|
||||
|
||||
---
|
||||
|
||||
## Projekt: NSCT – Neutral Search Crawler Tool
|
||||
|
||||
Reference in New Issue
Block a user