Files
graph_explorer/issues/0018-headless-browser-transforms.md
egutierrez 9042110ea2 docs(issues): plan enrichers asincronos + recoleccion web (0026-0030)
Cinco issues que componen el plan:
- 0026: sistema de jobs (infra, contrato wire)
- 0027: tipo Webpage + cache de documentos
- 0028: enricher fetch_webpage (MVP end-to-end)
- 0028b: enrichers extract_domain / extract_links / extract_text_entities
- 0029: variantes CDP (Chrome headless, screenshot)
- 0030: macro "Deep enrich" + expand_domain

Tambien anade los issues previos 0012-0025 que estaban untracked.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 18:24:13 +02:00

55 lines
1.9 KiB
Markdown

---
id: 0018
title: Transforms automatizadas tipo Maltego con browser headless
status: pending
priority: low
created: 2026-05-01
depends_on: [0012]
---
## Objetivo
Dada una entidad seleccionada, ejecutar un script (Playwright/Puppeteer)
que enriquece el grafo con datos derivados — equivalente a las
"transforms" de Maltego. Es la pieza que diferencia frente a alternativas
mas estaticas.
## Ejemplos para banking/OSINT espanol
- Persona/empresa -> consulta BORME, registro mercantil, axesor.
- Dominio -> whois, DNS records, certificados (crt.sh).
- Email -> haveibeenpwned, hunter.io.
- Telefono -> truecaller-like.
- Empresa -> LinkedIn search publico, opencorporates.
## Alcance
- Cada transform es un pipeline del registry con tag `transform` y un
contrato fijo: input = `{id, type, metadata}`, output = `{entities,
relations}`.
- Registro de transforms aplicables por entity_type.
- UI: context menu sobre nodo -> "Run transform..." -> lista filtrada
por type aplicable -> ejecuta async -> notifica al terminar -> preview
antes de commit.
- Sandbox: cada transform en proceso aparte, timeout configurable.
## Riesgos y mitigaciones
- Los scrapers se rompen cuando los sitios cambian -> mantener una suite
de "transform health checks" automaticos (cron ligero) que avisa de
fallos antes de que el usuario los descubra en vivo.
- Cumplimiento legal y robots.txt -> documentar en cada transform su
fuente, politica y ToS.
- Rate limiting -> cooldown por host configurable.
## Definicion de hecho
- Selecciono un dominio en el grafo, lanzo "whois", aparecen registrant,
registrar y nameservers como nodos vinculados con relaciones tipadas.
- Un transform que falla loguea el error y no afecta a otros que
esten corriendo en paralelo.
- La lista de transforms aplicables a una entidad se computa segun su
type (no se ofrecen los inaplicables).
- Health check cron escribe a `proposals` cuando un transform empieza a
fallar repetidamente.