---
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.
