fc4f0824da
Plumbing para issue 0035 — agrupacion de resultados de enrichers cuando exceden umbral. Sin cambios visibles para el usuario todavia. - Migracion idempotente: ALTER TABLE entities ADD COLUMN group_id si no existe (detectado via PRAGMA table_info). Se ejecuta al abrir el proyecto en switch_to_project y en el bootstrap inicial. - Tipo Group en examples/types.yaml (template) y en el types.yaml del proyecto default activo en Windows. - shape=square (regla en types_registry.cpp extendida a Group), color=#94A3B8, icon=ti-stack-2. - Fields: name (req), count (int), enricher (string), batch_id (string). Refs: issues/0035a-group-type-and-schema.md
67 lines
2.4 KiB
Markdown
67 lines
2.4 KiB
Markdown
---
|
|
id: 0035e
|
|
title: Pulido del Group + tests cross-platform
|
|
status: pending
|
|
priority: medium
|
|
created: 2026-05-03
|
|
parent: 0035
|
|
depends_on: [0035c, 0035d]
|
|
---
|
|
|
|
## Objetivo
|
|
|
|
Cierre de la fase 1: el cuadrado del grupo es visualmente informativo
|
|
(hereda iconografia del tipo mayoritario), el threshold se lee del
|
|
manifest si esta declarado, y la suite de tests cubre los caminos
|
|
nuevos en WSL y Windows.
|
|
|
|
## Cambios
|
|
|
|
1. **Iconografia heredada**: al construir el atlas / asignar visuales
|
|
a un nodo Group, mirar los `type_ref` distintos de sus hijos. Si
|
|
todos comparten un solo tipo, el cuadrado adopta el color y el
|
|
icono de ese tipo (manteniendo shape=square para distinguirlo de un
|
|
nodo individual). Si hay heterogeneidad, se queda con el visual
|
|
genericamente Group (slate + ti-stack-2).
|
|
2. **Threshold desde manifest**: el parser de
|
|
`enrichers/<id>/manifest.yaml` ya lee campos top-level. Anadir
|
|
soporte para `auto_group_threshold: <int>` y propagarlo al runtime
|
|
del enricher (lo ve via env var `_GROUP_THRESHOLD` o argumento
|
|
adicional, lo que sea menos invasivo).
|
|
3. **Tests pytest nuevos**:
|
|
- `test_group_inherits_visual_from_homogeneous_children`: crear
|
|
Group con 5 Urls como hijos, verificar que su color/icono
|
|
resuelve al de Url.
|
|
- `test_group_falls_back_to_generic_for_heterogeneous`: Group con
|
|
Url + Email, verificar que se queda con el visual genericamente
|
|
Group.
|
|
- `test_manifest_auto_group_threshold_override`: manifest con
|
|
`auto_group_threshold: 100`, run con 80 resultados no agrupa
|
|
(asumiendo default global 50, override a 100).
|
|
- `test_schema_migration_idempotent`: BD sin columna group_id
|
|
migra correctamente; segunda apertura no rompe.
|
|
4. **Validacion cross-platform**: la suite completa pasa en WSL
|
|
(32 + N nuevos) y en Windows (21 + N nuevos, mas los 11 saltados
|
|
conocidos).
|
|
|
|
## Acceptance criteria
|
|
|
|
- Group con 5 Urls homogeneos: cuadrado con color/icono de Url.
|
|
- Group con Url + Email mezclados: cuadrado slate generico.
|
|
- Override de threshold via manifest funciona.
|
|
- Migration idempotente: abrir BD ya migrada no genera warnings.
|
|
- Tests verdes en ambos OS.
|
|
|
|
## TBD
|
|
|
|
Branch `issue/0035e-polish-and-tests`, merge `--no-ff` con tests
|
|
verdes en ambos OS.
|
|
|
|
## Out of scope
|
|
|
|
- Cascada (decision 6 — fase 2).
|
|
- Aplicar grouping a `extract_links`, `fetch_webpage`,
|
|
`extract_text_entities` (fase 2).
|
|
- Promote/regroup desde tableview (fase 2).
|
|
- Persistir flag `expanded` por grupo (fase 2).
|