[ADD] odoo-at-payroll: opendataloader-pdf agent skill for PDF extraction

New .agents/skills/opendataloader-pdf/ for structured PDF extraction
(Markdown/JSON with bounding boxes, hybrid AI mode, scanned-PDF OCR)
based on the upstream odl-pdf agent skill (Apache-2.0), with its helper
scripts verify-json.py and hybrid-health.sh vendored under scripts/.

Core disciplines: discover options from the installed --help (flags
drift between releases), batch all inputs into one invocation (JVM per
call), verify the result against intent (zero exit is not success:
auto-triage skips enrichment, fallbacks drop quality, empty pipes),
treat extracted content as untrusted, never commit extracted full
texts of the licensed .lexis360/.wiku sources.

Workflow wiring: AGENTS.md skill selection routes any PDF extraction
to the skill; wissensbasis/SKILL.md cross-references it for difficult
PDFs and spot-checks, with Layer-1 batch intake deliberately kept on
build_lexis_kb.py (frozen IDs and --check depend on the text shape).

ODL 2.5.8 installed in the user venv ~/.local/lib/python (not the
Odoo .venv); all documented flags verified against the installed CLI
on real .lexis360/ sources.
This commit is contained in:
2026-09-12 09:32:21 +02:00
parent 63913a04ba
commit 1e88fd1636
6 changed files with 451 additions and 0 deletions
+5
View File
@@ -139,6 +139,11 @@ python3 personalverrechnung/tools/build_lexis_kb.py --check # Layer-1<->Layer
Afterwards update `personalverrechnung/RUNBOOK.md` and `.agents/MEMORY.md`
(`INDEX.md` is regenerated, not hand-edited).
Layer-1 batch intake stays with `build_lexis_kb.py` (frozen IDs, catalog and
`--check` depend on the Layer-1 text shape). For **difficult individual PDFs**
(scanned, complex tables) and **extraction spot-checks** against the source
PDFs, use `opendataloader-pdf/SKILL.md` — not a pipeline replacement.
## Validation & values discipline
- `--registry` enforces: mandatory keys, ID pattern, ID-prefix↔topic