[ADD] personalverrechnung: WIKU knowledge base (Batch 1)

First WIKU Personal intake (30 licensed publications, source Stands
2023-07 to 2026-09), integrated into the shared curated corpus per
the integration model of 2026-09-10: one corpus, the work field
distinguishes the sources, WIKU entries use the wk-<prefix>-<nn> id
space on the existing cluster map, Layer-2 filenames carry the wiku_
prefix. The corpus grows to 601 curated entries in 69 clusters.

- 30 publications: 13 Fachbroschueren, 3 Arbeitsunterlagen, 2
  Casebooks (geloesste LV-Praxisfaelle) and the twelve 2026 issues of
  the periodical 'WIKU Personal aktuell' (new cluster akt with
  wk-akt-01..12); second new cluster gwe for the trade-specific
  brochures (Gueterbefoerderungsgewerbe, Gastgewerbe); the remaining
  16 publications sit on existing clusters (wk-pfa-01 next to
  lb-pfa-*: vor, kar, bnd, lvr x2, dvh, bes, rei, gsf, grz, ins,
  lsd, pfa, azg, sac, son)
- tooling: multi-source extension of build_lexis_kb.py (--source
  lexis|wiku|all for --extract and --check, --registry over both
  sources); WIKU metadata comes from an explicit WIKU_PINS table
  (slug, cluster, stand, work, chapter, title) instead of Lexis
  breadcrumbs - a PDF without a pin is a hard warning and is never
  extracted; WIKU page-counter footer lines dropped (WIKU_PAGE_RE);
  fix in curated_slugs_for(): the .md suffix is now stripped when the
  wiku_ prefix is removed, so the wiku --check completeness gate
  passes
- curation: the twelve periodical issues were curated in six parallel
  agent groups, each grounded only in its Layer-1 text with a
  self-check on frontmatter/structure/cross-refs; the 19 brochure
  entries from the prior session were re-validated centrally; 30/30
  green
- registry and check green: lexis 571/571 and wiku 30/30 curated,
  0 problems; kb.json and INDEX.md regenerated (601 entries, 69
  clusters, sources and per-source batch counters recorded)
- wissensbasis README: two-source corpus documentation (layers,
  frontmatter schema incl. WIKU works and id spaces, cluster table
  with akt/gwe, per-source update cycle)
- flagged for RIS (documented in the entries): wk-akt-01 par. 124b
  'z 440/492' (pre-BGBl stand of 2026-01) and the wk-akt-07
  Mitarbeiterpraemie citation contradiction 'z 478 vs z 477'
  (z 478 lit f binding); the Feiertagsarbeitsentgelt/UEStd repair is
  resolved via BGBl I 43/2026 in wk-akt-04 and matches the binding
  legal position; new conflict family wk-akt-11 (SV employee shares
  on par. 68 benefits caught by the par. 20 Abs 2 Z 1 EStG deduction
  ban, 'Formel 7' at risk); wk-akt-10 free-contractor DN rate 17.57%
  vs arithmetic 17.07% without WF; wk-akt-07 Wien WF 1.5% (lb-lnk-05
  family); ALV-Entfall draft vs final act (wk-akt-03 vs 04); 2027 SV
  values provisional (wk-akt-05/06)
This commit is contained in:
2026-09-11 11:15:53 +02:00
parent ee7e16ecee
commit e6598d01cf
34 changed files with 7660 additions and 150 deletions
+66 -33
View File
@@ -1,7 +1,12 @@
# Wissensbasis „Lexis Briefings Personalrecht" (Lexis360-Exporte)
# Wissensbasis Personalverrechnung (Lexis360-Exporte + WIKU Personal)
Kuratierte Wissensbasis aus den LexisNexis-Briefings des Werks
*Lexis Briefings Personalrecht* (Export aus Lexis 360). Zweck:
Kuratierte Wissensbasis aus zwei lizenzierten Quellcorpora — den
LexisNexis-Briefings des Werks *Lexis Briefings Personalrecht*
(Export aus Lexis 360) und den WIKU-Personal-Publikationen
(Fachbroschüren, Arbeitsunterlagen, Casebooks, Fachzeitschrift
„WIKU Personal aktuell“). Ein **gemeinsamer Korpus**: `work`-Feld
unterscheidet die Quellen, ID-Räume `lb-*` (Lexis) und `wk-*` (WIKU)
liegen auf derselben Cluster-Map. Zweck:
1. **Entwicklungsreferenz** neben `personalverrechnung/RECHTSQUELLEN-*.md`
für die Personalverrechnungsmodule (`l10n_at_hr_payroll*`), und
@@ -13,33 +18,37 @@ Kuratierte Wissensbasis aus den LexisNexis-Briefings des Werks
| Schicht | Pfad | Versioniert? | Inhalt |
|---|---|---|---|
| PDF-Exporte | `.lexis360/Lexis360_*.pdf` | **nein** (gitignored) | lizensierte Original-PDFs |
| Layer 1 — Volltexte | `.lexis360/md/<slug>.md` | **nein** (gitignored) | vollständiger Extraktionstext + Metadaten-Frontmatter |
| Katalog | `.lexis360/md/_catalog.json` | **nein** (gitignored) | geparste Metadaten aller Quellen (Slug ↔ ID ↔ Stand ↔ Cluster) |
| Layer 2 — kuratierte Einträge | `personalverrechnung/wissensbasis/dokumente/<slug>.md` | **ja** | Kuratierung in eigenen Worten (Schema unten) |
| Registry | `personalverrechnung/wissensbasis/kb.json` | **ja** | **generiert** aus dem Layer-2-Frontmatter (`--registry`) |
| 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) |
| Layer 2 — kuratierte Einträge | `dokumente/<slug>.md` (Lexis) · `dokumente/wiku_<slug>.md` (WIKU) | **ja** | Kuratierung in eigenen Worten (Schema unten) |
| Registry | `personalverrechnung/wissensbasis/kb.json` | **ja** | **generiert** aus dem Layer-2-Frontmatter beider Quellen (`--registry`) |
Volltexte sind lizenzierter Inhalt (LexisNexis-Abonnement) und bleiben wie
`.firecrawl/` lokal + unversioniert. Nur die Kuratierung (eigene Worte,
kurze Zitate mit Quellenachweis) wird committet.
Volltexte sind lizenzierter Inhalt (LexisNexis- bzw. WIKU-Abonnement)
und bleiben wie `.firecrawl/` lokal + unversioniert. Nur die
Kuratierung (eigene Worte, kurze Zitate mit Quellenachweis) wird
committet. WIKU-Publikationen haben keine Lexis-Breadcrumbs:
Metadaten (Slug, Cluster, Stand, `work`, Kapitel, Titel) werden beim
Intake als **`WIKU_PINS`**-Eintrag im Tool festgenagelt (1 Publikation
= 1 Eintrag; Granularitätsentscheidung 2026-09-10).
## Frontmatter-Schema (Layer 2 — verbindlich)
```yaml
id: lb-atz-07 # stabil, lb-<cluster>-<nn>, eingefroren
batch: 1 # Beschaffungs-Batch (manuell je Import)
id: lb-atz-07 # stabil; lb-<cluster>-<nn> (Lexis) bzw. wk-<cluster>-<nn> (WIKU), eingefroren
batch: 1 # Beschaffungs-Batch je Quelle (manuell je Import)
title: "Altersteilzeit - Überblick"
work: "Lexis Briefings Personalrecht"
chapter: "Beschäftigungsverhältnisse" # Breadcrumb-Kapitel der Quelle
work: "Lexis Briefings Personalrecht" # WIKU: exakter Publikationstyp („WIKU Fachbroschüre“, „WIKU Arbeitsunterlage“, „WIKU Casebook“, „WIKU Personal aktuell“)
chapter: "Beschäftigungsverhältnisse" # Quell-Kapitel (WIKU: aus WIKU_PINS, idR der Publikationstitel)
topic: altersteilzeit # ASCII-Cluster-Slug (s. Tabelle)
author: "Marek"
stand: 2026-01 # ISO-Monat des Quell-Stands
author: "Marek" # WIKU: „Wilhelm Kurzböck“
stand: 2026-01 # ISO-Monat des Quell-Stands (WIKU: Impressum/Dateiname, „Personal aktuell“: Heft-Monat)
source:
pdf: ".lexis360/Lexis360_altersteilzeit_uberblick.pdf"
text: ".lexis360/md/altersteilzeit_uberblick.md"
pdf: ".lexis360/Lexis360_altersteilzeit_uberblick.pdf" # WIKU: ".wiku/<dateiname>.pdf"
text: ".lexis360/md/altersteilzeit_uberblick.md" # WIKU: ".wiku/md/<slug>.md"
legal_bases: ["AlVG", "AZG § 19e"] # nur im Quelltext genannte Normen
tags: [altersteilzeit, ams-foerderung] # ASCII-Slugs, retrieval-freundlich
cross_refs: ["lb-atz-09"] # verwandte KB-Einträge (dangling = Fehler)
cross_refs: ["lb-atz-09"] # verwandte KB-Einträge (lb↔wk erlaubt; dangling = Fehler)
```
Schlüsselkonvention (Entscheidung D2): **strukturelle Schlüssel
@@ -50,7 +59,7 @@ als ASCII-Slugs. Die Frontmatter ist **Single Source of Truth**;
`kb.json` wird daraus generiert und schema-validiert
(`build_lexis_kb.py --registry`).
## Cluster (Batch 19)
## Cluster (Lexis Batch 19 + WIKU Batch 1)
| topic-Slug | Name | ID-Präfix | IDs | n |
|---|---|---|---|---|
@@ -121,10 +130,17 @@ als ASCII-Slugs. Die Frontmatter ist **Single Source of Truth**;
| `gsvg-fsvg` | GSVG/FSVG: Selbständige, neue Selbstständige, Abfertigung | `gsv` | lb-gsv-01 … 12 | 12 |
| `krankenversicherung` | Krankenversicherung ASVG (Leistungen) | `kvs` | lb-kvs-01 … 04 | 4 |
| `pension` | Pensionsversicherung (Pensionsarten, Pensionskonto) | `pvs` | lb-pvs-01 … 13 | 13 |
| `aktuell` | WIKU Personal aktuell (Neuerungen, Urteile, Praxis) | `akt` | wk-akt-01 … 12 | 12 |
| `gewerbe` | Gewerbebezogene Personalverrechnung (Güterbeförderung, Gastgewerbe) | `gwe` | wk-gwe-01 … 02 | 2 |
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). Siebzehn Briefings-Kapitel: „Beschäftigungsverhältnisse“,
**601 Einträge in 69 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). Die WIKU-Publikationen liegen auf der bestehenden Cluster-Map
(`wk-pfa-01` neben `lb-pfa-*`) plus den beiden eigenen Clustern
`akt`/`gwe`. Siebzehn Briefings-Kapitel: „Beschäftigungsverhältnisse“,
„Entgelt: Anspruch & Abrechnung“, „Arbeitszeit“, „Arbeitnehmerschutz“,
„Verhaltenspflichten“ (Batches 16), dazu „Urlaub & Karenzierung“,
„Schwangerschaft & Elternkarenz“, „Krankenstand & Arbeitsunfall“,
@@ -176,18 +192,35 @@ werden nicht transliteriert — `uberblick`, `beschaftigung`).
Verweisstelle im Export unvollständig ist.
9. Vorbild/Qualitätsmaßstab: `dokumente/altersteilzeit_uberblick.md`.
## Update-Zyklus (neue Lexis360-Batches)
## Update-Zyklus (neue Batches — je Quelle)
**Lexis360:**
1. Neue PDFs nach `.lexis360/` kopieren (Export-Namenskonvention
`Lexis360_<slug>.pdf` beibehalten).
2. In `tools/build_lexis_kb.py` die Konstante `BATCH` hochsetzen, dann
`--extract` ausführen: Layer 1 + Katalog neu; bestehende IDs bleiben
fix, neue Dokumente erhalten neue IDs + neue Batch-Nummer.
3. Neue Layer-2-Einträge kuratieren (Konventionen oben).
4. `--registry` (generiert/validiert `kb.json`), danach `--check`
(Layer-1↔Layer-2-Vollständigkeit, Quelldateien vorhanden).
5. `INDEX.md` aktualisieren, `personalverrechnung/RUNBOOK.md` und
`.agents/MEMORY.md` pflegen.
2. In `tools/build_lexis_kb.py` die Konstante `BATCH_LEXIS` hochsetzen,
dann `--extract --source lexis` ausführen: Layer 1 + Katalog neu;
bestehende IDs bleiben fix, neue Dokumente erhalten neue IDs + neue
Batch-Nummer.
**WIKU:**
1. Neue PDFs nach `.wiku/` kopieren (Dateinamen der Lieferung
beibehalten; Stand aus „Stand YYYY-MM“/Heft-Monat, sonst Impressum).
2. Je PDF einen `WIKU_PINS`-Eintrag im Tool ergänzen (slug, cluster,
stand, work, chapter, title) — ein PDF ohne Pin wird **nicht**
extrahiert (harter Warning, nie Metadaten raten). Dann
`BATCH_WIKU` hochsetzen und `--extract --source wiku` ausführen.
**Beide Quellen gemeinsam:**
3. Neue Layer-2-Einträge kuratieren (Konventionen oben; WIKU-Dateiname
= `wiku_<slug>.md`).
4. `--registry` (generiert/validiert `kb.json` + `INDEX.md` über beide
Quellen), danach `--check --source all` (Layer-1↔Layer-2-
Vollständigkeit je Quelle, Quelldateien vorhanden).
5. `personalverrechnung/RUNBOOK.md` und `.agents/MEMORY.md` pflegen
(`INDEX.md` wird generiert, nicht manuell editiert).
## Copilot-Konsum