docs: record m4.1 odoo module scaffold

This commit is contained in:
2026-09-17 00:38:59 +02:00
parent ba4bf57dcf
commit b8f67c221d
2 changed files with 34 additions and 15 deletions
+11 -8
View File
@@ -5,14 +5,17 @@ Rollender Übergabe-Log für agent-Threads. Workflow: `.agents/SKILL.md`
## Current focus
D24 validiert (500-Euro-Fragen verifiziert, think-Fix, Offline-Eval Recall@8
0,95). D25-Planung steht (planung.md Abschnitt 14) und **M4.2 ist umgesetzt**: Agent
`mode=review` mit schema-gebundenem Odoo-Kontext, Beweisklassen, Injection-
Abgrenzung und `plausibility`-Verdict; Feature-Flag `PV_REVIEW_MODE` (default
aus). KV-Varianten-Mapping gebaut (`tools/catalogs/kv_variant_map.json`,
439/614 abgedeckt, Seeds SI-2203/SI-2748 getestet). 106 Tests grün. Als
Nächstes: M4.1 — Odoo-Modul `l10n_at_payroll_agent` (Client, Kontext-Builder,
Pilot-Workflow am Draft-Payslip).
D24/D25: M4.2 (Agent-Review-Modus) umgesetzt und committet (ba4bf57);
107 Tests grün; KV-Varianten-Mapping gebaut (439/614, Seeds getestet).
**M4.1-Gerüst steht** (2026-09-16): neues Odoo-19-Addon
`l10n_at_payroll_agent` (19.0.1.0.0) im odoo-at-payroll/addons-Repo — über
den Symlink gebaut, 11 Dateien: `pv.agent.client` (stdlib urllib,
res.company.pv_agent_url/api_key statt unverifiziertem ir.config_parameter),
`pv.agent.context.builder` (Draft→Review-Kontext; ATP_PRAMIE, version.wage/
kv_id, SVDG_*/LST_*/LNK-Linien), `pv.agent.review.wizard` (+Views/ACL/Menu)
und TransactionCase-Tests (patched `_post_json`). Alle APIs gegen den
Bestand verifiziert; Syntax/XML/CSV-Checks grün — Odoo-Test-Session und
Pilot-Verifikation am echten Draft-Lohnzettel folgen (User-Host).
## Completed (2026-09-16, Modul-Review/D25-Planung)
+23 -7
View File
@@ -462,13 +462,29 @@ im Agenten per Feature-Flag (`PV_REVIEW_MODE`, default aus) freigeschaltet.
Kontext — **Whitelist hart kodiert** (facts: key/value/note; keine Namen,
SVNR, Geburtsdaten; KV-Name/Code, Bundesland/Gemeinde, Beträge, Jahres-
salden, Berechnungsergebnis mit Basis). `X-Request-ID` aus Odoo.
4. **Workflow „Plausibilitätsprüfung einer geplanten Auszahlung“** (Pilot):
Wizard/Dialog am Payslip/Kontext → Odoo rechnet mit den bestehenden
`_l10n_at_*`-Methoden auf einem Draft → `computation`-Objekt (Komponenten,
Bemessung, Ergebnis) → Agent prüft gegen KB → strukturiertes `plausibility`-
Verdict (verdict plausible/implausible/not-checkable + checks mit
erwartet/erhalten/⚠/source_id) → Anzeige im Dialog; keine automatische
Korrektur, Odoo bleibt autoritativ.
4. **Workflow „Plausibilitätsprüfung einer geplanten Auszahlung“** (Pilot,
**M4.1-Gerüst umgesetzt 2026-09-16** im neuen Modul
`l10n_at_payroll_agent` 19.0.1.0.0 in odoo-at-payroll/addons):
- `pv.agent.context.builder` projiziert den gerechneten Draft-Lohnzettel
(ATP_PRAMIE-Eingabe) auf facts (bruttolohn_monat via `version.wage`,
anwendender KV via `version.kv_id`, Zahlung) und computation (Draft-
Linien SVDG_*/LST_*/FLAFDB/KOMMST/DZ/BVG/WIEN_DAG als components,
SVDG-Summe als result) — alle APIs gegen den Bestand verifiziert
(lohnsteuer.py:148/266-268, versichertenmeldung.py:274,
reisekosten.py:215, hr_version_private).
- `pv.agent.client` (stdlib urllib, kein Zusatz-Dependency): POST /v1/ask
mode=review mit X-Request-ID; Konfiguration mandantenspezifisch über
`res.company.pv_agent_url` / `pv_agent_api_key` (group_hr_payroll_user,
Company-Formular-Seite) statt unverifiziertem ir.config_parameter;
neutrale UserError-Meldungen (401/422/5xx), Details nur im Log.
- `pv.agent.review.wizard` (Transient, ACL group_hr_payroll_user):
Prüfung starten → Kontext bauen → Agent aufrufen → Antwort/Verdict/
Prüfpunkte im Dialog; Re-Render über act_window/res_id. Menü unter
„AT-Payroll (Privat)“.
- Tests `tests/test_pv_agent_review.py` (TransactionCase, patched `_post_json`:
Params/Payload/Fehlerabbildung/Rendering); laufen in der Odoo-Test-Session,
lokal nur Syntax/XML/CSV-Checks. Builder-Test am echten Lohnzettel folgt
mit der Pilot-Verifikation.
5. **Agent-seitig (M4.2, umgesetzt 2026-09-16):** v1.x-Contract `mode=review`
+ `context`-Feld (extra=forbid, Whitelist-Schema: facts ≤40 mit key-Muster
`[a-z0-9_.-]`/value ≤200, computation mit components ≤40). Prompt-Addendum