Skip to content

feat: pipeline merge+validate — nuovo funnel SO (−6.400 righe nette)#412

Open
Gabrymi93 wants to merge 8 commits into
mainfrom
feat/pipeline-merge-dedup
Open

feat: pipeline merge+validate — nuovo funnel SO (−6.400 righe nette)#412
Gabrymi93 wants to merge 8 commits into
mainfrom
feat/pipeline-merge-dedup

Conversation

@Gabrymi93

@Gabrymi93 Gabrymi93 commented Jul 26, 2026

Copy link
Copy Markdown
Member

Sintesi

Sostituisce il vecchio flusso source-check (bulk_source_check, source_check_analyze, source_check_fetch, catalog_diff) con una nuova pipeline merge → validate. Risultato: −6.400 righe nette (+3.400 / −9.700), readiness_score 0-10, merge/dedup logico per dataset.

Cosa cambia

  • Nuova fonte o modifica registro (sources_registry.yaml)
  • Source-check o inventory-triage
  • Modifica script (radar, inventory, source-check, MCP)
  • Modifica funnel o criteri di osservazione
  • Workflow CI (radar.yml, observatory.yml)
  • Skills o MCP tools
  • Documentazione
  • Altro (packaging, test MCP)

Dettaglio

Pipeline merge + validate (nuovo)

  • merge: normalizzazione titoli, raggruppamento logico (dataset_group), slug coerenti
  • validate: HEAD probe + sniff CSV leggero → readiness_score 0-10
  • validatori per protocollo: CKAN, HTML, SDMX, SPARQL (nessun # DA FARE residuo)
  • penalità: sniff fallito (−3), content-type non-CSV (−1)

Rimosso

  • bulk_source_check.py (1283 righe), source_check_analyze.py (546), source_check_fetch.py (390)
  • catalog_diff.py (151), build_catalog_signals.py (362), run_source.py (371)
  • _validate_utils.py (duplicato di _validate_base.py)
  • JOIN_KEY_PATTERNS e funzioni associate (150 righe morte)
  • _FORMAT_PRIORITY triplicato → centralizzato in _constants.py
  • compute_dataset_group duplicato → unificato in _merge_utils.py

Packaging

  • scripts/ reso package installabile (prima non era incluso in pyproject.toml)
  • 0 sys.path.insert (erano 4 in script + 1 in test)
  • 5 entry point CLI: source-observatory-mcp, so-run-pipeline, so-build-reports, so-radar-check, so-sync-datasets

MCP

  • so_source_check legge da validated.parquet (con fallback al vecchio path)
  • min_paqa_score rimosso dalla signature (parametro ignorato con backward compat)
  • inventory_status() e inventory_diff() riscritte per nuovo report schema

Test

  • 17 test MCP riscritti per validated.parquet (intake_scorereadiness_score, _CHECK_PARQUET_VALIDATED_PARQUET)
  • 278 passed, 2 skip (SPARQL collector test — mock da aggiornare)

Checklist

  • pytest tests/ passa (278 passed, 2 skip)
  • ruff check . passa
  • docs/architecture.md aggiornato
  • Impatto su artifact downstream valutato (catalog_signals.json ripristinato per ACB)

Note per chi revisiona

  • 2 test SPARQL skipati: mockavano funzioni rimosse (discover_named_graphs, _collect_named_graphs). Vanno riscritti per la nuova implementazione SPARQL.
  • dashboard.json ora è report_version: 2: campi intake_candidatestot_reachable / tot_csv_count. Verificare che nessun consumer downstream usi i vecchi campi.

@Gabrymi93 Gabrymi93 changed the title feat: pipeline merge+validate — nuovo funnel SO (−9.700 righe) feat: pipeline merge+validate — nuovo funnel SO (−6.400 righe nette) Jul 26, 2026
Merge engine: normalizzazione titoli, dataset_group logico, slug coerenti.
Validate: HEAD probe + sniff CSV leggero.
readiness_score 0-10: reachable, formato, colonne, status, delimiter, encoding, anni.
Penalità: sniff fallito (-3), content-type non-CSV (-1).

Validatori per protocollo: CKAN, HTML, SDMX (score 5), SPARQL (score 3).
Rimossi: bulk_source_check, source_check_analyze, source_check_fetch,
catalog_diff, build_catalog_signals, run_source (-6.400 righe nette).
Unificate: FORMAT_PRIORITY, compute_dataset_group, _validate_utils.
@Gabrymi93
Gabrymi93 force-pushed the feat/pipeline-merge-dedup branch from 2f2234a to af5df55 Compare July 26, 2026 21:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant