Vorgaenge in der WebUI: entscheiden und Stellungnahme anfordern (#689, Stufe 3)

- /api/cases (offen/alle), /api/cases/{id}/decide, /api/cases/{id}/statement, /api/decisions
- Ansicht "Vorgaenge": offene Faelle mit Verlauf je Ebene (Lauf-Links), Frist und
  "Mensch gerufen"; Reiter Beschluesse mit Reichweite; Zaehler in der Seitenleiste
- Konzept Abschnitt 5: Umsetzung

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-09-25 09:53:25 +02:00
co-authored by Claude Opus 5.5
parent 36fe1ad2aa
commit 418a73015d
11 changed files with 600 additions and 2 deletions
@@ -222,6 +222,7 @@
"nav.group.system": "System",
"nav.instances": "Instanzen",
"nav.staging": "Freigaben",
"nav.cases": "Vorgänge",
"nav.logs": "Protokoll",
"nav.backup": "Sicherung",
"nav.settings": "Einstellungen",
@@ -851,5 +852,65 @@
"desktop.dialog.addService": "Dienst hinzufügen",
"desktop.dialog.restoreBackup": "Sicherung wiederherstellen",
"desktop.dialog.license": "Lizenz-Aktivierung",
"desktop.dialog.instancePicker": "Instanz auswählen"
"desktop.dialog.instancePicker": "Instanz auswählen",
"cases.title": "Vorgänge",
"cases.refresh": "Aktualisieren",
"cases.intro": "Eskalationen und Konflikte, die die Agenten nicht unter sich lösen konnten, und die Beschlüsse, die sie geschlossen haben. Was bis zur Frist niemand löst, landet hier.",
"cases.tabOpen": "Offen",
"cases.tabAll": "Alle",
"cases.tabDecisions": "Beschlüsse",
"cases.none": "Keine offenen Vorgänge",
"cases.noneHint": "Nichts wartet auf eine Entscheidung.",
"cases.noDecisions": "Noch keine Beschlüsse",
"cases.noDecisionsHint": "Jeder entschiedene Vorgang hinterlässt hier einen Beschluss. Er gilt für den Bereich, für den er gefasst wurde, und wird gezeigt, bevor jemand dieselbe Frage erneut stellt.",
"cases.loadFailed": "Vorgänge konnten nicht geladen werden",
"cases.kindEscalation": "Eskalation",
"cases.kindConflict": "Konflikt",
"cases.status.open": "offen",
"cases.status.decided": "entschieden",
"cases.status.handled": "erledigt",
"cases.overdue": "Frist überschritten",
"cases.called": "Mensch gerufen",
"cases.id": "ID",
"cases.openedBy": "Eröffnet von",
"cases.holder": "Liegt bei",
"cases.human": "dir (Mensch)",
"cases.humanAuthor": "Mensch",
"cases.deadline": "Frist",
"cases.level": "Weitergereicht",
"cases.parties": "Seiten",
"cases.informed": "Vermerkt, nicht befragt",
"cases.waitingFor": "Wartet auf",
"cases.origin": "Herkunft",
"cases.trail": "Was jede Ebene gesagt hat",
"cases.entry.opened": "eröffnet",
"cases.entry.joined": "angeschlossen",
"cases.entry.forwarded": "weitergereicht",
"cases.entry.position": "Standpunkt",
"cases.entry.statement": "Stellungnahme",
"cases.entry.statement-requested": "Stellungnahme angefordert",
"cases.entry.called": "Mensch gerufen",
"cases.entry.decided": "entschieden",
"cases.entry.handled": "erledigt",
"cases.entry.note": "Vermerk",
"cases.decide": "Entscheiden",
"cases.decideTitle": "Vorgang {id} entscheiden",
"cases.decideHint": "Deine Entscheidung gilt für die ganze Instanz. Jeder Agent, der dieselbe Frage stellt, bekommt sie vorher angezeigt. Alle, die den Vorgang eröffnet haben oder daran beteiligt sind, erfahren davon.",
"cases.answer": "Entscheidung",
"cases.answerPlaceholder": "Was ab jetzt gilt",
"cases.reasoning": "Begründung",
"cases.reasoningPlaceholder": "Warum. Ohne Begründung lässt sich eine Entscheidung unten nicht anwenden",
"cases.decided": "Beschluss gespeichert.",
"cases.requestStatement": "Stellungnahme anfordern",
"cases.statementTitle": "Stellungnahme zu Vorgang {id} anfordern",
"cases.statementFrom": "Von",
"cases.question": "Frage",
"cases.questionPlaceholder": "Was musst du wissen?",
"cases.statementHint": "Der Agent bekommt eine Aufgabe mit genau dieser Frage und einer eigenen Frist. Der Vorgang bleibt bei dir.",
"cases.statementRequested": "Stellungnahme angefordert.",
"cases.scope": "Gilt für",
"cases.scopeAll": "die ganze Instanz",
"cases.decidedBy": "Entschieden von",
"cases.failed": "Fehlgeschlagen: {error}"
}
@@ -222,6 +222,7 @@
"nav.group.system": "System",
"nav.instances": "Instances",
"nav.staging": "Approvals",
"nav.cases": "Cases",
"nav.logs": "Logs",
"nav.backup": "Backup",
"nav.settings": "Settings",
@@ -851,5 +852,65 @@
"desktop.dialog.addService": "Add Service",
"desktop.dialog.restoreBackup": "Restore Backup",
"desktop.dialog.license": "License Activation",
"desktop.dialog.instancePicker": "Choose Instance"
"desktop.dialog.instancePicker": "Choose Instance",
"cases.title": "Cases",
"cases.refresh": "Refresh",
"cases.intro": "Escalations and conflicts the agents could not solve among themselves, and the decisions that closed them. A case nobody solves by its deadline comes here.",
"cases.tabOpen": "Open",
"cases.tabAll": "All",
"cases.tabDecisions": "Decisions",
"cases.none": "No open cases",
"cases.noneHint": "Nothing waits for a decision.",
"cases.noDecisions": "No decisions yet",
"cases.noDecisionsHint": "Every decided case leaves a decision here. It binds the area it was made for and is shown before anyone asks the same again.",
"cases.loadFailed": "Cases could not be loaded",
"cases.kindEscalation": "Escalation",
"cases.kindConflict": "Conflict",
"cases.status.open": "open",
"cases.status.decided": "decided",
"cases.status.handled": "handled",
"cases.overdue": "past deadline",
"cases.called": "human called",
"cases.id": "ID",
"cases.openedBy": "Opened by",
"cases.holder": "With",
"cases.human": "you (human)",
"cases.humanAuthor": "human",
"cases.deadline": "Deadline",
"cases.level": "Passed on",
"cases.parties": "Sides",
"cases.informed": "Told, not asked",
"cases.waitingFor": "Waiting for",
"cases.origin": "Arose from",
"cases.trail": "What each level said",
"cases.entry.opened": "opened",
"cases.entry.joined": "joined",
"cases.entry.forwarded": "passed on",
"cases.entry.position": "position",
"cases.entry.statement": "statement",
"cases.entry.statement-requested": "statement requested",
"cases.entry.called": "human called",
"cases.entry.decided": "decided",
"cases.entry.handled": "handled",
"cases.entry.note": "note",
"cases.decide": "Decide",
"cases.decideTitle": "Decide case {id}",
"cases.decideHint": "Your decision binds the whole instance and is shown to every agent that raises the same question. Everyone who raised it or is a side of it hears it.",
"cases.answer": "Decision",
"cases.answerPlaceholder": "What holds from now on",
"cases.reasoning": "Reasoning",
"cases.reasoningPlaceholder": "Why — without reasons a decision cannot be applied below",
"cases.decided": "Decision recorded.",
"cases.requestStatement": "Request statement",
"cases.statementTitle": "Request a statement for case {id}",
"cases.statementFrom": "From",
"cases.question": "Question",
"cases.questionPlaceholder": "What do you need to know?",
"cases.statementHint": "The agent gets a task with exactly this question and its own deadline. The case stays with you.",
"cases.statementRequested": "Statement requested.",
"cases.scope": "Binds",
"cases.scopeAll": "the whole instance",
"cases.decidedBy": "Decided by",
"cases.failed": "Failed: {error}"
}