Skip to content

feat(geography): provincia, nazione e regione di nascita su entrambe le camere#59

Merged
aborruso merged 2 commits into
mainfrom
feat/birth-geography-province-region
Jul 11, 2026
Merged

feat(geography): provincia, nazione e regione di nascita su entrambe le camere#59
aborruso merged 2 commits into
mainfrom
feat/birth-geography-province-region

Conversation

@aborruso

Copy link
Copy Markdown
Member

Chiude un assunto sbagliato (presente anche nel codice e nel wiki): il Senato non espone "solo la città" di nascita. Ri-verificato con COUNT su tutta la leg.19 (254 senatori): osr:cittaNascita 254/254, osr:provinciaNascita 250/254 (i 4 mancanti sono i nati all'estero), osr:nazioneNascita 254/254 (Italia o stato estero). Issue #24 / #23.

Cosa cambia

  • senators list: nuove colonne birth_province, birth_country, birth_region.
  • deputies list: la geografia alla Camera è solo uno slug nell'URI (comune_provincia_regione, non triple RDF) — ora decodificata in birth_city/birth_province/birth_country/birth_region, con disambiguazione dello slug a 2 parti (Valle d'Aosta / Trentino-Alto Adige comune_regione vs estero comune_stato).
  • src/core/province-region.ts (nuovo, bundle-safe per il Worker): mappa provincia→regione derivata da SITUAS/ISTAT report 64 via CLI opensituas. SITUAS è date-accurate: union degli snapshot 2010 + 2020 + più recente per coprire le province sarde soppresse/rinominate; +3 alias per le forme brevi che il Senato usa e SITUAS non ha (Aosta, Bolzano, "Monza e Brianza"). Copertura 100% (0 province Senato non risolte).

Interoperabilità cross-camera

birth_region è portata alla stessa forma canonica su entrambe le camere (verificato: Veneto identico tra un deputato e un senatore). birth_city/birth_province/birth_country restano invece nella forma nativa di ciascuna fonte e possono differire per grafia/maiuscole (es. estero: Senato Argentina, Camera argentina): per aggregazioni cross-camera usare birth_region. Documentato nel wiki.

Verifiche

  • 254 senatori leg.19: 0 casi provincia-presente-senza-regione; 4 nati all'estero con nazione valorizzata e regione vuota.
  • Camera leg.18+19: tutte le 20 regioni-slug risolte; Aosta/Trentino (2 parti) → regione+Italia; esteri → nazione+regione vuota.
  • 158/158 test verdi (tsc pulito). +10 test unitari: risolutore regione + parser slug Camera (i 4 rami dello slug).

Nota sui dati a monte (per i gestori LOD, fuori da questa PR)

Emersa una asimmetria: il Senato espone la geografia strutturata (bene), la Camera solo come slug nell'URI. In entrambi i casi mancano i codici ISTAT dei luoghi (solo label). Annotato nelle note ai gestori Camera/Senato: esporre i codici renderebbe i join con le statistiche ufficiali robusti a grafia e cambi amministrativi.

🤖 Generated with Claude Code

Il Senato espone geografia di nascita strutturata (osr:provinciaNascita,
osr:nazioneNascita), non solo la città: corretto l'assunto sbagliato in
codice e wiki (verificato con COUNT su leg.19: cittaNascita 254/254,
provinciaNascita 250/254, nazioneNascita 254/254).

- senators list: nuove colonne birth_province, birth_country, birth_region
- deputies list: geografia decodificata dallo slug URI (comune_provincia_regione)
  in birth_city/province/country/region, con disambiguazione slug a 2 parti
  (Aosta/Trentino comune_regione vs estero comune_stato)
- src/core/province-region.ts: mappa provincia->regione da SITUAS/ISTAT report
  64 (union snapshot 2010+2020+recente, date-accurate via opensituas; +3 alias
  per le forme brevi Senato assenti in SITUAS), bundle-safe; regione canonica
  identica tra camere (verificato: 'Veneto' uguale). Copertura 100%.
- solo birth_region e unificata cross-camera; city/province/country restano
  nella forma nativa di ciascuna fonte (documentato in wiki)
- wiki dati-anagrafici/index corretti; +10 test unitari (resolver+parser), 158 verdi

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 11, 2026 15:36
@greptile-apps

greptile-apps Bot commented Jul 11, 2026

Copy link
Copy Markdown

Greptile Summary

This PR adds structured birthplace geography for both chambers.

  • Adds province, country, and region fields to senators list.
  • Parses Camera birthplace URI slugs into city, province, country, and region fields.
  • Adds a bundle-safe province-to-region lookup module.
  • Updates geography documentation and adds focused unit tests.

Important Files Changed

Filename Overview
src/tools/deputies.ts Adds Camera birthplace parsing and strips query or fragment suffixes before parsing the URI segment.
src/core/province-region.ts Adds province normalization, province-to-region lookup, and canonical region mapping.
src/tools/senators.ts Adds Senate birth province and country fields and derives birth region from province.
src/tools/deputies.birthplace.test.ts Adds tests for Camera birthplace parsing across Italian, regional two-part, foreign, and empty slug cases.
src/core/province-region.test.ts Adds tests for province normalization, region lookup, aliases, and canonical region slugs.

Reviews (2): Last reviewed commit: "fix(geography): harden birthplace URI pa..." | Re-trigger Greptile

Comment thread src/tools/deputies.ts Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Questa PR estende i tool di lista deputies (Camera) e senators (Senato) per esporre in modo coerente la geografia di nascita (provincia/nazione/regione) e corregge la documentazione/wiki sull’assunto errato “al Senato c’è solo la città”. Introduce inoltre una risorsa locale bundle-safe per derivare la regione dalla provincia (Senato) e per canonicalizzare le regioni (cross-camera).

Changes:

  • senators list: aggiunte colonne birth_province, birth_country, birth_region (quest’ultima derivata via lookup provincia→regione).
  • deputies list: parsing dello slug Camera del luogo di nascita e popolamento di birth_city/birth_province/birth_country/birth_region, con disambiguazione degli slug a 2 parti.
  • Nuovo modulo core province-region + test unitari, e aggiornamento wiki/LOG per riflettere i nuovi dati e le nuove trappole.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/tools/senators.ts Aggiunge provincia/nazione e deriva birth_region da birth_province per l’output Senato.
src/tools/deputies.ts Decodifica lo slug del luogo Camera in campi separati e canonicalizza birth_region.
src/tools/deputies.birthplace.test.ts Testa i 4 rami principali del parser dello slug Camera.
src/core/province-region.ts Introduce lookup provincia→regione + canonicalizzazione regioni (norm + alias).
src/core/province-region.test.ts Testa normalizzazione, risoluzione provincia→regione e canonicalizzazione regioni.
LOG.md Aggiunge entry di changelog per la feature (da riallineare su numeri/dettagli: vedi commento).
docs/lod-wiki/index.md Aggiorna l’indice wiki per riflettere la nuova realtà della geografia Senato + parsing Camera.
docs/lod-wiki/dati-anagrafici.md Corregge la sezione anagrafica: predicati Senato e note operative su derivazione/canonicalizzazione.

Comment thread LOG.md Outdated
- deputies: strip eventuale query/fragment dall'ultimo segmento dell'URI
  luogo prima del parse, altrimenti la regione cadrebbe a "" (Greptile P2)
- LOG: allinea la voce ai numeri reali (union 2010+2020+recente, 3 alias,
  10 test unitari, 158 verdi)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@aborruso
aborruso merged commit 01b311c into main Jul 11, 2026
2 of 3 checks passed
@aborruso
aborruso deleted the feat/birth-geography-province-region branch July 11, 2026 15:50
aborruso added a commit that referenced this pull request Jul 11, 2026
…grafia

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.

2 participants