UI fuer Wissens-Graph mit BFS-Traversierung (Modul 11/16 UI-Backlog) #383

Closed
opened 2026-09-15 06:36:29 +00:00 by Leopoldadmin · 0 comments
Owner

UI-Backlog Modul 11: Graph-RAG Traversal

Backend: /api/v1/graph (graph_rag-Plugin, 4 Ops): GET/POST /relationships (paginiert, 5 Filter, 409 bei Duplikat), POST /traverse (BFS, max_hops 1-10, relationship_types-Filter), DELETE /relationships/{id}. Permissions: graph:read / graph:write.

Frontend (Commit 0404c8f):

  • api/knowledge.ts erweitert (bestehender Client, kein Parallel-System): traverseGraph, createGraphRelationship, deleteGraphRelationship + Typen (GraphNode, GraphEdge, GraphTraverseResult)
  • pages/GraphRag.tsx — Traverse-Panel (Startknoten mit Entity-Typ-Datalist, max_hops mit 1-10-Clamp, Komma-getrennte Typ-Filter), Ergebnisse nach Tiefe gruppiert (Tiefen-Badges mit Path-Tooltips, aufklappbare Kantenliste), Relationships-Liste (source → type → target, Typ-Filter, Pagination), Create-Modal (Source/Target mit Vorschlägen), Delete mit Confirm, Permission-Gating graph:read/write
  • Phase-Q-Registrierung: graph_rag plugin.py-Manifest: page_routes (/graph-rag, component @/pages/GraphRag, graph:read) + menu_items (nav.graphRag, Share2, order 87) + ICON_MAP-Ergänzung (Share2) + Komponenten-Map regeneriert (41 Einträge)
  • i18n de/en: nav.graphRag + 26 graphRag-Keys
  • Tests: __tests__/pages/GraphRag.test.tsx 11/11 (Rendering, Permission-Gating, max_hops-Clamp 99→10, Typ-Filter-Parsing, Tiefen-Gruppierung, Create-Validierung, Delete mit TanStack-v5-Kontext-Argument)

Verifikation:

  • tsc exit=0, Vitest 11/11, Production-Build OK
  • Full Deploy: Health 200, Alembic 0144, RLS 113
  • Live: GET /graph/relationships HTTP 200 (items=[]); Manifest page_route+menu_item live; echter-Login DOM-Check: h1='Knowledge Graph', Traverse-Panel, Create-Btn, Empty-State, Nav-Link gerendert, kein Spinner, keine JS-Fehler

DoD: erfüllt.

## UI-Backlog Modul 11: Graph-RAG Traversal **Backend:** `/api/v1/graph` (graph_rag-Plugin, 4 Ops): GET/POST `/relationships` (paginiert, 5 Filter, 409 bei Duplikat), POST `/traverse` (BFS, max_hops 1-10, relationship_types-Filter), DELETE `/relationships/{id}`. Permissions: `graph:read` / `graph:write`. **Frontend (Commit 0404c8f):** - `api/knowledge.ts` erweitert (bestehender Client, kein Parallel-System): `traverseGraph`, `createGraphRelationship`, `deleteGraphRelationship` + Typen (GraphNode, GraphEdge, GraphTraverseResult) - `pages/GraphRag.tsx` — Traverse-Panel (Startknoten mit Entity-Typ-Datalist, max_hops mit 1-10-Clamp, Komma-getrennte Typ-Filter), Ergebnisse nach Tiefe gruppiert (Tiefen-Badges mit Path-Tooltips, aufklappbare Kantenliste), Relationships-Liste (source → type → target, Typ-Filter, Pagination), Create-Modal (Source/Target mit Vorschlägen), Delete mit Confirm, Permission-Gating graph:read/write - **Phase-Q-Registrierung:** graph_rag plugin.py-Manifest: `page_routes` (/graph-rag, component @/pages/GraphRag, graph:read) + `menu_items` (nav.graphRag, Share2, order 87) + ICON_MAP-Ergänzung (Share2) + Komponenten-Map regeneriert (41 Einträge) - i18n de/en: nav.graphRag + 26 graphRag-Keys - Tests: `__tests__/pages/GraphRag.test.tsx` 11/11 (Rendering, Permission-Gating, max_hops-Clamp 99→10, Typ-Filter-Parsing, Tiefen-Gruppierung, Create-Validierung, Delete mit TanStack-v5-Kontext-Argument) **Verifikation:** - tsc exit=0, Vitest 11/11, Production-Build OK - Full Deploy: Health 200, Alembic 0144, RLS 113 - Live: GET /graph/relationships HTTP 200 (items=[]); Manifest page_route+menu_item live; echter-Login DOM-Check: h1='Knowledge Graph', Traverse-Panel, Create-Btn, Empty-State, Nav-Link gerendert, kein Spinner, keine JS-Fehler **DoD:** erfüllt.
Leopoldadmin added the task label 2026-09-15 06:36:29 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Leopoldadmin/leocrm#383