Files
odoo-at-payroll/.agents/MEMORY.md
T
fegger e990488273 [REF] personalverrechnung: relocate Lexis360 raw layer to .lexis360/
Move the licensed PDF exports and the Layer-1 full texts from the
project root into the dot directory .lexis360/, keeping the root
listing to versioned content plus the tool checkouts.

The location also encodes provenance, distinct from .firecrawl/:
.lexis360/ holds user-supplied licensed exports that cannot be
re-fetched by an agent - if missing, stop and ask the user
(documented in MEMORY), whereas .firecrawl/ remains the home of
reconstructible web fetches.

- plain move of the unversioned directory (batch2/ subfolder spotted
  and left untouched for its own intake run)
- .gitignore, tool constants/messages, source.pdf/source.text
  frontmatter paths of all 55 curated entries, README/RUNBOOK/MEMORY
  mentions; kb.json/INDEX.md regenerated
- batch 2 (53 PDFs) recorded in MEMORY as staged in .lexis360/batch2/

Validated end to end: --extract 55/55 with stable ids, --registry
55 entries/6 clusters, --check 0 problems (every frontmatter path
resolves at the new location), no stale path references remain.
2026-09-10 10:27:12 +02:00

14 KiB
Raw Blame History

Agent Memory — odoo-at-payroll

Current focus

Lexis360-Wissensbasis Batch 1 fertig (2026-09-10): 55 LexisNexis-Briefings („Lexis Briefings Personalrecht") aus .lexis360/ zweischichtig erschlossen: Layer-1-Volltexte lokal unversioniert (.lexis360/md/, gitignored), Layer-2-Kuratierung versioniert unter personalverrechnung/wissensbasis/ (55 Einträge, 6 Cluster, Frontmatter- Schema D2, IDs lb-* eingefroren), generierte Registry kb.json + INDEX.md, Tool tools/build_lexis_kb.py (extract/registry/check). Zweck: Entwicklungsreferenz + Copilot-Korpus. GP1-Abnahme (Install + test_kv_katalog) auf dem Dev-Host bleibt das nächste Gate vor GP2 (Entgelt-Engine).

Completed

  • Lexis360-Wissensbasis Batch 1 (2026-09-10): 55 PDF-Exporte aus Lexis 360 („Lexis Briefings Personalrecht“; Stände 2024-03 bis 2026-09) → 55 kuratierte Einträge in personalverrechnung/wissensbasis/dokumente/ (Zusammenfassung/Kernwerte/Rechtsgrundlagen/Payroll-Relevanz/Verweise, Stand-Marks, /⚠/), README.md (Schema/Konventionen), generiert kb.json + INDEX.md, Tool personalverrechnung/tools/build_lexis_kb.py (--extract pdftotext-Pipeline; --registry Frontmatter-Validierung ohne PyYAML inkl. cross_refs/topic↔ID-Präfix; --check Layer-1↔Layer-2- Vollständigkeit; ID-Freeze über _catalog.json). RUNBOOK um Wissensbasis-Workflow (Batches, Validierung, Limitierungen) erweitert.
  • GP1 KV-Framework General-AT (2026-09-09): l10n_at_hr_payroll_private 19.0.1.0.0 implementiert — Modelle kollektivvertrag.py (kv/kv.wert/ kv.gruppe/kv.gruppe.stufe) + hr_version_private.py (Vertragsfelder, Muster hr_version_bgld.py), Wizard kv_katalog_import.py (Vorschau, Sprungwarnung, Versionierung), Views/Menus/Security, Seed D2 mit SI-2203/SI-2748-Tabellen 2026 (inkl. Sonder-Vorrückungsverläufe IV-M/V-OM im SI-2748, aufgelassene VG I im SI-2203, Nacht-€-Satz als Jahresversionen 2,71/2,76 €). Test-Suite test_kv_katalog: Seed-Lookups, Stichtags-Lookup, Versionierung, Eckwerte, Wizard (Sprungwarnung/Aktualisierung/Neuaufnahme), Vertragsfelder.
  • GP0-Rechtsverifikationen General-AT (2026-09-09): RECHTSQUELLEN-Privat.md erstellt: FLAF § 41 FLAG (RIS GesNr 10008220 — 3,7 % ab 2025, 2,7 % ab 2028; Basis Arbeitslöhne; 1.095-€-Freibetrag bei ≤ 1.460 €), KommStG 1993 (GesNr 10004841 — 3 %; § 3 Abs 3 Gemeindefreiheit; § 11 Verfahren), BMSVG (1,53 % auf Entgelt + SZ, kein HBG-Cap; § 14 Abs 2 Verfügungsausschluss; § 15 Anwartschaft statt Staffel; § 17 Verfügungsoptionen), UrlG (§ 2 30/36 Werktage; § 6 Urlaubsentgelt; § 10 Ersatzleistung), EStG 1988 (§ 33/66 Tarif 2026; § 67 sonstige Bezüge 0/6/27/35,75 % im Jahressechstel, Freigrenze 2.615 €, Kontrollsechstel § 77 Abs 4a, § 67 Abs 3/6/8 Abfertigungen; § 68 SZFN 400 €, ÜStd 10/120 €, 2026: 15/170 €, Nachtarbeit 600 €). Plan (Abschnitte 1, 4.24.4, 6, 8) auf Verifizierungsstand gebracht; payroll-Skill §-Zitat korrigiert.
  • D4-Neuverifikation komplett (2026-09-09): verifiziert gegen beide in-repo Checkouts — odoo/ (Community) und odoo_enterprise/odoo (Odoo 19.0.0; gemergter Baum: odoo-Paket + 1.452 Addons, Community + Enterprise in einem Addons-Verzeichnis, u. a. Referenz-Lokalisierungen l10n_be_hr_payroll/l10n_ch_hr_payroll; l10n_at_payroll existiert erwartungsgemäß nicht); beide in .gitignore. Community-Teil: hr.version (hr/models/hr_version.py L35; wage/ structure_type_id/resource_calendar_id versioniert), kalenderbasierte Work-Entry-Erzeugung (hr_work_entry/models/hr_version.py L420 _generate_work_entries
    • Postprocess-Hooks L500/L506), hr.work.entry.type + Entry-States (hr_work_entry.py L39). Enterprise-Teil: work_time_rate/hours_per_week auf Version (hr_payroll/models/hr_version.py L48/L39), work_entry_source (L30; Attendance-Integration hr_payroll_attendance/models/ hr_payslip.py L29), hr.payslip.run (hr_payslip_run.py L23; state L31, date_start L41, date_end L45), EOSB-Muster l10n_ae_hr_payroll (_inherit = "hr.payslip" L10, _l10n_ae_get_eos_daily_salary L95, je-Version-Feld l10n_ae_eos_daily_salary L102, Structure-Type-Inherit), Engine-Mechanismen an den Bgld-Plan-Zeilenreferenzen bestätigt (payslip._rule_parameter hr_payslip.py L951, localdict, hr.salary.rule.account_debit/account_credit L11/L15, Posting-Hooks _action_create_account_move L54 / _prepare_line_values L125 / _prepare_slip_lines L166, journal_id auf Structure via hr_payroll_account/models/hr_payroll_structure.py L15, hr.payslip.input.type hr_payslip_input_type.py L9, hr.payroll.structure.type.country_id L46); hr_payroll_account_iso20022 vorhanden. l10n_at-Konten (l10n_at/data/template/account.account-at.csv, XML-ID-Muster l10n_at.chart_at_template_<code>): Sonderzahlungen 6240, Verrechnung Lohnsteuer 3540 / Finanzamt 3530 / SV 3600, Abfertigungsrückstellungen 3000, KommSt 6660, FLAF-DB 6661, DZ 6662, Wien-Abgabe 6663 — Matrix-Lücken (GP0): Löhne-/Arbeiter-Konto und SV-DG-Aufwandskonto fehlen im Standard-Template. Hinweis: Build mit eigenem Versionsschema (Manifests teils ohne version-Key, z. B. l10n_at „3.2.1"); maßgeblich ist release.py version_info (19, 0, 0).
  • General-AT-Plan M0 (2026-09-09): IMPLEMENTIERUNGSPLAN-Privat.md erstellt und freigegeben — Entscheidungen D1 (Pfad), D2 (Referenz-KVs SI-2203 Handwerk/Gewerbe + SI-2748 Metallgewerbe), D3 (Kern- Vorfinanzierung durch General-AT), D4 (Odoo-19-Source kurzfristig; API-Neuverifikation in M1). Umfang: General-AT-Anteil ≈ 120172 PT, inkl. D3-Vorfinanzung ≈ 180258 PT (M1M9, ~79 Monate). README-Modultabelle, Gerüst-README l10n_at_hr_payroll_private und CHANGELOG auf Planstand gebracht.
  • 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), Model-Rename l10n.at.payroll.tasy.*, Skills/AGENTS/MEMORY neu aufgesetzt, Manifest-Beschreibung auf AP1+AP2-Stand korrigiert.
  • Vorher (aus gem360-Historie): AP1 Katalogmodell (35 Gruppen/433 Werte 2026), AP2 Entgelt-Engine (13 Regeln, Structure GEMBG.BGLD), SV-Werte aus ÖGK TASY-LSWH; 3 Testsuiten (Katalog, Entgelt, TASY-Import).

Open issues / blockers

  • Lexis360-KB offene Punkte (2026-09-10): Korpus-Widersprüche ⚠ vor Implementierung klären — AMS-Ersatzquote geblockte ATZ 2026 (lb-atz-07 28,5 % vs. lb-atz-09/12 27,5 %), DAG-Grenze 2023 (lb-bes-02 751,36 € vs. lb-bes-06 751,37 €), Lehrlinge-Kurzarbeit (lb-leh-11 vs. lb-leh-07); leh-Cluster teils alte Stände (2024-03/2025-08) — nur mit Stand-Kennzeichnung verwenden; Copilot-Deployment braucht lizenkonformen Layer-1-Bereitstellungs- pfad (Volltexte nicht im Repo); verweiste Briefings (z. B. Bildungskarenz) mit Folgebatches beschaffen. Batch 2 bereit (2026-09-10): 53 neue PDFs liegen in .lexis360/batch2/ (u. a. behinderte Arbeitnehmer, Abrechnungsperiode) — Intake über den RUNBOOK-Workflow (BATCH=2, PDFs nach .lexis360/ kopieren, kuratieren) noch offen.
  • General-AT GP0-Rest offen (2026-09-09): Pilotmandant/Golden-Master fehlt; ELDA-/FinOnl-Specs mit der Bgld-AP0-Beschaffungsliste abstimmen; D3-Anrechnungsmechanik vertraglich regeln (Bgld.- Auftragserteilung); Referenz-KV-Kuratierung (SI-2203/SI-2748); UGB-Buchungsmatrix; Volltexte AZG/AngG/ArbVG § 12/LStR 2002 beschaffen. Odoo-Quellen liegen in-repo (D4 erledigt); Runtime-Tests brauchen noch PostgreSQL (Dev-Host).
  • 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. Bibliothek inkl. Texte committed als 5b629a5 (lokaler main, noch nicht gepusht).
  • 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 l10n_at_gemeinde_payroll_vrv (AP7) wird in gem360 gegen getaggte Releases dieses Repos gebaut.
  • Runtime-Validierung offen (2026-09-09): Modul-Install und die Testsuiten (Katalog, Entgelt, TASY-Import, neu: test_kv_katalog privat) sind lokal nicht lauffähig (kein PostgreSQL). Odoo-Quellen jetzt in-repo verfügbar — odoo/ (Community, odoo-bin) + odoo_enterprise/odoo (gemergter Enterprise-Baum; Addons-Path odoo_enterprise/odoo/addons,addons). Auf dem Dev-Host nachholen: -i l10n_at_hr_payroll,l10n_at_gemeinde_payroll --test-tags /l10n_at_hr_payroll,/l10n_at_gemeinde_payroll. Statisch grün: py_compile + XML-Well-formedness über alle Addon-Dateien.
  • Bgld.-Auftrag: AP0 offen (Bestandsaufnahme Pilotmandant, ELDA/FinOnl- Specs, VRV-Buchungsmatrix, offene RIS-Verifikationen) — IMPLEMENTIERUNGSPLAN-Bgld.md Abschnitt 8.
  • Odoo-Upgrades künftig in beiden Repos (gem360 + dieses) gegen denselben Odoo-Pin validieren.

Decisions & conventions

  • Lexis360-Wissensbasis-Architektur (2026-09-10): D1 — Volltexte/ PDFs lokal unversioniert (.lexis360/ gitignored, Muster .firecrawl/), nur Kuratierung versioniert (Lizenz LexisNexis). D2 — strukturelle Frontmatter-Keys englisch (wie kv-catalog/chambers), Werte deutsch (UTF-8); stand als Fachbegriff ISO YYYY-MM; topic/tags ASCII- Slugs; topic = beschreibender Cluster-Slug (altersteilzeit, lehrlinge, …), ID-Präfix (atz, …) nur im id. IDs lb-<prefix>-<nn> eingefroren (nie renummerieren/wiederverwenden); Frontmatter = Source of Truth, kb.json/INDEX.md generiert via --registry; Werte niemals aus Trainingswerten, nur aus Quelltext mit Stand-Kennzeichnung. Ablageort .lexis360/ (dot-dir, lokal, unversioniert): vom Nutzer manuell exportierte lizenzierte Belege — bei Fehlen NICHT neu beschaffen (anders als .firecrawl/ = agenten-rekonstruierbare Web-Fetches), sondern beim Nutzer nachfragen.

  • General-AT D1D4 (2026-09-09): Plan geführt als personalverrechnung/IMPLEMENTIERUNGSPLAN-Privat.md; Referenz-KVs R1 = SI-2203 + SI-2748 (Feinjustierung je Pilotmandant in GP0); D3-Vorfinanzierung — General-AT baut die sektor-neutralen Kern-Blöcke AP3/AP4 (und nötigenfalls AP5/AP6) in l10n_at_hr_payroll vor (Symmetrie zur Bgld-Planungsentscheidung „AP3 im Kern, damit das General-Produkt ihn erbt"); Anrechnung/Umlegung bei Bgld.- Auftragserteilung per Change-Request; D4 — Odoo-19-Source in-repo: odoo/ (Community) + odoo_enterprise/odoo (gemergter Enterprise-Baum), beide in .gitignore; D4-Verifikation komplett erledigt.

  • GP0-Rechtskorrekturen General-AT (verbindlich) (2026-09-09): 13./14. Bezüge = sonstige Bezüge iSd § 67 EStG (§ 68 nur Zulagen/Zuschläge — „§ 68 Abs 5/6" war falsch); Urlaubsentgelt = § 6 UrlG (§ 9 seit 2001 aufgehoben); EOSB = BMSVG-Anwartschaft ohne Monatsentgelt-Staffel (§ 14 Abs 2 Ausschlussmatrix, § 15 Auszahlung Beiträge + Erträge); Bgld-P9-Rechtsbasis damit § 67 (Detailauslegung LStR 2002 bleibt offen).

  • 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 beiden), nie umgekehrt.

  • Tests nur auf Wegwerf-DB (nie gem360_dev); je Änderung py_compile + XML-Well-formedness-Check.

  • .firecrawl/ bleibt lokal unversioniert (Rechts-Rohquellen); bei Fehlen neu beschaffen — niemals aus Trainingswerten arbeiten.

Files that matter right now

  • personalverrechnung/wissensbasis/ — Lexis360-Wissensbasis (README, dokumente/ 55 Einträge, kb.json, INDEX.md; Batch-Workflow im RUNBOOK)

  • .lexis360/ — lizenzierte PDF-Exporte + Layer-1-Volltexte md/ + _catalog.json (lokal, unversioniert)

  • personalverrechnung/tools/build_lexis_kb.py — KB-Pipeline

  • personalverrechnung/IMPLEMENTIERUNGSPLAN-Privat.md — General-AT (freigegeben; GP0-Rechtsverifikationen erledigt, GP0-Rest offen; D4-Protokoll in Abschnitt 2)

  • personalverrechnung/RECHTSQUELLEN-Privat.md — verbindliche Rechtslage General-AT (GP0-Inventar; Statusmarks /⚠/)

  • 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 — AP-Rahmen, Prämissen P1P10

  • odoo/ + odoo_enterprise/ — Odoo-19-Checkouts (unversioniert, in .gitignore; Enterprise-Baum gemergt: Community+Enterprise in einem Addons-Verzeichnis; Test-Addons-Path odoo_enterprise/odoo/addons)

  • addons/l10n_at_hr_payroll_private/ — General-AT (GP1 KV-Framework

    • Seed D2 umgesetzt; Runtime-Abnahme ausständig; GP2 danach)
  • addons/l10n_at_hr_payroll/ — Kern (SV/TASY; AP3 landet hier)

  • addons/l10n_at_gemeinde_payroll/ — GemBG (AP1+AP2)