feat(kb): ingest rechtsprechung corpus

This commit is contained in:
2026-09-15 15:27:28 +02:00
parent 1f4b4ce933
commit 209a64dc53
365 changed files with 33112 additions and 51 deletions
+41 -10
View File
@@ -1,5 +1,5 @@
# Wissensbasis Personalverrechnung (Lexis360-Exporte, WIKU Personal,
WKO-Kollektivverträge, RIS-Gesetze)
WKO-Kollektivverträge, RIS-Gesetze, Rechtsprechung)
Kuratierte Wissensbasis aus vier Quellcorpora — den **LexisNexis-Briefings**
des Werks *Lexis Briefings Personalrecht* (Export aus Lexis 360), den
@@ -8,9 +8,12 @@ Casebooks, Fachzeitschrift „WIKU Personal aktuell“), den **Kollektivvertrags
Dokumenten von WKO.at** (Lohn-/Gehaltsordnungen inkl. Lohntabellen,
KV-Abschlüsse, Erläuterungen, Zusatz-KVs) und den **RIS-Gesetzes-Texten**
(Rechtsinformationssystem des Bundes; nur die im Lexis360-Bestand zitierten
Paragraphen je Gesetz). Ein **gemeinsamer Korpus**: das `work`-Feld
Paragraphen je Gesetz) sowie **Rechtsprechung** (OGH-, VwGH- und VfGH-
Entscheidungen und Rechtssätze aus RIS-OGD sowie fünf als nicht amtlich
markierte EuGH-Textwiedergaben). Ein **gemeinsamer Korpus**: das `work`-Feld
unterscheidet die Quellen, ID-Räume `lb-*` (Lexis), `wk-*` (WIKU),
`kv-*` (WKO-KV) und `ris-*` (RIS) liegen auf derselben Cluster-Map. Zweck:
`kv-*` (WKO-KV), `ris-*` (RIS) und `rj-*` (Rechtsprechung/Normentexte)
liegen auf derselben Cluster-Map. Zweck:
1. **Entwicklungsreferenz** neben den Rechtsquellen-Übersichten
(`RECHTSQUELLEN-*.md` im Schwesterprojekt) für die Personalverrechnungs-
@@ -26,10 +29,10 @@ unterscheidet die Quellen, ID-Räume `lb-*` (Lexis), `wk-*` (WIKU),
| PDF-Exporte | `.lexis360/Lexis360_*.pdf` · `.wiku/*.pdf` | **nein** (gitignored) | lizensierte Original-PDFs |
| Layer 1 — Volltexte | `.lexis360/md/<slug>.md` · `.wiku/md/<slug>.md` | **nein** (gitignored) | vollständiger Extraktionstext + Metadaten-Frontmatter |
| Katalog | `.lexis360/md/_catalog.json` · `.wiku/md/_catalog.json` | **nein** (gitignored) | geparste Metadaten aller Quellen (Slug ↔ ID ↔ Stand ↔ Cluster) |
| Rohquellen kv/ris | `.firecrawl/wko-kv/docs/*.html` · `.ris/*.md` | **nein** (gitignored) | WKO-KV-Seiten (HTML) bzw. RIS-Gesetzes-Auschnitte (Markdown) |
| Layer 2 — Einträge | `dokumente/<slug>.md` (Lexis) · `dokumente/wiku_<slug>.md` (WIKU) · `dokumente/kv_<slug>.md` (WKO-KV, **generiert**) · `dokumente/ris_<slug>.md` (RIS, **generiert**) | **ja** | Kuratierung in eigenen Worten (lb/wk) bzw. quellentreue Konvertierung (kv/ris, Tool-Output) |
| Rohquellen kv/ris/rj | `.firecrawl/wko-kv/docs/*.html` · `.ris/*.md` · `.rechtsprechung/{originale,gesetze}/*.md` | **nein** (gitignored) | WKO-KV-Seiten, RIS-Gesetzes-Auschnitte sowie Rechtsprechung/Normentexte |
| Layer 2 — Einträge | `dokumente/<slug>.md` (Lexis) · `dokumente/wiku_<slug>.md` (WIKU) · `dokumente/kv_<slug>.md` (WKO-KV, **generiert**) · `dokumente/ris_<slug>.md` (RIS, **generiert**) · `dokumente/rj_<slug>.md` (Rechtsprechung, **generiert**) | **ja** | Kuratierung in eigenen Worten (lb/wk) bzw. quellentreue Konvertierung (kv/ris/rj, Tool-Output) |
| Registry | `wissensbasis/kb.json` | **ja** | **generiert** aus dem Layer-2-Frontmatter aller Quellen (`tools/build_registry.py`) |
| Kataloge kv/ris | `tools/catalogs/kv_catalog.json` · `ris_catalog.json` | **ja** | eingefrorene ID-Zuweisungen (nur Metadaten, keine Quelltexte) |
| Kataloge kv/ris/rj | `tools/catalogs/kv_catalog.json` · `ris_catalog.json` · `rj_catalog.json` | **ja** | eingefrorene ID-Zuweisungen (nur Metadaten, keine Quelltexte) |
Volltexte der lizenzierten Quellen (Lexis/WIKU) sind Lizenzinhalt und
bleiben wie `.firecrawl/` und `.ris/` lokal + unversioniert. Nur die
@@ -41,7 +44,19 @@ WKO-KV-Texte müssen zahlenexakt bleiben (Lohntabellen) — daher sind
sind **Tool-Output**: keine manuelle Bearbeitung, bei Änderungen neu
generieren. Die WKO-Seiten selbst und die `.ris/`-Dateien bleiben
unversioniert; die Einträge tragen ihre Quelle (`source.html`/`source.text`)
und die WKO-/RIS-URL im Body. Die `overviews/` (1 820 Bundesland-Übersichts-
und die WKO-/RIS-URL im Body.
**Rechtsprechung (Batch rj 1, 2026-09-15):** Die Lieferung unter
`.rechtsprechung/` dokumentiert für OGH/VwGH/VfGH überwiegend RIS-OGD-
Provenance. Ihre Layer-2-Dateien `rj_*.md` werden deshalb quellentreu aus den
lokalen Markdown-Dateien generiert und behalten Gericht, Datum, Geschäftszahl,
Normen und Quellenpfad. Rechtssätze, Volltexte, zitierte Normauszüge und EuGH-
Fälle sind jeweils im `chapter`/`work` unterscheidbar. Die fünf EuGH-Dateien
sind ausdrücklich als **„Textwiedergabe lexetius, nicht amtlich“** markiert
und nennen zusätzlich die amtliche EUR-Lex-URL, soweit geliefert. Die
Publikations- und Lizenzfreigabe der quellentreuen Rechtsprechungs-Volltexte
ist vor einem Commit bewusst zu bestätigen; sie wird nicht aus der allgemeinen
Ausnahme für amtliche Gesetzestexte abgeleitet. Die `overviews/` (1 820 Bundesland-Übersichts-
seiten von WKO.at) werden derzeit **nicht** aufgenommen (Redundanz zu `docs/`).
## Frontmatter-Schema (Layer 2 — verbindlich)
@@ -151,6 +166,7 @@ als ASCII-Slugs. Die Frontmatter ist **Single Source of Truth**;
| `lohnsteuer` | Lohnsteuer & Einkommensteuer (EStG) | `lst` | ris-lst-01 | 1 |
| `abgabenverfahren` | Abgabenverfahren (BAO) | `abo` | ris-abo-01 | 1 |
| `normen-sonstige` | Weitere Gesetze und Verordnungen (ArbIG, RStDG, StGB, StPO, UGB) | `nso` | ris-nso-01 … 05 | 5 |
| `rechtsprechung` | Rechtsprechung (OGH, VwGH, VfGH, EuGH) und zitierte Normen | `rjs` | rj-rjs-001 … 348 | 348 |
Weitere RIS-Gesetze liegen auf der bestehenden Cluster-Map (`ris-url-01`
neben `lb-url-*`, `ris-asc-01` neben `lb-asc-*`, …; je Gesetz ein
@@ -158,14 +174,16 @@ neben `lb-url-*`, `ris-asc-01` neben `lb-asc-*`, …; je Gesetz ein
Cluster fortlaufend — Zuordnungstabelle `LAW_MAP` in
`tools/kb_common.py`).
**1 274 Einträge in 76 Clustern** — Lexis: 571 Einträge in 67 Clustern
**1 622 Einträge in 77 Clustern** — Lexis: 571 Einträge in 67 Clustern
(Batch 1: 55, Batch 2: 52, Batch 3: 44, Batch 4: 54, Batch 5: 31,
Batch 6: 41, Batch 7: 97, Batch 8: 134, Batch 9: 63); WIKU: 30
Einträge in 18 Clustern (Batch 1: 13 Fachbroschüren, 3
Arbeitsunterlagen, 2 Casebooks, 12 Hefte „WIKU Personal aktuell“
2026); WKO-KV: 614 Einträge im Cluster `kollektivvertraege` (Batch 1);
RIS: 59 Gesetze, verteilt auf bestehende Cluster plus den neuen
Rechtsgebiet-Clustern (Batch 1).
Rechtsgebiet-Clustern (Batch 1); Rechtsprechung: 320 RIS-OGD-Entscheidungen/
Rechtssätze + 5 nichtamtliche EuGH-Textwiedergaben + 23 zitierte
RIS-Normauszüge (Batch 1, gemeinsamer Cluster `rechtsprechung`).
Frontmatter-`topic` = beschreibender ASCII-Slug, das ID-Präfix
(`atz`, `leh`, `kvt`, …) nur im `id` selbst; die Registry
@@ -177,7 +195,8 @@ neue Dokumente hängen hinten an, Nummern ausscheidender Dokumente
werden nie wiederverwendet. Dateinamen: Layer-2 = Layer-1-Slug
(Umlaute fallen auf Basisbuchstaben — `uberblick`, `beschaftigung`;
ß → `ss`), WIKU mit `wiku_`-Präfix, WKO-KV mit `kv_`-Präfix und RIS
mit `ris_`-Präfix (Kollisionsschutz im gemeinsamen `dokumente/`).
mit `ris_`-Präfix und Rechtsprechung mit `rj_`-Präfix (Kollisionsschutz im
gemeinsamen `dokumente/`).
## Kurationskonventionen (verbindlich)
@@ -244,6 +263,18 @@ mit `ris_`-Präfix (Kollisionsschutz im gemeinsamen `dokumente/`).
Cluster, danach nie ändern.
3. `python3 tools/ingest_sources.py --source ris`.
**Rechtsprechung (rj):**
1. Neue Markdown-Dateien nach `.rechtsprechung/originale/` (Entscheidungen,
Rechtssätze, EuGH-Textwiedergaben) oder `.rechtsprechung/gesetze/`
(zitierte Normauszüge) legen; XML-Originale nicht separat intaken.
2. Provenance und Publikations-/Lizenzfreigabe der gelieferten Volltexte vor
einer Versionierung prüfen; EuGH-Wiedergaben bleiben als nicht amtlich
gekennzeichnet.
3. `python3 tools/ingest_sources.py --source rj` — IDs aus
`tools/catalogs/rj_catalog.json` bleiben eingefroren; lange Volltexte
werden an Absatzgrenzen in H2-Chunks geteilt.
**Alle Quellen gemeinsam:**
3. `python3 tools/build_registry.py` — validiert das gesamte Layer-2