feat(#106 Folge): 16 Stub-Parser + Tracking-Issues fuer alle Bundeslaender
Pro BL (BUND + 15 Laender) ein Modul app/protokoll_parsers/<bl>.py mit: - Recherche-Findings im Docstring (Doku-System, Base-URL, Format, URL-Discovery-Status, Familie, Aufwand-Schaetzung) - parse_protocol() raised NotImplementedError mit Hinweis auf Issue-Tracker - *Nicht* in PROTOKOLL_PARSERS-Registry → Auto-Ingest-Cron uebersieht sie Tracking-Issues #148-#163 auf Gitea, jeweils mit den Recherche-Findings und einer Checkliste fuer die Implementer-Session. Roadmap-Doc (docs/protokoll-parser-roadmap.md) aktualisiert mit Stub→Issue-Mapping-Tabelle. Wenn der Implementer pro BL fertig ist: 1. NotImplementedError durch echten Parser ersetzen 2. Eintrag in app/protokoll_parsers/__init__.py::PROTOKOLL_PARSERS 3. PROTO_TARGETS in scripts/auto-ingest-protocols.sh ergaenzen 787 Tests gruen, NRW unveraendert.
This commit is contained in:
parent
64a317f45f
commit
c0692b3078
47
app/protokoll_parsers/bb.py
Normal file
47
app/protokoll_parsers/bb.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
"""Brandenburg (BB) — Plenarprotokoll-Parser STUB (#106 Folge, ADR 0009).
|
||||||
|
|
||||||
|
**Status: noch nicht implementiert.** Dieser Modul-Stub enthaelt
|
||||||
|
Recherche-Findings vom 2026-04-28, sodass die Implementer-Session
|
||||||
|
direkt produktiv loslegen kann. Der Stub wird **nicht** in
|
||||||
|
``app.protokoll_parsers.PROTOKOLL_PARSERS`` registriert — der
|
||||||
|
Auto-Ingest-Cron ueberspringt BB solange.
|
||||||
|
|
||||||
|
## Recherche
|
||||||
|
|
||||||
|
| Feld | Wert |
|
||||||
|
|---|---|
|
||||||
|
| **Doku-System** | portala |
|
||||||
|
| **Base-URL** | https://www.parlamentsdokumentation.brandenburg.de |
|
||||||
|
| **Familie** | RP/HE-Familie |
|
||||||
|
| **Format** | PDF (Vote-Tabellen erwartet); BB-Adapter PortalaAdapter |
|
||||||
|
|
||||||
|
## URL-Discovery
|
||||||
|
|
||||||
|
https://www.parlamentsdokumentation.brandenburg.de/parladoku/w8/plpr/PlPr8-{n}.pdf (HTTP 403 ohne Referer)
|
||||||
|
|
||||||
|
## Bezug
|
||||||
|
|
||||||
|
- Architektur: ADR 0009 (Plenarprotokoll-Parser-Registry)
|
||||||
|
- Roadmap: ``docs/protokoll-parser-roadmap.md``
|
||||||
|
- Referenz-Implementation: ``app/protokoll_parsers/nrw.py``
|
||||||
|
(38 Tests, 19/19-Fixture-Garantie)
|
||||||
|
- Folge-Issue: https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/149 (Titel: "protokoll-parser: BB (Brandenburg)")
|
||||||
|
|
||||||
|
## Aufwand
|
||||||
|
|
||||||
|
Geschaetzt 1-3 Tage konzentrierte Arbeit:
|
||||||
|
- 2-4h URL-Discovery + Format-Inspektion (Sample-Protokoll inhaltlich anschauen)
|
||||||
|
- 4-8h Anchor-Phrasen-Reverse-Engineering + Parser-Implementierung
|
||||||
|
- 4h Tests mit Fixture-Pinning
|
||||||
|
- 1h Eintrag in PROTOKOLL_PARSERS + auto-ingest-protocols.sh
|
||||||
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
def parse_protocol(path: str) -> list[dict]:
|
||||||
|
"""STUB — siehe Modul-Docstring."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"BB-Plenarprotokoll-Parser ist noch nicht implementiert. "
|
||||||
|
"Siehe app/protokoll_parsers/bb.py-Docstring fuer Recherche-Findings "
|
||||||
|
"und docs/protokoll-parser-roadmap.md."
|
||||||
|
)
|
||||||
47
app/protokoll_parsers/be.py
Normal file
47
app/protokoll_parsers/be.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
"""Berlin (BE) — Plenarprotokoll-Parser STUB (#106 Folge, ADR 0009).
|
||||||
|
|
||||||
|
**Status: noch nicht implementiert.** Dieser Modul-Stub enthaelt
|
||||||
|
Recherche-Findings vom 2026-04-28, sodass die Implementer-Session
|
||||||
|
direkt produktiv loslegen kann. Der Stub wird **nicht** in
|
||||||
|
``app.protokoll_parsers.PROTOKOLL_PARSERS`` registriert — der
|
||||||
|
Auto-Ingest-Cron ueberspringt BE solange.
|
||||||
|
|
||||||
|
## Recherche
|
||||||
|
|
||||||
|
| Feld | Wert |
|
||||||
|
|---|---|
|
||||||
|
| **Doku-System** | PARDOK |
|
||||||
|
| **Base-URL** | https://pardok.parlament-berlin.de |
|
||||||
|
| **Familie** | LSA-Familie |
|
||||||
|
| **Format** | PDF erwartet |
|
||||||
|
|
||||||
|
## URL-Discovery
|
||||||
|
|
||||||
|
Plenum-PDF-URLs ueber PARDOK-Search-API zu ermitteln; direktes Pattern noch nicht bekannt
|
||||||
|
|
||||||
|
## Bezug
|
||||||
|
|
||||||
|
- Architektur: ADR 0009 (Plenarprotokoll-Parser-Registry)
|
||||||
|
- Roadmap: ``docs/protokoll-parser-roadmap.md``
|
||||||
|
- Referenz-Implementation: ``app/protokoll_parsers/nrw.py``
|
||||||
|
(38 Tests, 19/19-Fixture-Garantie)
|
||||||
|
- Folge-Issue: https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/150 (Titel: "protokoll-parser: BE (Berlin)")
|
||||||
|
|
||||||
|
## Aufwand
|
||||||
|
|
||||||
|
Geschaetzt 1-3 Tage konzentrierte Arbeit:
|
||||||
|
- 2-4h URL-Discovery + Format-Inspektion (Sample-Protokoll inhaltlich anschauen)
|
||||||
|
- 4-8h Anchor-Phrasen-Reverse-Engineering + Parser-Implementierung
|
||||||
|
- 4h Tests mit Fixture-Pinning
|
||||||
|
- 1h Eintrag in PROTOKOLL_PARSERS + auto-ingest-protocols.sh
|
||||||
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
def parse_protocol(path: str) -> list[dict]:
|
||||||
|
"""STUB — siehe Modul-Docstring."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"BE-Plenarprotokoll-Parser ist noch nicht implementiert. "
|
||||||
|
"Siehe app/protokoll_parsers/be.py-Docstring fuer Recherche-Findings "
|
||||||
|
"und docs/protokoll-parser-roadmap.md."
|
||||||
|
)
|
||||||
93
app/protokoll_parsers/bund.py
Normal file
93
app/protokoll_parsers/bund.py
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
"""Bundestag (BUND) — Plenarprotokoll-Parser STUB (#106 Folge, ADR 0009).
|
||||||
|
|
||||||
|
**Status: noch nicht implementiert.** Dieser Modul-Stub enthaelt
|
||||||
|
Recherche-Findings, sodass die Implementer-Session direkt produktiv
|
||||||
|
loslegen kann. Der Stub wird **nicht** in
|
||||||
|
``app.protokoll_parsers.PROTOKOLL_PARSERS`` registriert — der
|
||||||
|
Auto-Ingest-Cron ueberspringt BUND solange.
|
||||||
|
|
||||||
|
## Recherche 2026-04-28
|
||||||
|
|
||||||
|
### URL-Pattern
|
||||||
|
|
||||||
|
Plenum-Protokoll als XML (strukturiert):
|
||||||
|
```
|
||||||
|
https://dserver.bundestag.de/btp/{wp}/{wp}{n:03}.xml
|
||||||
|
```
|
||||||
|
Beispiel WP20 Sitzung 184: ``https://dserver.bundestag.de/btp/20/20184.xml``
|
||||||
|
|
||||||
|
Plenum-Protokoll als PDF (rendert dasselbe):
|
||||||
|
```
|
||||||
|
https://dserver.bundestag.de/btp/{wp}/{wp}{n:03}.pdf
|
||||||
|
```
|
||||||
|
|
||||||
|
### XML-Format
|
||||||
|
|
||||||
|
Top-Level: ``<dbtplenarprotokoll>`` mit Children:
|
||||||
|
- ``<vorspann>`` — Sitzungsmetadaten
|
||||||
|
- ``<sitzungsverlauf>`` — Reden + Tagesordnungspunkte
|
||||||
|
- ``<anlagen>`` — Beschluss-Anlagen, namentliche Abstimmungen
|
||||||
|
- ``<rednerliste>``
|
||||||
|
|
||||||
|
Tags: ``<rede>``, ``<tagesordnungspunkt>``, ``<kommentar>`` (Regie-
|
||||||
|
Anweisungen wie "(Beifall bei der CDU/CSU)"), ``<redner>`` mit
|
||||||
|
``<fraktion>``-Untertag.
|
||||||
|
|
||||||
|
**Kein ``<abstimmung>``-Tag.** Vote-Daten muessen aus Reden + Kommentaren
|
||||||
|
extrahiert werden — gleiche Architektur wie NRW (Anchor-basiert), aber
|
||||||
|
mit ANDEREN Anchor-Phrasen.
|
||||||
|
|
||||||
|
### Vote-Anchor-Phrasen (vom NRW-Pattern abweichend!)
|
||||||
|
|
||||||
|
Bundestag-typisch:
|
||||||
|
- "Wer dem [Antrag/Gesetzentwurf] seine Zustimmung gibt, den bitte
|
||||||
|
ich, sich vom Platz zu erheben."
|
||||||
|
- "Damit ist [...] in zweiter Beratung angenommen."
|
||||||
|
- "Die Mehrheit hat den Gesetzentwurf [...] abgelehnt."
|
||||||
|
- "Wir kommen zur Abstimmung in dritter Lesung."
|
||||||
|
- "[...] wird zur federfuehrenden Beratung an den Ausschuss [...]
|
||||||
|
ueberwiesen."
|
||||||
|
|
||||||
|
**Achtung:** WP20-Sitzung 184 enthielt 0 dieser Anchors weil pure
|
||||||
|
Aussprache. Echtes Sample mit Beschluessen brauchts (z.B. Sitzungen
|
||||||
|
mit Gesetzentwurf-Lesungen).
|
||||||
|
|
||||||
|
### Strukturierte Alternative — namentliche Abstimmungen
|
||||||
|
|
||||||
|
Bundestag publiziert namentliche Abstimmungen separat als Excel/XML
|
||||||
|
unter ``bundestag.de/parlament/plenum/abstimmung/abstimmung``. Pro
|
||||||
|
Abstimmung MP-level Vote-Records. Fraktions-Aggregate sind dort
|
||||||
|
extrahierbar OHNE PDF-Parsing.
|
||||||
|
|
||||||
|
**Empfehlung fuer Implementer:** statt PDF/XML-Parser bauen, lieber
|
||||||
|
``app/abgeordnetenwatch.py`` (existiert) auf Fraktions-Aggregat-Form
|
||||||
|
runterrechnen — das deckt namentliche Abstimmungen sauber ab. Nur fuer
|
||||||
|
Hammelsprung-und-Handzeichen-Abstimmungen (nicht-namentlich) muss man
|
||||||
|
das XML-Plenum parsen.
|
||||||
|
|
||||||
|
### Sample-Daten fuer Tests
|
||||||
|
|
||||||
|
- WP20 Sitzung 30: "{wp}{n:03}" → btp/20/20030.xml — enthaelt diverse
|
||||||
|
Gesetzentwurf-Beschluesse
|
||||||
|
- Sitzungen mit "namentliche Abstimmung" laut Tagesordnung sind
|
||||||
|
Goldstandard fuer Tests
|
||||||
|
|
||||||
|
### Aufwand
|
||||||
|
|
||||||
|
Geschaetzt 1-2 Tage:
|
||||||
|
- 4h Reverse-Engineering der Anchor-Sprache (mehrere Sample-Sitzungen)
|
||||||
|
- 4h Parser-Implementierung
|
||||||
|
- 4h Tests (Fixture-Pinning analog NRW 19/19-Garantie)
|
||||||
|
|
||||||
|
Folge-Issue: https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/148
|
||||||
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
def parse_protocol(pdf_or_xml_path: str) -> list[dict]:
|
||||||
|
"""STUB — siehe Modul-Docstring."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"BUND-Plenarprotokoll-Parser ist noch nicht implementiert. "
|
||||||
|
"Siehe app/protokoll_parsers/bund.py-Docstring fuer Recherche-Findings "
|
||||||
|
"und docs/protokoll-parser-roadmap.md."
|
||||||
|
)
|
||||||
47
app/protokoll_parsers/bw.py
Normal file
47
app/protokoll_parsers/bw.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
"""Baden-Württemberg (BW) — Plenarprotokoll-Parser STUB (#106 Folge, ADR 0009).
|
||||||
|
|
||||||
|
**Status: noch nicht implementiert.** Dieser Modul-Stub enthaelt
|
||||||
|
Recherche-Findings vom 2026-04-28, sodass die Implementer-Session
|
||||||
|
direkt produktiv loslegen kann. Der Stub wird **nicht** in
|
||||||
|
``app.protokoll_parsers.PROTOKOLL_PARSERS`` registriert — der
|
||||||
|
Auto-Ingest-Cron ueberspringt BW solange.
|
||||||
|
|
||||||
|
## Recherche
|
||||||
|
|
||||||
|
| Feld | Wert |
|
||||||
|
|---|---|
|
||||||
|
| **Doku-System** | PARLIS |
|
||||||
|
| **Base-URL** | https://parlis.landtag-bw.de |
|
||||||
|
| **Familie** | eigenstaendig (PARLIS-spezifisch, eigene Pattern) |
|
||||||
|
| **Format** | PDF; URL-Pattern bekannt mit 4-stelliger Sitzungs-Nr |
|
||||||
|
|
||||||
|
## URL-Discovery
|
||||||
|
|
||||||
|
https://www.landtag-bw.de/files/live/sites/LTBW/files/dokumente/WP{wp}/Plp/{wp}_{n:04}.pdf (HTTP 200 verifiziert!)
|
||||||
|
|
||||||
|
## Bezug
|
||||||
|
|
||||||
|
- Architektur: ADR 0009 (Plenarprotokoll-Parser-Registry)
|
||||||
|
- Roadmap: ``docs/protokoll-parser-roadmap.md``
|
||||||
|
- Referenz-Implementation: ``app/protokoll_parsers/nrw.py``
|
||||||
|
(38 Tests, 19/19-Fixture-Garantie)
|
||||||
|
- Folge-Issue: https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/151 (Titel: "protokoll-parser: BW (Baden-Württemberg)")
|
||||||
|
|
||||||
|
## Aufwand
|
||||||
|
|
||||||
|
Geschaetzt 1-3 Tage konzentrierte Arbeit:
|
||||||
|
- 2-4h URL-Discovery + Format-Inspektion (Sample-Protokoll inhaltlich anschauen)
|
||||||
|
- 4-8h Anchor-Phrasen-Reverse-Engineering + Parser-Implementierung
|
||||||
|
- 4h Tests mit Fixture-Pinning
|
||||||
|
- 1h Eintrag in PROTOKOLL_PARSERS + auto-ingest-protocols.sh
|
||||||
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
def parse_protocol(path: str) -> list[dict]:
|
||||||
|
"""STUB — siehe Modul-Docstring."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"BW-Plenarprotokoll-Parser ist noch nicht implementiert. "
|
||||||
|
"Siehe app/protokoll_parsers/bw.py-Docstring fuer Recherche-Findings "
|
||||||
|
"und docs/protokoll-parser-roadmap.md."
|
||||||
|
)
|
||||||
47
app/protokoll_parsers/by.py
Normal file
47
app/protokoll_parsers/by.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
"""Bayern (BY) — Plenarprotokoll-Parser STUB (#106 Folge, ADR 0009).
|
||||||
|
|
||||||
|
**Status: noch nicht implementiert.** Dieser Modul-Stub enthaelt
|
||||||
|
Recherche-Findings vom 2026-04-28, sodass die Implementer-Session
|
||||||
|
direkt produktiv loslegen kann. Der Stub wird **nicht** in
|
||||||
|
``app.protokoll_parsers.PROTOKOLL_PARSERS`` registriert — der
|
||||||
|
Auto-Ingest-Cron ueberspringt BY solange.
|
||||||
|
|
||||||
|
## Recherche
|
||||||
|
|
||||||
|
| Feld | Wert |
|
||||||
|
|---|---|
|
||||||
|
| **Doku-System** | Eigensystem |
|
||||||
|
| **Base-URL** | https://www.bayern.landtag.de |
|
||||||
|
| **Familie** | eigenstaendig |
|
||||||
|
| **Format** | PDF erwartet, eigenes ElanTextAblage-System |
|
||||||
|
|
||||||
|
## URL-Discovery
|
||||||
|
|
||||||
|
URL-Pattern nicht trivial vorhersagbar — direkte Probe schlug 404
|
||||||
|
|
||||||
|
## Bezug
|
||||||
|
|
||||||
|
- Architektur: ADR 0009 (Plenarprotokoll-Parser-Registry)
|
||||||
|
- Roadmap: ``docs/protokoll-parser-roadmap.md``
|
||||||
|
- Referenz-Implementation: ``app/protokoll_parsers/nrw.py``
|
||||||
|
(38 Tests, 19/19-Fixture-Garantie)
|
||||||
|
- Folge-Issue: https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/152 (Titel: "protokoll-parser: BY (Bayern)")
|
||||||
|
|
||||||
|
## Aufwand
|
||||||
|
|
||||||
|
Geschaetzt 1-3 Tage konzentrierte Arbeit:
|
||||||
|
- 2-4h URL-Discovery + Format-Inspektion (Sample-Protokoll inhaltlich anschauen)
|
||||||
|
- 4-8h Anchor-Phrasen-Reverse-Engineering + Parser-Implementierung
|
||||||
|
- 4h Tests mit Fixture-Pinning
|
||||||
|
- 1h Eintrag in PROTOKOLL_PARSERS + auto-ingest-protocols.sh
|
||||||
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
def parse_protocol(path: str) -> list[dict]:
|
||||||
|
"""STUB — siehe Modul-Docstring."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"BY-Plenarprotokoll-Parser ist noch nicht implementiert. "
|
||||||
|
"Siehe app/protokoll_parsers/by.py-Docstring fuer Recherche-Findings "
|
||||||
|
"und docs/protokoll-parser-roadmap.md."
|
||||||
|
)
|
||||||
47
app/protokoll_parsers/hb.py
Normal file
47
app/protokoll_parsers/hb.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
"""Bremen (HB) — Plenarprotokoll-Parser STUB (#106 Folge, ADR 0009).
|
||||||
|
|
||||||
|
**Status: noch nicht implementiert.** Dieser Modul-Stub enthaelt
|
||||||
|
Recherche-Findings vom 2026-04-28, sodass die Implementer-Session
|
||||||
|
direkt produktiv loslegen kann. Der Stub wird **nicht** in
|
||||||
|
``app.protokoll_parsers.PROTOKOLL_PARSERS`` registriert — der
|
||||||
|
Auto-Ingest-Cron ueberspringt HB solange.
|
||||||
|
|
||||||
|
## Recherche
|
||||||
|
|
||||||
|
| Feld | Wert |
|
||||||
|
|---|---|
|
||||||
|
| **Doku-System** | PARiS |
|
||||||
|
| **Base-URL** | https://paris.bremische-buergerschaft.de |
|
||||||
|
| **Familie** | StarWeb-Familie |
|
||||||
|
| **Format** | PDF (oder HTML) |
|
||||||
|
|
||||||
|
## URL-Discovery
|
||||||
|
|
||||||
|
URL-Pattern unbekannt — PARiS-Skin-Search-API noetig
|
||||||
|
|
||||||
|
## Bezug
|
||||||
|
|
||||||
|
- Architektur: ADR 0009 (Plenarprotokoll-Parser-Registry)
|
||||||
|
- Roadmap: ``docs/protokoll-parser-roadmap.md``
|
||||||
|
- Referenz-Implementation: ``app/protokoll_parsers/nrw.py``
|
||||||
|
(38 Tests, 19/19-Fixture-Garantie)
|
||||||
|
- Folge-Issue: https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/153 (Titel: "protokoll-parser: HB (Bremen)")
|
||||||
|
|
||||||
|
## Aufwand
|
||||||
|
|
||||||
|
Geschaetzt 1-3 Tage konzentrierte Arbeit:
|
||||||
|
- 2-4h URL-Discovery + Format-Inspektion (Sample-Protokoll inhaltlich anschauen)
|
||||||
|
- 4-8h Anchor-Phrasen-Reverse-Engineering + Parser-Implementierung
|
||||||
|
- 4h Tests mit Fixture-Pinning
|
||||||
|
- 1h Eintrag in PROTOKOLL_PARSERS + auto-ingest-protocols.sh
|
||||||
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
def parse_protocol(path: str) -> list[dict]:
|
||||||
|
"""STUB — siehe Modul-Docstring."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"HB-Plenarprotokoll-Parser ist noch nicht implementiert. "
|
||||||
|
"Siehe app/protokoll_parsers/hb.py-Docstring fuer Recherche-Findings "
|
||||||
|
"und docs/protokoll-parser-roadmap.md."
|
||||||
|
)
|
||||||
47
app/protokoll_parsers/he.py
Normal file
47
app/protokoll_parsers/he.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
"""Hessen (HE) — Plenarprotokoll-Parser STUB (#106 Folge, ADR 0009).
|
||||||
|
|
||||||
|
**Status: noch nicht implementiert.** Dieser Modul-Stub enthaelt
|
||||||
|
Recherche-Findings vom 2026-04-28, sodass die Implementer-Session
|
||||||
|
direkt produktiv loslegen kann. Der Stub wird **nicht** in
|
||||||
|
``app.protokoll_parsers.PROTOKOLL_PARSERS`` registriert — der
|
||||||
|
Auto-Ingest-Cron ueberspringt HE solange.
|
||||||
|
|
||||||
|
## Recherche
|
||||||
|
|
||||||
|
| Feld | Wert |
|
||||||
|
|---|---|
|
||||||
|
| **Doku-System** | portala |
|
||||||
|
| **Base-URL** | https://starweb.hessen.de/portal |
|
||||||
|
| **Familie** | BB/RP-Familie |
|
||||||
|
| **Format** | HTML bevorzugt; ggf. PDF als Fallback |
|
||||||
|
|
||||||
|
## URL-Discovery
|
||||||
|
|
||||||
|
Plenum-Protokolle wahrscheinlich als HTML mit semantischen Tags pro Beschluss — wenn HTML zugaenglich, EINFACHER als PDF-Parser
|
||||||
|
|
||||||
|
## Bezug
|
||||||
|
|
||||||
|
- Architektur: ADR 0009 (Plenarprotokoll-Parser-Registry)
|
||||||
|
- Roadmap: ``docs/protokoll-parser-roadmap.md``
|
||||||
|
- Referenz-Implementation: ``app/protokoll_parsers/nrw.py``
|
||||||
|
(38 Tests, 19/19-Fixture-Garantie)
|
||||||
|
- Folge-Issue: https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/154 (Titel: "protokoll-parser: HE (Hessen)")
|
||||||
|
|
||||||
|
## Aufwand
|
||||||
|
|
||||||
|
Geschaetzt 1-3 Tage konzentrierte Arbeit:
|
||||||
|
- 2-4h URL-Discovery + Format-Inspektion (Sample-Protokoll inhaltlich anschauen)
|
||||||
|
- 4-8h Anchor-Phrasen-Reverse-Engineering + Parser-Implementierung
|
||||||
|
- 4h Tests mit Fixture-Pinning
|
||||||
|
- 1h Eintrag in PROTOKOLL_PARSERS + auto-ingest-protocols.sh
|
||||||
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
def parse_protocol(path: str) -> list[dict]:
|
||||||
|
"""STUB — siehe Modul-Docstring."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"HE-Plenarprotokoll-Parser ist noch nicht implementiert. "
|
||||||
|
"Siehe app/protokoll_parsers/he.py-Docstring fuer Recherche-Findings "
|
||||||
|
"und docs/protokoll-parser-roadmap.md."
|
||||||
|
)
|
||||||
47
app/protokoll_parsers/hh.py
Normal file
47
app/protokoll_parsers/hh.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
"""Hamburg (HH) — Plenarprotokoll-Parser STUB (#106 Folge, ADR 0009).
|
||||||
|
|
||||||
|
**Status: noch nicht implementiert.** Dieser Modul-Stub enthaelt
|
||||||
|
Recherche-Findings vom 2026-04-28, sodass die Implementer-Session
|
||||||
|
direkt produktiv loslegen kann. Der Stub wird **nicht** in
|
||||||
|
``app.protokoll_parsers.PROTOKOLL_PARSERS`` registriert — der
|
||||||
|
Auto-Ingest-Cron ueberspringt HH solange.
|
||||||
|
|
||||||
|
## Recherche
|
||||||
|
|
||||||
|
| Feld | Wert |
|
||||||
|
|---|---|
|
||||||
|
| **Doku-System** | ParlDok |
|
||||||
|
| **Base-URL** | https://www.buergerschaft-hh.de/parldok |
|
||||||
|
| **Familie** | MV/TH-Familie |
|
||||||
|
| **Format** | PDF via ParlDok-Search |
|
||||||
|
|
||||||
|
## URL-Discovery
|
||||||
|
|
||||||
|
ParlDok 5.x oder 8.x — Live-Format vor Implementierung verifizieren (curl -s buergerschaft-hh.de/parldok/ | grep ParlDok)
|
||||||
|
|
||||||
|
## Bezug
|
||||||
|
|
||||||
|
- Architektur: ADR 0009 (Plenarprotokoll-Parser-Registry)
|
||||||
|
- Roadmap: ``docs/protokoll-parser-roadmap.md``
|
||||||
|
- Referenz-Implementation: ``app/protokoll_parsers/nrw.py``
|
||||||
|
(38 Tests, 19/19-Fixture-Garantie)
|
||||||
|
- Folge-Issue: https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/155 (Titel: "protokoll-parser: HH (Hamburg)")
|
||||||
|
|
||||||
|
## Aufwand
|
||||||
|
|
||||||
|
Geschaetzt 1-3 Tage konzentrierte Arbeit:
|
||||||
|
- 2-4h URL-Discovery + Format-Inspektion (Sample-Protokoll inhaltlich anschauen)
|
||||||
|
- 4-8h Anchor-Phrasen-Reverse-Engineering + Parser-Implementierung
|
||||||
|
- 4h Tests mit Fixture-Pinning
|
||||||
|
- 1h Eintrag in PROTOKOLL_PARSERS + auto-ingest-protocols.sh
|
||||||
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
def parse_protocol(path: str) -> list[dict]:
|
||||||
|
"""STUB — siehe Modul-Docstring."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"HH-Plenarprotokoll-Parser ist noch nicht implementiert. "
|
||||||
|
"Siehe app/protokoll_parsers/hh.py-Docstring fuer Recherche-Findings "
|
||||||
|
"und docs/protokoll-parser-roadmap.md."
|
||||||
|
)
|
||||||
47
app/protokoll_parsers/lsa.py
Normal file
47
app/protokoll_parsers/lsa.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
"""Sachsen-Anhalt (LSA) — Plenarprotokoll-Parser STUB (#106 Folge, ADR 0009).
|
||||||
|
|
||||||
|
**Status: noch nicht implementiert.** Dieser Modul-Stub enthaelt
|
||||||
|
Recherche-Findings vom 2026-04-28, sodass die Implementer-Session
|
||||||
|
direkt produktiv loslegen kann. Der Stub wird **nicht** in
|
||||||
|
``app.protokoll_parsers.PROTOKOLL_PARSERS`` registriert — der
|
||||||
|
Auto-Ingest-Cron ueberspringt LSA solange.
|
||||||
|
|
||||||
|
## Recherche
|
||||||
|
|
||||||
|
| Feld | Wert |
|
||||||
|
|---|---|
|
||||||
|
| **Doku-System** | PARDOK |
|
||||||
|
| **Base-URL** | https://padoka.landtag.sachsen-anhalt.de |
|
||||||
|
| **Familie** | BE-Familie |
|
||||||
|
| **Format** | PDF erwartet |
|
||||||
|
|
||||||
|
## URL-Discovery
|
||||||
|
|
||||||
|
Padoka-Plattform; URL-Pattern via Search-API zu ermitteln
|
||||||
|
|
||||||
|
## Bezug
|
||||||
|
|
||||||
|
- Architektur: ADR 0009 (Plenarprotokoll-Parser-Registry)
|
||||||
|
- Roadmap: ``docs/protokoll-parser-roadmap.md``
|
||||||
|
- Referenz-Implementation: ``app/protokoll_parsers/nrw.py``
|
||||||
|
(38 Tests, 19/19-Fixture-Garantie)
|
||||||
|
- Folge-Issue: https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/156 (Titel: "protokoll-parser: LSA (Sachsen-Anhalt)")
|
||||||
|
|
||||||
|
## Aufwand
|
||||||
|
|
||||||
|
Geschaetzt 1-3 Tage konzentrierte Arbeit:
|
||||||
|
- 2-4h URL-Discovery + Format-Inspektion (Sample-Protokoll inhaltlich anschauen)
|
||||||
|
- 4-8h Anchor-Phrasen-Reverse-Engineering + Parser-Implementierung
|
||||||
|
- 4h Tests mit Fixture-Pinning
|
||||||
|
- 1h Eintrag in PROTOKOLL_PARSERS + auto-ingest-protocols.sh
|
||||||
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
def parse_protocol(path: str) -> list[dict]:
|
||||||
|
"""STUB — siehe Modul-Docstring."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"LSA-Plenarprotokoll-Parser ist noch nicht implementiert. "
|
||||||
|
"Siehe app/protokoll_parsers/lsa.py-Docstring fuer Recherche-Findings "
|
||||||
|
"und docs/protokoll-parser-roadmap.md."
|
||||||
|
)
|
||||||
47
app/protokoll_parsers/mv.py
Normal file
47
app/protokoll_parsers/mv.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
"""Mecklenburg-Vorpommern (MV) — Plenarprotokoll-Parser STUB (#106 Folge, ADR 0009).
|
||||||
|
|
||||||
|
**Status: noch nicht implementiert.** Dieser Modul-Stub enthaelt
|
||||||
|
Recherche-Findings vom 2026-04-28, sodass die Implementer-Session
|
||||||
|
direkt produktiv loslegen kann. Der Stub wird **nicht** in
|
||||||
|
``app.protokoll_parsers.PROTOKOLL_PARSERS`` registriert — der
|
||||||
|
Auto-Ingest-Cron ueberspringt MV solange.
|
||||||
|
|
||||||
|
## Recherche
|
||||||
|
|
||||||
|
| Feld | Wert |
|
||||||
|
|---|---|
|
||||||
|
| **Doku-System** | ParlDok |
|
||||||
|
| **Base-URL** | https://www.dokumentation.landtag-mv.de |
|
||||||
|
| **Familie** | TH-Familie (synergie-fähig) |
|
||||||
|
| **Format** | PDF nach ID-Discovery |
|
||||||
|
|
||||||
|
## URL-Discovery
|
||||||
|
|
||||||
|
ParlDok 8.x SPA — Plenum-PDFs hinter Search-API. Doc-IDs nicht direkt vorhersagbar. Fuer URL-Discovery: ParlDok-Search mit Plenarprotokoll-Filter durchparsen.
|
||||||
|
|
||||||
|
## Bezug
|
||||||
|
|
||||||
|
- Architektur: ADR 0009 (Plenarprotokoll-Parser-Registry)
|
||||||
|
- Roadmap: ``docs/protokoll-parser-roadmap.md``
|
||||||
|
- Referenz-Implementation: ``app/protokoll_parsers/nrw.py``
|
||||||
|
(38 Tests, 19/19-Fixture-Garantie)
|
||||||
|
- Folge-Issue: https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/157 (Titel: "protokoll-parser: MV (Mecklenburg-Vorpommern)")
|
||||||
|
|
||||||
|
## Aufwand
|
||||||
|
|
||||||
|
Geschaetzt 1-3 Tage konzentrierte Arbeit:
|
||||||
|
- 2-4h URL-Discovery + Format-Inspektion (Sample-Protokoll inhaltlich anschauen)
|
||||||
|
- 4-8h Anchor-Phrasen-Reverse-Engineering + Parser-Implementierung
|
||||||
|
- 4h Tests mit Fixture-Pinning
|
||||||
|
- 1h Eintrag in PROTOKOLL_PARSERS + auto-ingest-protocols.sh
|
||||||
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
def parse_protocol(path: str) -> list[dict]:
|
||||||
|
"""STUB — siehe Modul-Docstring."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"MV-Plenarprotokoll-Parser ist noch nicht implementiert. "
|
||||||
|
"Siehe app/protokoll_parsers/mv.py-Docstring fuer Recherche-Findings "
|
||||||
|
"und docs/protokoll-parser-roadmap.md."
|
||||||
|
)
|
||||||
47
app/protokoll_parsers/ni.py
Normal file
47
app/protokoll_parsers/ni.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
"""Niedersachsen (NI) — Plenarprotokoll-Parser STUB (#106 Folge, ADR 0009).
|
||||||
|
|
||||||
|
**Status: noch nicht implementiert.** Dieser Modul-Stub enthaelt
|
||||||
|
Recherche-Findings vom 2026-04-28, sodass die Implementer-Session
|
||||||
|
direkt produktiv loslegen kann. Der Stub wird **nicht** in
|
||||||
|
``app.protokoll_parsers.PROTOKOLL_PARSERS`` registriert — der
|
||||||
|
Auto-Ingest-Cron ueberspringt NI solange.
|
||||||
|
|
||||||
|
## Recherche
|
||||||
|
|
||||||
|
| Feld | Wert |
|
||||||
|
|---|---|
|
||||||
|
| **Doku-System** | StarWeb |
|
||||||
|
| **Base-URL** | https://www.landtag-niedersachsen.de |
|
||||||
|
| **Familie** | HB/SH-Familie |
|
||||||
|
| **Format** | PDF erwartet, ggf. mit Auth-Workaround |
|
||||||
|
|
||||||
|
## URL-Discovery
|
||||||
|
|
||||||
|
nilas-Portal Login-protected fuer Drucksachen — fuer Plenarprotokolle ggf. eigener oeffentlicher Endpunkt; HAR-Capture noetig (siehe Issue #22)
|
||||||
|
|
||||||
|
## Bezug
|
||||||
|
|
||||||
|
- Architektur: ADR 0009 (Plenarprotokoll-Parser-Registry)
|
||||||
|
- Roadmap: ``docs/protokoll-parser-roadmap.md``
|
||||||
|
- Referenz-Implementation: ``app/protokoll_parsers/nrw.py``
|
||||||
|
(38 Tests, 19/19-Fixture-Garantie)
|
||||||
|
- Folge-Issue: https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/158 (Titel: "protokoll-parser: NI (Niedersachsen)")
|
||||||
|
|
||||||
|
## Aufwand
|
||||||
|
|
||||||
|
Geschaetzt 1-3 Tage konzentrierte Arbeit:
|
||||||
|
- 2-4h URL-Discovery + Format-Inspektion (Sample-Protokoll inhaltlich anschauen)
|
||||||
|
- 4-8h Anchor-Phrasen-Reverse-Engineering + Parser-Implementierung
|
||||||
|
- 4h Tests mit Fixture-Pinning
|
||||||
|
- 1h Eintrag in PROTOKOLL_PARSERS + auto-ingest-protocols.sh
|
||||||
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
def parse_protocol(path: str) -> list[dict]:
|
||||||
|
"""STUB — siehe Modul-Docstring."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"NI-Plenarprotokoll-Parser ist noch nicht implementiert. "
|
||||||
|
"Siehe app/protokoll_parsers/ni.py-Docstring fuer Recherche-Findings "
|
||||||
|
"und docs/protokoll-parser-roadmap.md."
|
||||||
|
)
|
||||||
47
app/protokoll_parsers/rp.py
Normal file
47
app/protokoll_parsers/rp.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
"""Rheinland-Pfalz (RP) — Plenarprotokoll-Parser STUB (#106 Folge, ADR 0009).
|
||||||
|
|
||||||
|
**Status: noch nicht implementiert.** Dieser Modul-Stub enthaelt
|
||||||
|
Recherche-Findings vom 2026-04-28, sodass die Implementer-Session
|
||||||
|
direkt produktiv loslegen kann. Der Stub wird **nicht** in
|
||||||
|
``app.protokoll_parsers.PROTOKOLL_PARSERS`` registriert — der
|
||||||
|
Auto-Ingest-Cron ueberspringt RP solange.
|
||||||
|
|
||||||
|
## Recherche
|
||||||
|
|
||||||
|
| Feld | Wert |
|
||||||
|
|---|---|
|
||||||
|
| **Doku-System** | portala |
|
||||||
|
| **Base-URL** | https://opal.rlp.de |
|
||||||
|
| **Familie** | BB/HE-Familie |
|
||||||
|
| **Format** | PDF erwartet |
|
||||||
|
|
||||||
|
## URL-Discovery
|
||||||
|
|
||||||
|
OPAL_extern (NICHT identisch mit NRW-OPAL); URL-Pattern via Search-API
|
||||||
|
|
||||||
|
## Bezug
|
||||||
|
|
||||||
|
- Architektur: ADR 0009 (Plenarprotokoll-Parser-Registry)
|
||||||
|
- Roadmap: ``docs/protokoll-parser-roadmap.md``
|
||||||
|
- Referenz-Implementation: ``app/protokoll_parsers/nrw.py``
|
||||||
|
(38 Tests, 19/19-Fixture-Garantie)
|
||||||
|
- Folge-Issue: https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/159 (Titel: "protokoll-parser: RP (Rheinland-Pfalz)")
|
||||||
|
|
||||||
|
## Aufwand
|
||||||
|
|
||||||
|
Geschaetzt 1-3 Tage konzentrierte Arbeit:
|
||||||
|
- 2-4h URL-Discovery + Format-Inspektion (Sample-Protokoll inhaltlich anschauen)
|
||||||
|
- 4-8h Anchor-Phrasen-Reverse-Engineering + Parser-Implementierung
|
||||||
|
- 4h Tests mit Fixture-Pinning
|
||||||
|
- 1h Eintrag in PROTOKOLL_PARSERS + auto-ingest-protocols.sh
|
||||||
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
def parse_protocol(path: str) -> list[dict]:
|
||||||
|
"""STUB — siehe Modul-Docstring."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"RP-Plenarprotokoll-Parser ist noch nicht implementiert. "
|
||||||
|
"Siehe app/protokoll_parsers/rp.py-Docstring fuer Recherche-Findings "
|
||||||
|
"und docs/protokoll-parser-roadmap.md."
|
||||||
|
)
|
||||||
47
app/protokoll_parsers/sh.py
Normal file
47
app/protokoll_parsers/sh.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
"""Schleswig-Holstein (SH) — Plenarprotokoll-Parser STUB (#106 Folge, ADR 0009).
|
||||||
|
|
||||||
|
**Status: noch nicht implementiert.** Dieser Modul-Stub enthaelt
|
||||||
|
Recherche-Findings vom 2026-04-28, sodass die Implementer-Session
|
||||||
|
direkt produktiv loslegen kann. Der Stub wird **nicht** in
|
||||||
|
``app.protokoll_parsers.PROTOKOLL_PARSERS`` registriert — der
|
||||||
|
Auto-Ingest-Cron ueberspringt SH solange.
|
||||||
|
|
||||||
|
## Recherche
|
||||||
|
|
||||||
|
| Feld | Wert |
|
||||||
|
|---|---|
|
||||||
|
| **Doku-System** | StarWeb |
|
||||||
|
| **Base-URL** | http://lissh.lvn.parlanet.de |
|
||||||
|
| **Familie** | HB/NI-Familie |
|
||||||
|
| **Format** | PDF erwartet |
|
||||||
|
|
||||||
|
## URL-Discovery
|
||||||
|
|
||||||
|
Starfinder-CGI-Backend; Plenum-Protokolle als PDF-Direktlinks moeglich
|
||||||
|
|
||||||
|
## Bezug
|
||||||
|
|
||||||
|
- Architektur: ADR 0009 (Plenarprotokoll-Parser-Registry)
|
||||||
|
- Roadmap: ``docs/protokoll-parser-roadmap.md``
|
||||||
|
- Referenz-Implementation: ``app/protokoll_parsers/nrw.py``
|
||||||
|
(38 Tests, 19/19-Fixture-Garantie)
|
||||||
|
- Folge-Issue: https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/160 (Titel: "protokoll-parser: SH (Schleswig-Holstein)")
|
||||||
|
|
||||||
|
## Aufwand
|
||||||
|
|
||||||
|
Geschaetzt 1-3 Tage konzentrierte Arbeit:
|
||||||
|
- 2-4h URL-Discovery + Format-Inspektion (Sample-Protokoll inhaltlich anschauen)
|
||||||
|
- 4-8h Anchor-Phrasen-Reverse-Engineering + Parser-Implementierung
|
||||||
|
- 4h Tests mit Fixture-Pinning
|
||||||
|
- 1h Eintrag in PROTOKOLL_PARSERS + auto-ingest-protocols.sh
|
||||||
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
def parse_protocol(path: str) -> list[dict]:
|
||||||
|
"""STUB — siehe Modul-Docstring."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"SH-Plenarprotokoll-Parser ist noch nicht implementiert. "
|
||||||
|
"Siehe app/protokoll_parsers/sh.py-Docstring fuer Recherche-Findings "
|
||||||
|
"und docs/protokoll-parser-roadmap.md."
|
||||||
|
)
|
||||||
47
app/protokoll_parsers/sl.py
Normal file
47
app/protokoll_parsers/sl.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
"""Saarland (SL) — Plenarprotokoll-Parser STUB (#106 Folge, ADR 0009).
|
||||||
|
|
||||||
|
**Status: noch nicht implementiert.** Dieser Modul-Stub enthaelt
|
||||||
|
Recherche-Findings vom 2026-04-28, sodass die Implementer-Session
|
||||||
|
direkt produktiv loslegen kann. Der Stub wird **nicht** in
|
||||||
|
``app.protokoll_parsers.PROTOKOLL_PARSERS`` registriert — der
|
||||||
|
Auto-Ingest-Cron ueberspringt SL solange.
|
||||||
|
|
||||||
|
## Recherche
|
||||||
|
|
||||||
|
| Feld | Wert |
|
||||||
|
|---|---|
|
||||||
|
| **Doku-System** | Eigensystem |
|
||||||
|
| **Base-URL** | https://www.landtag-saar.de |
|
||||||
|
| **Familie** | eigenstaendig |
|
||||||
|
| **Format** | PDF erwartet ueber Umbraco-Filterm |
|
||||||
|
|
||||||
|
## URL-Discovery
|
||||||
|
|
||||||
|
Umbraco-Backend; siehe SaarlandAdapter — Plenum-Protokolle ggf. analog Drucksachen via aawSearchSurfaceController-Pattern
|
||||||
|
|
||||||
|
## Bezug
|
||||||
|
|
||||||
|
- Architektur: ADR 0009 (Plenarprotokoll-Parser-Registry)
|
||||||
|
- Roadmap: ``docs/protokoll-parser-roadmap.md``
|
||||||
|
- Referenz-Implementation: ``app/protokoll_parsers/nrw.py``
|
||||||
|
(38 Tests, 19/19-Fixture-Garantie)
|
||||||
|
- Folge-Issue: https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/161 (Titel: "protokoll-parser: SL (Saarland)")
|
||||||
|
|
||||||
|
## Aufwand
|
||||||
|
|
||||||
|
Geschaetzt 1-3 Tage konzentrierte Arbeit:
|
||||||
|
- 2-4h URL-Discovery + Format-Inspektion (Sample-Protokoll inhaltlich anschauen)
|
||||||
|
- 4-8h Anchor-Phrasen-Reverse-Engineering + Parser-Implementierung
|
||||||
|
- 4h Tests mit Fixture-Pinning
|
||||||
|
- 1h Eintrag in PROTOKOLL_PARSERS + auto-ingest-protocols.sh
|
||||||
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
def parse_protocol(path: str) -> list[dict]:
|
||||||
|
"""STUB — siehe Modul-Docstring."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"SL-Plenarprotokoll-Parser ist noch nicht implementiert. "
|
||||||
|
"Siehe app/protokoll_parsers/sl.py-Docstring fuer Recherche-Findings "
|
||||||
|
"und docs/protokoll-parser-roadmap.md."
|
||||||
|
)
|
||||||
47
app/protokoll_parsers/sn.py
Normal file
47
app/protokoll_parsers/sn.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
"""Sachsen (SN) — Plenarprotokoll-Parser STUB (#106 Folge, ADR 0009).
|
||||||
|
|
||||||
|
**Status: noch nicht implementiert.** Dieser Modul-Stub enthaelt
|
||||||
|
Recherche-Findings vom 2026-04-28, sodass die Implementer-Session
|
||||||
|
direkt produktiv loslegen kann. Der Stub wird **nicht** in
|
||||||
|
``app.protokoll_parsers.PROTOKOLL_PARSERS`` registriert — der
|
||||||
|
Auto-Ingest-Cron ueberspringt SN solange.
|
||||||
|
|
||||||
|
## Recherche
|
||||||
|
|
||||||
|
| Feld | Wert |
|
||||||
|
|---|---|
|
||||||
|
| **Doku-System** | EDAS-XML-Export |
|
||||||
|
| **Base-URL** | https://edas.landtag.sachsen.de |
|
||||||
|
| **Familie** | eigenstaendig |
|
||||||
|
| **Format** | XML bevorzugt |
|
||||||
|
|
||||||
|
## URL-Discovery
|
||||||
|
|
||||||
|
EDAS macht XML-Export — Plenarprotokolle ggf. ebenfalls strukturiert verfuegbar; Synergie mit bestehendem `app/sn_xml_export`-Workflow pruefen
|
||||||
|
|
||||||
|
## Bezug
|
||||||
|
|
||||||
|
- Architektur: ADR 0009 (Plenarprotokoll-Parser-Registry)
|
||||||
|
- Roadmap: ``docs/protokoll-parser-roadmap.md``
|
||||||
|
- Referenz-Implementation: ``app/protokoll_parsers/nrw.py``
|
||||||
|
(38 Tests, 19/19-Fixture-Garantie)
|
||||||
|
- Folge-Issue: https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/162 (Titel: "protokoll-parser: SN (Sachsen)")
|
||||||
|
|
||||||
|
## Aufwand
|
||||||
|
|
||||||
|
Geschaetzt 1-3 Tage konzentrierte Arbeit:
|
||||||
|
- 2-4h URL-Discovery + Format-Inspektion (Sample-Protokoll inhaltlich anschauen)
|
||||||
|
- 4-8h Anchor-Phrasen-Reverse-Engineering + Parser-Implementierung
|
||||||
|
- 4h Tests mit Fixture-Pinning
|
||||||
|
- 1h Eintrag in PROTOKOLL_PARSERS + auto-ingest-protocols.sh
|
||||||
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
def parse_protocol(path: str) -> list[dict]:
|
||||||
|
"""STUB — siehe Modul-Docstring."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"SN-Plenarprotokoll-Parser ist noch nicht implementiert. "
|
||||||
|
"Siehe app/protokoll_parsers/sn.py-Docstring fuer Recherche-Findings "
|
||||||
|
"und docs/protokoll-parser-roadmap.md."
|
||||||
|
)
|
||||||
47
app/protokoll_parsers/th.py
Normal file
47
app/protokoll_parsers/th.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
"""Thüringen (TH) — Plenarprotokoll-Parser STUB (#106 Folge, ADR 0009).
|
||||||
|
|
||||||
|
**Status: noch nicht implementiert.** Dieser Modul-Stub enthaelt
|
||||||
|
Recherche-Findings vom 2026-04-28, sodass die Implementer-Session
|
||||||
|
direkt produktiv loslegen kann. Der Stub wird **nicht** in
|
||||||
|
``app.protokoll_parsers.PROTOKOLL_PARSERS`` registriert — der
|
||||||
|
Auto-Ingest-Cron ueberspringt TH solange.
|
||||||
|
|
||||||
|
## Recherche
|
||||||
|
|
||||||
|
| Feld | Wert |
|
||||||
|
|---|---|
|
||||||
|
| **Doku-System** | ParlDok |
|
||||||
|
| **Base-URL** | https://parldok.thueringer-landtag.de |
|
||||||
|
| **Familie** | MV-Familie (Synergien hoch) |
|
||||||
|
| **Format** | PDF nach ID-Discovery |
|
||||||
|
|
||||||
|
## URL-Discovery
|
||||||
|
|
||||||
|
ParlDok-Plattform analog MV — sobald MV-Parser steht, ist TH eine Iteration der MV-Logik mit anderem Base-URL-Praefix
|
||||||
|
|
||||||
|
## Bezug
|
||||||
|
|
||||||
|
- Architektur: ADR 0009 (Plenarprotokoll-Parser-Registry)
|
||||||
|
- Roadmap: ``docs/protokoll-parser-roadmap.md``
|
||||||
|
- Referenz-Implementation: ``app/protokoll_parsers/nrw.py``
|
||||||
|
(38 Tests, 19/19-Fixture-Garantie)
|
||||||
|
- Folge-Issue: https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/163 (Titel: "protokoll-parser: TH (Thüringen)")
|
||||||
|
|
||||||
|
## Aufwand
|
||||||
|
|
||||||
|
Geschaetzt 1-3 Tage konzentrierte Arbeit:
|
||||||
|
- 2-4h URL-Discovery + Format-Inspektion (Sample-Protokoll inhaltlich anschauen)
|
||||||
|
- 4-8h Anchor-Phrasen-Reverse-Engineering + Parser-Implementierung
|
||||||
|
- 4h Tests mit Fixture-Pinning
|
||||||
|
- 1h Eintrag in PROTOKOLL_PARSERS + auto-ingest-protocols.sh
|
||||||
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
def parse_protocol(path: str) -> list[dict]:
|
||||||
|
"""STUB — siehe Modul-Docstring."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"TH-Plenarprotokoll-Parser ist noch nicht implementiert. "
|
||||||
|
"Siehe app/protokoll_parsers/th.py-Docstring fuer Recherche-Findings "
|
||||||
|
"und docs/protokoll-parser-roadmap.md."
|
||||||
|
)
|
||||||
@ -5,6 +5,33 @@ Cron-Infrastruktur (`scripts/auto-ingest-protocols.sh`) BL-erweiterbar.
|
|||||||
Pro weiterem BL ist ein eigener Parser zu implementieren — das ist
|
Pro weiterem BL ist ein eigener Parser zu implementieren — das ist
|
||||||
deterministische Reverse-Engineering-Arbeit, keine LLM-Calls, keine Kosten.
|
deterministische Reverse-Engineering-Arbeit, keine LLM-Calls, keine Kosten.
|
||||||
|
|
||||||
|
## Stub-Module + Folge-Issues
|
||||||
|
|
||||||
|
Pro BL ein Modul `app/protokoll_parsers/<bl>.py` mit Recherche-Findings
|
||||||
|
im Docstring und `NotImplementedError` als Body. Stubs sind **nicht**
|
||||||
|
in `PROTOKOLL_PARSERS` registriert — der Auto-Ingest-Cron ueberspringt
|
||||||
|
sie. Sobald ein Parser implementiert ist, verschwindet der `NotImplementedError`-
|
||||||
|
Body und der Eintrag wird in `PROTOKOLL_PARSERS` ergaenzt.
|
||||||
|
|
||||||
|
| BL | Stub-Modul | Tracking-Issue |
|
||||||
|
|---|---|---|
|
||||||
|
| BUND | `bund.py` | [#148](https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/148) |
|
||||||
|
| BB | `bb.py` | [#149](https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/149) |
|
||||||
|
| BE | `be.py` | [#150](https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/150) |
|
||||||
|
| BW | `bw.py` | [#151](https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/151) |
|
||||||
|
| BY | `by.py` | [#152](https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/152) |
|
||||||
|
| HB | `hb.py` | [#153](https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/153) |
|
||||||
|
| HE | `he.py` | [#154](https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/154) |
|
||||||
|
| HH | `hh.py` | [#155](https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/155) |
|
||||||
|
| LSA | `lsa.py` | [#156](https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/156) |
|
||||||
|
| MV | `mv.py` | [#157](https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/157) |
|
||||||
|
| NI | `ni.py` | [#158](https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/158) |
|
||||||
|
| RP | `rp.py` | [#159](https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/159) |
|
||||||
|
| SH | `sh.py` | [#160](https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/160) |
|
||||||
|
| SL | `sl.py` | [#161](https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/161) |
|
||||||
|
| SN | `sn.py` | [#162](https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/162) |
|
||||||
|
| TH | `th.py` | [#163](https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/163) |
|
||||||
|
|
||||||
## Pattern fuer neue BL
|
## Pattern fuer neue BL
|
||||||
|
|
||||||
1. **Sample-PDF/HTML/XML besorgen** und Vote-Anchor-Phrasen identifizieren.
|
1. **Sample-PDF/HTML/XML besorgen** und Vote-Anchor-Phrasen identifizieren.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user