[ADD] personalverrechnung: machine-readable KV library (all current collective agreements)

Cross-checked catalogue of all currently valid Austrian collective
agreements, per the source policy: main source = the responsible
employer-side chamber, kollektivvertrag.at (OEGB-Verlag) as complete
cross-check baseline.

- oegb/: 593 variants from kollektivvertrag.at with full consolidated
  texts (JSON primary format, Markdown for review/diff) plus
  catalog.json/.csv; fetched via the portal's JSON servlets
  (dashboard/structure/slices/topics), resumable
- wko/: 614 current documents from the WKO KV database (1,820 branch
  overviews across 10 regions) with texts and catalog; match-report
  against the baseline: 407 pairs, 30 date disagreements flagged
- chambers/chambers.json: curated registry of chamber-side sources and
  publication gaps (GOeD member-only, RA/Notariat not public, OCR-less
  scan PDFs, missing hospital-doctors KV)
- kv-catalog.json/.csv: merged catalogue, 768 entries, chamber
  classification, main_source, cross_check status, manual_review lists
- tools/fetch_kv_portal.py / fetch_wko_kv.py / build_kv_catalog.py:
  stdlib-only fetchers and merge step, each with a --refresh diff mode
- RUNBOOK.md: update cycle for keeping the library current (annual,
  tied to the Wartung rhythm and KV rounds)

Lohntafel PDFs are linked but not downloaded; wage tables contained in
the KV texts are converted. No Odoo module changes.
This commit is contained in:
2026-09-09 19:10:07 +02:00
parent 99728c1f23
commit 5b629a5916
2427 changed files with 2744543 additions and 8 deletions
+35 -8
View File
@@ -2,16 +2,28 @@
## Current focus
**Repo-Split aus gem360 abgeschlossen** (2026-09-09): Kern-Modul
`l10n_at_hr_payroll` (SV-Werte 2026, TASY-Import) + `l10n_at_gemeinde_payroll`
(AP1 Katalog, AP2 Entgelt-Engine) migriert; siehe `docs/CHANGELOG.md` und
`personalverrechnung/PLAN-repo-split.md`. Nächster Schritt: **AP3 (Lohnsteuer)
im Kern-Modul** gemäß `personalverrechnung/IMPLEMENTIERUNGSPLAN-Bgld.md`
(Abschnitt 4.2, Regel `LSTL`) — Implementierungsplan wartet weiterhin auf
die Freigaben des Bgld.-Auftrags (AP0 zuerst).
**KV-Library aufgebaut** (2026-09-09): alle aktuellen Kollektivverträge
maschinenlesbar in `personalverrechnung/quellen/kv/` — ÖGB-Portal-Baseline
(593 Varianten mit Volltexten), WKO als Main Source für WKO-Gewerbe
(614 aktuelle Dokumente), Kammer-Registry + Crosscheck-Katalog (768
Einträge). Fortführung über `personalverrechnung/RUNBOOK.md`. Danach
weiter wie zuvor: **AP3 (Lohnsteuer) im Kern-Modul** gemäß
`personalverrechnung/IMPLEMENTIERUNGSPLAN-Bgld.md` (Abschnitt 4.2, Regel
`LSTL`) — Implementierungsplan wartet weiterhin auf die Freigaben des
Bgld.-Auftrags (AP0 zuerst).
## Completed
- **KV-Library** (2026-09-09): `tools/fetch_kv_portal.py` (ÖGB-Portal:
Sitemap/Dashboard/Structure/Slices/Topics-JSON-APIs, 593 Varianten,
Catalog+Texte JSON/MD), `tools/fetch_wko_kv.py` (WKO-DB: 1.820
Übersichtsseiten, 614 aktuelle Dokumente, Match gegen Baseline),
`tools/build_kv_catalog.py` (Merge, Kammer-Klassifikation, Crosscheck,
manual-review-Listen), `quellen/kv/chambers/chambers.json` (Kammer-Quellen
kuratiert, inkl. Lücken: GÖD member-only, RA/Notariat nicht öffentlich),
`personalverrechnung/RUNBOOK.md` (Update-Zyklus). 407 WKO↔ÖGB-Paare,
30 Datumsdifferenzen geflaggt, 195 unklassifizierte (Einzenträger-KVs)
zur manuellen Sichtung.
- **Migration gem360 → odoo-at-payroll** (2026-09-09): dev-payroll nach
origin gepusht (Backup), History-Import per `git filter-repo`
(Branch hier: `main`), Modul-Split (TASY/SV-Layer in den Kern),
@@ -23,6 +35,11 @@ die Freigaben des Bgld.-Auftrags (AP0 zuerst).
## Open issues / blockers
- **KV-Library, manuell offen** (2026-09-09): manual_review-Listen im
`kv-catalog.json` (Match-Heuristik-Flüchtigungen, 30 Datumsdifferenzen,
195 unklassifizierte Einzelträger-KVs); Kammer-Scan-PDFs (RA Vbg,
LÄK NÖ/OÖ/Bgld) ohne OCR nicht maschinenlesbar; Angestelltenärzte-KV
nirgends öffentlich. Kein Commit erfolgt (auf Anweisung erstellen).
- gem360-seitig gilt: Branch `dev-payroll` dort vorerst erhalten, aber
**keine Payroll-Implementierung mehr in gem360** und kein Merge nach
dev/va_module (Guardrails im gem360-Handoff). Die Brücke
@@ -43,6 +60,12 @@ die Freigaben des Bgld.-Auftrags (AP0 zuerst).
## Decisions & conventions
- **KV-Quellen-Architektur** (2026-09-09): Main source je KV = die
verantwortliche Arbeitgeberkammer; kollektivvertrag.at (ÖGB) immer als
Crosscheck-Baseline (einziger vollständiger Korpus). WKO-DB deckt nur
WKO-KVs ab (keine Arzt/Apotheke/RA/Notar/Land-Zweige). Lohntafel-PDFs
nur verlinken, nicht downladen; im Text enthaltene Tabellen konvertieren.
Historische Slices nur bei Bedarf (Default: aktuelle Version).
- SKILL.md braucht YAML-Frontmatter (name = Verzeichnisname, description,
disable-model-invocation).
- Abhängigkeitsrichtung: gem360 → dieses Repo (nur die Brücke hängt an
@@ -54,7 +77,11 @@ die Freigaben des Bgld.-Auftrags (AP0 zuerst).
## Files that matter right now
- `personalverrechnung/PLAN-repo-split.md` — Migration (abgeschlossen)
- `personalverrechnung/RUNBOOK.md` — KV-Library pflegen (Update-Zyklus)
- `personalverrechnung/quellen/kv/kv-catalog.json|.csv` — der Crosscheck-Katalog
- `personalverrechnung/quellen/kv/chambers/chambers.json` — Kammer-Quellen-Registry
- `personalverrechnung/tools/fetch_kv_portal.py` / `fetch_wko_kv.py` /
`build_kv_catalog.py` — Fetcher + Merge
- `personalverrechnung/IMPLEMENTIERUNGSPLAN-Bgld.md` — AP3+ (Freigabe-Gate)
- `personalverrechnung/RECHTSQUELLEN-Bgld.md` — verbindliche Rechtslage
- `personalverrechnung/ANGEBOTS-KALKULATION-Bgld-Personalverrechnung.md`