--- id: 0015 title: Drag & drop de archivos sobre el viewport para ingesta status: pending priority: medium created: 2026-05-01 --- ## Objetivo Soltar archivos sobre la ventana de `graph_explorer` lanza el extractor adecuado segun extension y mete las entidades en el grafo, sin abrir modales ni navegar menus. ## Tipos soportados - `.pdf` -> texto + `extract_graph_hybrid`. - `.eml` / `.msg` -> headers (from/to/cc) como entidades persona/email + cuerpo via extract. - `.csv` / `.parquet` -> ingesta como tabla DuckDB (encadena con 0011). - `.json` / `.jsonl` -> si tiene shape entity/relation, importar; si no, extract sobre stringify. - `.png` / `.jpg` -> OCR (issue 0019) y luego extract. - `.txt` / `.md` -> extract directo. ## Alcance - Hook de drop de ImGui -> dispatcher por mime/extension -> pipeline correspondiente -> preview con seleccion antes de commit (igual UX que 0013). - Indicador visual de zona drop activa cuando hay drag sobre la ventana. - Multiples archivos en un drop: procesar en cola, mostrar progreso. ## Decisiones - Dispatcher reutiliza `/ingest/file` del endpoint 0012 si esta vivo, o resuelve localmente como fallback. - Limite de tamaƱo por archivo configurable (default 50 MB) para evitar bloqueos en PDFs gigantes. ## Definicion de hecho - Suelto un PDF en castellano sobre el canvas, en menos de 30 s veo preview con entidades correctas. - Suelto un .eml y aparecen `from`/`to` como nodos persona conectados por una relacion `mailed`. - Cancelar durante el preview no toca operations.db.