feat(cra): 'Projekt anlegen' triggert IACE-Auto-Ableitung (/initialize)

Nach dem Setzen der limits_form ruft createProject jetzt POST /iace/projects/
:id/initialize — IACE liest die limits_form als Narrative → Komponenten →
Gefährdungen → Maßnahmen → Verifikation → Normen (idempotent, best-effort).
Navigiert danach auf die Projekt-Übersicht (Risiko-Summary). Interview-Felder
bleiben editierbar, Ableitung im IACE re-triggerbar. Schliesst die Kette
Datenblatt → Grenzen → Gefährdungen/Maßnahmen.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-06-17 08:25:06 +02:00
parent fda94afd5f
commit b76f3cee48
@@ -76,7 +76,15 @@ export function DatasheetExtract() {
method: 'PUT', headers: { 'Content-Type': 'application/json' }, method: 'PUT', headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ metadata: { limits_form: limits } }), body: JSON.stringify({ metadata: { limits_form: limits } }),
}) })
router.push(`/sdk/iace/${pid}/interview`) // Auto-derive: IACE reads the limits_form as narrative → components →
// hazards → measures → norms. Idempotent + best-effort; can be (re-)run
// in the IACE module. The interview limits stay fully editable.
try {
await fetch(`/api/sdk/v1/iace/projects/${pid}/initialize`, {
method: 'POST', headers: { 'Content-Type': 'application/json' },
})
} catch { /* idempotent — re-runnable in IACE */ }
router.push(`/sdk/iace/${pid}`)
} finally { setCreating(false) } } finally { setCreating(false) }
} }
@@ -168,16 +176,17 @@ export function DatasheetExtract() {
<div className="flex flex-wrap items-center gap-3"> <div className="flex flex-wrap items-center gap-3">
<button onClick={createProject} disabled={creating} <button onClick={createProject} disabled={creating}
className="rounded bg-indigo-600 hover:bg-indigo-700 disabled:opacity-50 text-white text-sm px-4 py-2"> className="rounded bg-indigo-600 hover:bg-indigo-700 disabled:opacity-50 text-white text-sm px-4 py-2">
{creating ? 'Lege an …' : 'IACE-Projekt anlegen (Grenzen übernehmen)'} {creating ? 'Lege an & leite ab …' : 'IACE-Projekt anlegen → Gefährdungen ableiten'}
</button> </button>
<span className="text-xs text-gray-500"> <span className="text-xs text-gray-500">
Übernimmt Grenzen + Antworten als <span className="font-medium">editierbaren Entwurf</span> ins Übernimmt Grenzen + Antworten als <span className="font-medium">editierbaren Entwurf</span> und leitet
IACE-Interview jedes Feld bleibt änderbar. Manuelles Anlegen weiterhin über{' '} daraus automatisch Komponenten, Gefährdungen und Maßnahmen ab jedes Feld bleibt im Interview änderbar.
<a href="/sdk/iace" className="text-indigo-600 hover:underline">iACE</a>. Manuelles Anlegen weiterhin über <a href="/sdk/iace" className="text-indigo-600 hover:underline">iACE</a>.
</span> </span>
</div> </div>
<p className="text-xs text-gray-400 italic"> <p className="text-xs text-gray-400 italic">
Aus den Grenzen leitet IACE anschließend Gefährdungen und Maßnahmen ab (Entwurf Bestätigung mit Sicherheitsingenieur). Entwurf zur Bestätigung mit Sicherheitsingenieur; im IACE-Interview kann jedes Feld geändert und die
Ableitung neu ausgelöst werden.
</p> </p>
</div> </div>
)} )}