Skip to content

Commit 45caeb8

Browse files
aborrusoclaude
andcommitted
docs(lod-wiki): mappa fonti non-LOD Camera (getDocumento router, app emendamenti)
Nuova pagina camera/getdocumento-router.md: il router CommonServices/getDocumento.ashx serve testi ddl, schede-attivita deputati e Bollettini Giunte/Commissioni; copertura vs LOD e priorita di integrazione. Ampliato assenti.md con la mappa dell'app apps/emendamenti (liste, vista per-seduta con esito, endpoint XML indice). Rif #62. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent f1be5d2 commit 45caeb8

3 files changed

Lines changed: 84 additions & 2 deletions

File tree

docs/lod-wiki/camera/assenti.md

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Gli **emendamenti della Camera non sono modellati nel LOD OCD**. Verificato il 2
2424

2525
Verificato il 2026-07-05 (browser + curl): pur **assenti dal LOD**, gli emendamenti Camera sono pubblicati integralmente dall'app HTML `https://documenti.camera.it/apps/emendamenti/getProposteEmendative.aspx`, **attiva anche per la legislatura 19**, per singolo atto e per sede (referente/Assemblea), con articolo, numero, primo firmatario e link al testo del singolo emendamento.
2626

27-
- **Nessuna API**: la pagina è HTML renderizzato lato server (traffico ispezionato: solo il documento `.aspx` + asset statici, zero XHR/JSON). Fruibile solo via **scraping**. Il conteggio "(N)" nell'intestazione è invece calcolato lato client (JS): via `curl` risulta vuoto — non affidabile.
27+
- **Le liste emendamento sono solo HTML**: la pagina `getProposteEmendative.aspx` è HTML renderizzato lato server (solo il documento `.aspx` + asset statici, zero XHR/JSON). I singoli emendamenti (numero, articolo, firmatari, testo, esito) sono fruibili **solo via scraping**. Il conteggio "(N)" nell'intestazione è calcolato lato client (JS): via `curl` risulta vuoto — non affidabile. (Nota: esistono però endpoint XML pubblici a livello di *indice* — vedi l'aggiornamento 2026-07-12 sotto.)
2828
- **URL non costruibile a mano**: i codici sede/lettura dell'URN (`tipoSeduta`, `sedeEsame`, il ramo `A`, il codice commissione `com:NN`) non sono derivabili dal solo numero d'atto. L'URL corretto va **estratto dalla scheda atto** (`www.camera.it/leg{leg}/126?idDocumento={num}` → pulsante EMENDAMENTI → sezioni "in sede referente"/"in Assemblea" → link `getProposteEmendative.aspx`). La scheda espone quei link **lato server** (recuperabili via curl).
2929
- **Àncore stabili per il parsing**: intestazione articolo `tr.rigaArticoloNormale` con `id="cmd.art..<ART>.<n>"`; singolo emendamento `tr.normale` con `id="tr.id...."`, link numero `a[href*="idPropostaEmendativa="]`, firmatario `a[href*="idPersona="]`. Contare `idPropostaEmendativa` = conteggio esatto (verificato: AC 2696 → referente 37, Assemblea 25, coincide col numero mostrato dal browser).
3030
- **Esito**: non presente nelle liste cumulative "in ordine di pubblicazione" (cella vuota); vive nella vista per-seduta `getProposteEmendativeSeduta.aspx?...&dataSeduta=YYYYMMDD`.
@@ -33,6 +33,28 @@ Il tool `camera-amendments` (dalla v0.14.0) implementa questa pipeline (cheerio/
3333

3434
Nota Senato: l'emendamento esiste come `osr:Emendamento`, ma il dataset appare non popolato per i DDL 2026 (solo inizio legislatura). Da tracciare a parte.
3535

36+
## Aggiornamento 2026-07-12: mappa completa dell'app `apps/emendamenti` ed endpoint XML
37+
38+
Esplorazione integrale dell'app (browser + curl, leg. 19, caso reale AC 2236 il cui atto portante emendato è **AC 2822**). La radice `https://documenti.camera.it/apps/emendamenti/` è un **indice di tutti gli atti con emendamenti elaborati** ("Prototipo degli emendamenti — Gestione interna degli XML"): tabella `ATTO CAMERA | DATA CREAZIONE | DATA MODIFICA` con ~373 righe per la leg. 19. Ogni riga ha sei pulsanti:
39+
40+
- **Scheda**`apps/CommonServices/getDocumento.ashx?sezione=lavori&tipoDoc=pdl&idLegislatura=19&idDocumento={N}` — il PDF del testo del progetto di legge (l'atto "portante"), non gli emendamenti. Risponde `302` verso il file.
41+
- **Emendamenti**`apps/emendamenti/ostr/19?attoportante=leg.19.eme.ac.{N}` — pagina-indice (HTML) coi *quick-link* agli elenchi emendamenti per sede e per seduta (contiene i link `getProposteEmendative.aspx` / `getProposteEmendativeSeduta.aspx`).
42+
- **Vecchia Scheda**`getDocumento.ashx?old=old&...&idDocumento={N}` — versione precedente/storica del PDF della scheda del pdl.
43+
- **Nuovi Emendamenti**`ostr/19?attoportante=leg.19.eme.ac.{N}&new=new` — stessa pagina-indice degli emendamenti, layout/UI nuova.
44+
- **Nuovi Emendamenti By Proxy**`apps/emendamenti/proxySito?leg=19&pdl={N}&new=new&url=assoluto&cache=false`**restituisce XML** (`application/xml`): elemento `<gruppoEmendamenti>` con sede (`sedeReferente`/organo "in I Commissione"), testo di riferimento e l'elenco delle **sedute con numero di Bollettino** e relativo `href` alla vista per-seduta. È l'indice sedi/sedute in forma machine-readable (non i singoli emendamenti).
45+
- **Elenchi Testi**`apps/emendamenti/export-elenco-testi-riferimento?leg=19&pdl={N}&organo=commissione`**restituisce XML** (`<testiRiferimento>`): i testi di riferimento e gli "stampati" (una `<stampato>` per seduta) con `dataSeduta`, `numero` bollettino, `dataProcessamento`, `dataTimeStamp`. Con `pdl` errato torna `<process status="ko">`; usare l'atto **portante** (qui 2822, non 2236).
46+
47+
Esiste inoltre un **Web Service SOAP documentato** in `apps/emendamenti/docs` (metodi `xmlEmendamenti`, `getEmendamenti`, `getEmendamentiSeduta`, `getEmendamento`, `getElenco`, con `tipologiaContenuto=xml|xhtml`), ma la pagina avverte che i metodi sono "utilizzabili solo localmente alla macchina server": il SOAP puro **non risulta invocabile dall'esterno**, va trattato come non-pubblico finché non verificato diversamente.
48+
49+
**Cosa si ottiene aprendo i link foglia — e non è ancora nella CLI** (`camera-amendments` oggi espone solo: sede, articolo, numero, *primo* firmatario, identici, `text_url`):
50+
51+
- **Testo integrale del singolo emendamento**`getPropostaEmendativa.aspx?...&idPropostaEmendativa={num}` (HTML). Esempio reale (AC 2822, em. 1.1.): *"Sopprimerlo."* La CLI oggi dà solo il link, non il testo.
52+
- **Tutti i firmatari/cofirmatari** — la stessa pagina del singolo emendamento li elenca tutti (es. 1.1.: Bonafè, Colucci, Zaratti, Boschi, Magi), mentre la lista cumulativa mostra solo il primo. Colma il gap "solo primo firmatario".
53+
- **Esito** (approvato/respinto/ritirato/inammissibile/…) — vista **per-seduta** `getProposteEmendativeSeduta.aspx?...&dataSeduta=YYYYMMDD`. Esempio reale (AC 2822, seduta 23/06/2026): em. 1.151 (Montaruli e altri) → **approvato**. Le date-seduta si scoprono in modo strutturato dall'XML di `proxySito`/`export-elenco-testi-riferimento`.
54+
- **Bollettino delle Giunte e Commissioni** di pubblicazione — presente sia nel testo del singolo emendamento sia negli XML indice.
55+
56+
Sintesi integrabilità: il valore aggiunto (testo, cofirmatari, esito) resta recuperabile **solo via scraping HTML** dei link foglia; i due endpoint XML (`proxySito`, `export-elenco-testi-riferimento`) sono utili per **orchestrare le sedute** senza parsing HTML. Miglioria naturale del tool esistente (non un tool nuovo): arricchire `camera-amendments` con **esito**, **cofirmatari** e opzionalmente **testo**. Nulla di ciò è derivabile dai tool attuali.
57+
3658
# Citations
3759

3860
[1] Enumerazione dei tipi OCD (2026-07-01), usata come controprova dell'assenza di `ocd:emendamento`:
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
---
2+
type: Reference
3+
title: getDocumento.ashx — router delle fonti non-LOD della Camera
4+
description: Il servizio CommonServices/getDocumento.ashx è un router unico che, cambiando i parametri sezione/tipoDoc, serve testi dei ddl, schede-attività dei deputati e i Bollettini delle Giunte e Commissioni. Mappa delle facce verificate, cosa coprono rispetto al LOD OCD e priorità di integrazione. Fonti HTML/PDF, non dato strutturato.
5+
resource: https://documenti.camera.it/apps/commonServices/getDocumento.ashx
6+
tags: [camera, non-lod, getDocumento, bollettini, scheda-attivita, emendamenti, scraping]
7+
timestamp: 2026-07-12
8+
---
9+
10+
Diverse funzioni della Camera **non sono nel LOD OCD** ma sono pubblicate da applicazioni HTML/PDF su `documenti.camera.it`. Il punto d'ingresso ricorrente è `https://documenti.camera.it/apps/commonServices/getDocumento.ashx`: un **router unico** che, a seconda di `sezione` e `tipoDoc`, restituisce (o redirige a `302`) documenti di natura diversa. Questa pagina mappa le facce verificate. Tutte servono HTML renderizzato lato server o PDF: nessuna è un endpoint dati: per estrarne dato strutturato serve scraping. Per gli emendamenti — che non passano da `getDocumento.ashx` ma dall'app gemella `apps/emendamenti/` — vedi [Assenti / emendamenti](assenti.md).
11+
12+
Nota trasversale: il **casing dei parametri non è uniforme** tra le facce (`idLegislatura` nei ddl e nei bollettini, ma `idlegislatura`/`idpersona`/`tipopersona` minuscoli nella scheda-attività). Copiare i parametri dalla faccia giusta, non normalizzarli a mano.
13+
14+
# Faccia 1 — Testo dei progetti di legge (`sezione=lavori&tipoDoc=pdl`)
15+
16+
`getDocumento.ashx?sezione=lavori&tipoDoc=pdl&idLegislatura=19&idDocumento={N}`**PDF del testo del ddl** (risponde `302` verso il file). Con `&old=old` la versione precedente/storica della scheda. È il pulsante "Scheda" / "Vecchia Scheda" nell'indice dell'app emendamenti. Coperto in parte dal tool `bill-text` (Camera); qui è la fonte PDF diretta.
17+
18+
# Faccia 2 — Scheda-attività di un deputato (`sezione=deputati&tipoDoc=schedaAttivita`)
19+
20+
`getDocumento.ashx?sezione=deputati&tipoDoc=schedaAttivita&idlegislatura=19&idpersona={N}&tipoAttivita={T}&tipoVisAtt=1&tipopersona=C` → rende la scheda-attività su `www.camera.it/leg19/1431` (HTML). È l'**aggregato ufficiale dell'attività di un parlamentare**, diviso in 7 "tab" (`tipoAttivita`):
21+
22+
- `PDL` — progetti di legge del deputato → **già coperto** dal LOD (`member-bills`, `bill-signatories`).
23+
- `attivitalegislativaassemblea` — interventi legislativi in Aula → coperto da `speeches`.
24+
- `attivitalegislativacommissione` — interventi su ddl **in Commissione, per sede (referente/consultiva)****coperto male** dal LOD: è la granularità genuinamente utile.
25+
- `attivitanonlegislativaassemblea` — mozioni/interpellanze/interrogazioni in Aula → coperto da `aic`, `sindacato-ispettivo`.
26+
- `attivitanonlegislativacommissione` — idem in Commissione → parziale.
27+
- `DOCII`, `DOCXXII` — documenti (Doc. II, Doc. XXII: relazioni di commissioni d'inchiesta) → **non coperto**.
28+
29+
Valutazione: ~70% è ridondante con dati LOD già esposti in modo più pulito e queryabile. Il valore nuovo è ristretto agli **interventi in commissione per sede** e ai **Doc. II/XXII**. Utile fin da subito come **fonte di verifica/completezza** (colpo d'occhio ufficiale su tutta l'attività di un `idpersona`), non prioritaria come nuova fonte-tool.
30+
31+
# Faccia 3 — Bollettino delle Giunte e Commissioni (`sezione=bollettini`)
32+
33+
Il resoconto ufficiale dei lavori di commissione, per giorno. Tre livelli:
34+
35+
- `tipoDoc=indiceGenerale&anno=&mese=&giorno=`**indice del giorno**: elenco delle commissioni attive (link con `idCommissione=NN`).
36+
- `tipoDoc=indice&…&idCommissione=NN`**sommario per commissione**: il livello **semi-strutturato**. Ogni voce ha tipo di esame (es. art. 96-bis), titolo del provvedimento con codice atto (`C. 2947`), tipo (`Governo, approvato dal Senato`), sede/parere (`Parere alla Commissione I`) ed **esito** (`Esame e conclusione – Parere con raccomandazione`).
37+
- `tipoDoc=pdf&…&file=leg.19.bol{NNNN}.data{YYYYMMDD}.indiceGenerale` → il **PDF** del bollettino. Il numero di bollettino (`bol0690`, "Bollettino numero 695") è lo stesso che compare sugli emendamenti e nell'iter: è il **ponte** tra atto/emendamento e resoconto.
38+
39+
È la fonte più ricca del set: tocca **quattro gap** in un colpo — **audizioni** in commissione (oggetto e auditi), **pareri in sede consultiva con esito** (assenti dal LOD), esami in referente con esito, emendamenti votati in commissione.
40+
41+
Due limiti che ne fanno un progetto a sé:
42+
43+
1. **Indicizzato per DATA**, non per atto né per deputato: per l'attività su un dato ddl servono prima le sue date-seduta (ricavabili da `ocd:rif_statoIter` e dagli emendamenti, che riportano il numero di bollettino).
44+
2. **Resoconto narrativo** (HTML/PDF): solo il SOMMARIO è parsabile con affidabilità; il corpo è testo libero.
45+
46+
# Priorità di integrazione
47+
48+
Ordine consigliato, per rapporto valore/costo (dato realmente assente vs già coperto dal LOD, e costo di scraping):
49+
50+
1. **Esito degli emendamenti** — app `apps/emendamenti/`, vista per-seduta `getProposteEmendativeSeduta.aspx` (+ cofirmatari e testo dal singolo emendamento). Dato assente, costo basso, alto valore. Vedi [Assenti / emendamenti](assenti.md).
51+
2. **Interventi in commissione per sede** — Faccia 2 (`attivitalegislativacommissione`) o Faccia 3.
52+
3. **Pareri consultivi e audizioni** — Faccia 3 (Bollettino). La più ricca, la più costosa.
53+
54+
# Advocacy
55+
56+
Il dato strutturato che genera queste pagine **esiste già a monte** (l'app emendamenti ha persino un Web Service SOAP `getEmendamenti` con output XML, ma dichiarato "utilizzabile solo localmente alla macchina server"). La richiesta giusta al Servizio Informatica della Camera è esporre queste funzioni come **dato aperto** (LOD o endpoint JSON/XML per-atto): colmerebbe l'asimmetria col Senato e ci eviterebbe lo scraping. Vedi [contatti gestori](../../note-gestori-lod/) e [freschezza e provenienza](../freschezza-e-autorevolezza.md).

docs/lod-wiki/camera/index.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ Endpoint SPARQL: `https://dati.camera.it/sparql`. Ontologia OCD (namespace `http
1111
* [Iter di un atto — timeline degli stati](iter-statoIter.md) - la cronologia dell'iter è una timeline via `ocd:rif_statoIter` (uno stato per fase, `dc:date`+`dc:title`); copertura alla pari tra legislature (18 = 19). Il ramo Senato dà per design solo lo stato corrente (timeline nel feed RSS), asimmetria di ramo non di legislatura.
1212
* [Firmatari di decreti-legge e atti governativi](firmatari-atti-governativi.md) - sugli atti del Governo `ocd:primo_firmatario` punta a un blank node "membro di governo", non a un deputato: il nome del ministro è via `ocd:rif_persona`, il dicastero in `ocd:ruolo`. Senza seguirli il nome torna vuoto.
1313

14+
# Fonti non-LOD (HTML/PDF)
15+
16+
* [getDocumento.ashx — router delle fonti non-LOD](getdocumento-router.md) - il servizio `CommonServices/getDocumento.ashx` serve, cambiando `sezione`/`tipoDoc`, testi dei ddl, schede-attività dei deputati e Bollettini delle Giunte e Commissioni. Mappa delle facce, copertura vs LOD e priorità di integrazione (scraping, non dato strutturato).
17+
1418
# Assenti
1519

16-
* [Assenti verificati](assenti.md) - dati che NON esistono nel LOD OCD (emendamenti, …).
20+
* [Assenti verificati](assenti.md) - dati che NON esistono nel LOD OCD (emendamenti, …); include la mappa dell'app `apps/emendamenti` (liste, vista per-seduta con esito, endpoint XML indice).

0 commit comments

Comments
 (0)