From a022f3100a227a33ea97c35e3c8d676f4c5ad6f1 Mon Sep 17 00:00:00 2001 From: flemming-it Date: Fri, 19 Jun 2026 02:25:39 +0200 Subject: [PATCH] feat(flow): runnable durchstich-full + jurist approval prompt Earlier durchstich-full never parsed (inline maps in with:). Rewrite to the runnable step set (normalize/deontic/citations/cohort/frust); skm/benefit stay documented-out pending the SDK json-input path. Give the system.approval step a clear prompt (Studio shows it as the approval-card heading). Signed-off-by: flemming-it --- flows/durchstich-full.yaml | 92 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 flows/durchstich-full.yaml diff --git a/flows/durchstich-full.yaml b/flows/durchstich-full.yaml new file mode 100644 index 0000000..8b86747 --- /dev/null +++ b/flows/durchstich-full.yaml @@ -0,0 +1,92 @@ +# Vertikaler Durchstich, Vollversion (so weit heute lauffähig). +# +# Erweitert durchstich-from-file um die Analyse-Module, deren +# Eingaben sich aus vorhergehenden Step-Outputs speisen lassen +# (alle als $ref) — Pflichten, Zitationsgraph, Lesbarkeit/Frust. +# Das flow.completed-Event trägt damit norm + duties + citations +# + frust + cohort, also die Form, die HubRepository.list() in der +# Recl∆Im-App in Evaluation-Objekte übersetzt. +# +# NICHT enthalten: econ.skm_score und law.benefit_score. Beide +# Module lesen ihren Tupel-/Ratings-Input über `require_json`, +# d.h. sie erwarten ein Payload::Json. In einem Flow lässt sich +# ein Json-Wert aber nur aus einem vorhergehenden Step-Output +# beziehen — `chain run --input name=value` erzeugt Text, +# `--input name=@file` erzeugt Bytes, nie Json, und ein Inline- +# Map-Literal in `with:` lehnt der Flow-Parser ab ("expected a +# string"). Es gibt heute also keinen Weg, skm/benefit aus CLI- +# Inputs zu treiben. Siehe Handoff an chain (json-CLI-Input). +# Sobald der Plattform-Fix steht, die skm-/benefit-Steps unten +# einkommentieren (Form: `with: { duties: $inputs.duties }` mit +# `inputs: { duties: json }`). +# +# Aufruf: +# chain run flows/durchstich-full.yaml \ +# --input content=@/tmp/gewo-14-mini.xml \ +# --input cohort_id=berlin-kmu +# (pausiert am system.approval-Gate — danach via Hub/Studio +# freigeben, dann wird das flow.completed-Event geschrieben.) + +name: durchstich-full + +inputs: + content: bytes + cohort_id: text + +steps: + - id: normalize + use: text.akoma_normalize@^0 + with: + content: $inputs.content + mime: "application/xml" + + - id: deontic + use: text.deontic_extract@^0 + with: + norm: $normalize.norm + + - id: citations + use: graph.citation_extract@^0 + with: + norm: $normalize.norm + + - id: cohort + use: stats.cohort_size@^0 + with: + cohort_id: $inputs.cohort_id + + - id: frust + use: text.readability_score@^0 + with: + norm: $normalize.norm + graph: $citations.citations + + # Pending platform json-CLI-input (Handoff → chain). Form, die + # nach dem Fix gilt — `inputs:` oben um `duties: json` / + # `ratings: json` ergänzen und mit --input duties=… speisen: + # - id: skm + # use: econ.skm_score@^0 + # with: + # duties: $inputs.duties + # - id: benefit + # use: law.benefit_score@^0 + # with: + # ratings: $inputs.ratings + + - id: review + use: system.approval@^0 + with: + title: "Recl∆Im — Review GewO §14 (Live)" + prompt: >- + Juristische Freigabe: Stimmen die extrahierten Pflichten, die + Zitationen und die Norm-Wiedergabe mit dem geltenden Gesetzestext + überein? Quellen siehe Payload. Bei Freigabe gilt die Auswertung + als juristisch bestätigt. + payload: $normalize.norm + +outputs: + norm: $normalize.norm + frust: $frust.score + cohort: $cohort.cohort + duties: $deontic.duties + citations: $citations.citations