9042110ea2
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>
63 lines
2.2 KiB
Markdown
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).
|