Files
graph_explorer/issues/0030-deep-enrich-macro.md
T
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

63 lines
2.2 KiB
Markdown

---
id: 0030
title: Macro "Deep enrich" + enricher expand_domain
status: pending
priority: medium
created: 2026-05-01
depends_on: [0028, 0028b]
---
## Objetivo
Encadenar varios enrichers con un solo click. Cubre dos flujos:
1. **Deep enrich Webpage**: sobre un nodo Webpage, ejecuta en orden
`fetch_webpage` (si no fetched aun) → `extract_domain``extract_links`
`extract_text_entities`. Cuatro jobs separados, en cadena.
2. **Expand domain**: sobre un nodo Domain, fetch homepage + 1 nivel de
links + extraccion de entidades sobre cada pagina. Util para "dame
todo lo que sepas de este dominio en un click".
## Implementacion
### Macro Deep enrich (no es un enricher Python — es UI + orquestacion en C++)
- Boton/menu item "Deep enrich" en el context menu del nodo Webpage.
- Encolar 4 jobs con dependencias: cada job tiene `depends_on_job_id`.
- Worker pool respeta dependencias: si el job tiene depends_on y el
predecesor no esta `done`, lo deja en cola.
- Anadir columna a tabla `jobs`: `depends_on_job_id TEXT`.
### Enricher `expand_domain`
```
applies_to: [Domain]
params:
- { name: max_pages, type: int, default: 5 }
- { name: deep, type: bool, default: false } # si true, deep enrich cada pagina
```
- run.py:
1. Fetch `https://<domain>/` y `http://<domain>/` (probando ambos esquemas).
2. Crea Webpage homepage + relacion `HOMEPAGE_OF` desde Domain.
3. Si `deep`, encola un job `extract_text_entities` por pagina via
un endpoint local de control (out of scope v1) o emite un campo
especial `chained_jobs: [...]` que el worker C++ encola.
4. Decision: v1 solo crea las paginas. La cadena con extract_*
se puede hacer manualmente desde la UI o esperar a un sistema
de chained jobs decente.
## Definicion de hecho
- Click derecho en Webpage → "Deep enrich" → 4 jobs en cadena visibles
en panel Jobs. Al terminar el ultimo, el grafo tiene domain + links +
persons/orgs/etc.
- Click derecho en Domain → "Expand domain" → Webpage homepage aparece
conectada al Domain.
- Cancelar el job intermedio cancela en cascada los que dependen.
## Out of scope v1
- Cron / repeat schedule de enrichers.
- Progress agregado de la cadena (cada job mantiene su progress propio).