--- id: 0013 title: Panel "Paste & Extract" — texto libre a entidades con extract_graph_hybrid status: pending priority: high created: 2026-05-01 --- ## Objetivo Panel dockeable dentro de `graph_explorer` con un textarea grande. Pegas texto (articulo, mensaje, transcripcion, documento), pulsas Extract, corre el pipeline `extract_graph_hybrid` (regex + GLiNER + GLiREL + LLM fallback) y muestra preview de entidades y relaciones detectadas. El usuario marca cuales aceptar antes de commit a `operations.db`. Es el quick-win de mas alto valor: aprovecha el pipeline ya mergeado (commit 1a353878) y elimina la friccion de tipear datos a mano. ## Alcance - Panel "Extract" con textarea, combo de proyecto/tipos esperados, boton "Extract". - Lanza el pipeline en hilo aparte (es Python — invocar via subprocess o el endpoint HTTP de 0012 con `commit=false`). - Tabla de entidades propuestas: checkbox, type, name, source span. Tabla de relaciones propuestas: from, kind, to, checkbox. - Edicion inline de tipo/nombre antes de commit. - "Apply selected" -> escribe a operations.db, refresca grafo, posiciona los nuevos nodos cerca del centro o vinculados al ultimo seleccionado. - Dedupe: si una entidad propuesta ya existe (mismo type+name) reusar el id en lugar de duplicar. ## Decisiones - Invocacion del pipeline: via 0012 si esta disponible, o subprocess directo como fallback (para que el panel funcione sin levantar HTTP). - Resaltado de spans en el textarea (v2 — primera version solo lista). ## Definicion de hecho - Pego un parrafo en castellano sobre una empresa y un directivo, pulso Extract, veo entidades correctas tipadas y la relacion entre ambas. - Apply crea los nodos en el grafo en menos de 1 s tras click. - Re-extraer el mismo texto no duplica entidades (dedupe funciona).