Files
gesetzblatt/README.md
Michael Hermann 2bb70ae0ed Initiales gesetzblatt-Repo: Parser-Zweig ab 2023 von recht.bund.de.
Historie 1949–2022 bleibt in lawgit, bis der GPU-Lauf endet; Schnitt ohne Lücke.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-16 11:56:05 +02:00

3.2 KiB
Raw Permalink Blame History

gesetzblatt

Parser und Spiegel des Bundesgesetzblatts.

Kein Nachbau der lawgit-UI und kein RunPod-Orchestrator. Ziel ist ein schmaler, idempotenter Zweig: Download → Text → Event-JSON, an den Git-Spiegel und eine spätere Oberfläche andocken können.

Schnitt, keine Lücke

2022 ist das letzte OffeneGesetze-Jahr. 2023 I Nr. 1 ist die erste amtliche elektronische Nummer. Die Jahre werden nicht doppelt geladen. Details: docs/QUELLEN.md.

lawgit bleibt der alte Arbeitsstand plus laufender GPU-Parse 19492022. Archivieren erst nach --holen — siehe ARCHIVE.md.

Schnellstart

cd /Users/michaelhermann/Source/law/coded/gesetzblatt
python3 -m pip install -r requirements.txt

# Live-Test: drei echte Ausgaben (2024/1, 2025/1, 2026/1)
python3 sync.py --live-test

# Heuristik-Test ohne Netz
python3 -m unittest tests.test_parse_heuristik

Nachziehen ab 2023

python3 sync.py --from-year 2023

Das ist der Befehl für den laufenden Betrieb: fehlende Nummern von recht.bund.de holen, Text extrahieren, Event-JSON schreiben. Schon vorhandene Ausgaben werden übersprungen.

Einzelne Schritte:

python3 download_rechtbund.py --from-year 2023
python3 extract_bgbl.py --year 2023 --year 2024 --year 2025 --year 2026
python3 parse_bgbl.py --von 2023

--llm (RunPod/vLLM über LLM_BASE_URL) ist eingebaut, aber nicht der Standard. Nicht setzen, solange lawgit auf der GPU parst. Ohne Flag bleibt es bei der Heuristik.

Historie OffeneGesetze

python3 download_offenegesetze.py --hinweis

Schreibt nur ein Quellen-Manifest. Die ~5500 PDFs in lawgit werden nicht kopiert. Nach Archivierung von lawgit den Bestand hierher ziehen (siehe ARCHIVE.md), nicht erneut von OffeneGesetze laden.

Event-JSON

Gleicher Schnitt wie bisher in lawgit (timeline/parsed/{id}.json):

Feld Bedeutung
id z. B. bgbl1-2025-1-1
fundstelle BGBl. 2025 I Nr. 1
verkundung ISO-Datum
titel amtlicher Titel
typ Erlass / Änderung / Verordnung / …
inkrafttreten Liste {datum, geltung, hinweis?}
betroffene_normen Stammgesetze mit kurz, operation
quelle recht.bund.de oder offenegesetze
parser heuristik oder llm
sha256 Prüfsumme der PDF (ab 2023)

Struktur

gesetzblatt/
├── download_rechtbund.py      # ab 2023, recht.bund.de
├── download_offenegesetze.py  # 19492022, Hinweis + optionaler Nachzug
├── extract_bgbl.py
├── parse_bgbl.py
├── llm_client.py
├── sync.py
├── bgbl/                      # PDFs, gitignoriert
├── timeline/meta/             # Manifeste (klein, im Git)
├── timeline/text/             # Extrakte, gitignoriert
└── timeline/parsed/           # Event-JSON, gitignoriert

Remote

https://git.coded.law/michaelkole/gesetzblatt.git

Falls das Remote noch fehlt:

git remote add origin https://git.coded.law/michaelkole/gesetzblatt.git
git push -u origin main