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
2.4 KiB
2.4 KiB
id, title, status, priority, created, parent, depends_on
| id | title | status | priority | created | parent | depends_on | ||
|---|---|---|---|---|---|---|---|---|
| 0035e | Pulido del Group + tests cross-platform | pending | medium | 2026-05-03 | 0035 |
|
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
- Iconografia heredada: al construir el atlas / asignar visuales
a un nodo Group, mirar los
type_refdistintos 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). - Threshold desde manifest: el parser de
enrichers/<id>/manifest.yamlya lee campos top-level. Anadir soporte paraauto_group_threshold: <int>y propagarlo al runtime del enricher (lo ve via env var_GROUP_THRESHOLDo argumento adicional, lo que sea menos invasivo). - 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 conauto_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.
- 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
expandedpor grupo (fase 2).