Files
graph_explorer/issues/completed/0003-enricher-web-extract.md
T
egutierrez 4ef6a5f7db chore(issues): mover 7 issues completadas a issues/completed/
Status sincronizado con master:
  - 0001 chat con Claude     -> shipped como panel Echo
  - 0003 enricher web        -> shipped (0028 + 0028b)
  - 0026 sistema de jobs     -> shipped
  - 0027 tipo Webpage        -> shipped
  - 0028 fetch_webpage       -> shipped
  - 0028b extract trio       -> shipped
  - 0031 layout estable      -> shipped

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 00:14:58 +02:00

39 lines
1.3 KiB
Markdown

---
id: 0003
title: Enricher web — descargar URL/dominio y extraer texto
status: pending
priority: medium
created: 2026-04-30
---
## Objetivo
Right-click sobre un nodo `url` o `domain` → "Run enricher → Fetch & extract
text". Descarga el HTML, extrae el texto principal, crea un nodo `text`
conectado al origen con relacion `FETCHED_FROM`.
Despues el usuario puede encadenar: sobre ese nodo `text`, ejecutar el enricher
GLiNER+GLiREL (issue 0002) para extraer entidades.
## Alcance
- HTTP GET con timeout (libcurl o sys WinHTTP).
- Extraccion de texto: regex/strip de tags simple en v1; v2 usa una lib
(htmlparser2 / lexbor / boost.url + algo de heuristica).
- User-agent identificativo, respeto de robots.txt opcional (out-of-scope v1).
- Limite de tamaño descargable (1 MB) para evitar bloqueos.
## Modelo de etiquetado
- Nodo origen (url/domain) → arista `FETCHED_FROM` → nodo nuevo (text con
metadata={fetched_at, status_code, content_type, length}).
- Nombre del nodo text: titulo de la pagina (si <title> existe) o primeros
120 caracteres del cuerpo.
## Definicion de hecho
- Funciona contra una URL real (https con TLS).
- Maneja errores (404, timeout, redirects basicos) sin tumbar la app.
- El nodo creado es visible y el texto se puede consumir por el enricher
GLiNER+GLiREL del issue 0002.