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
+43
View File
@@ -0,0 +1,43 @@
namespace ClawdDotNet.Web.Contracts;
/// <summary>#689: A case — escalation or conflict — with everything each level said.</summary>
public sealed record CaseDto(
string Id,
string Kind,
string Status,
string Subject,
string OpenedBy,
DateTime OpenedAt,
DateTime DeadlineUtc,
DateTime? HumanCalledAt,
// null: a human holds it.
string? Holder,
string HolderTaskId,
int Level,
string OriginTaskId,
string OriginRunId,
IReadOnlyList<string> Parties,
IReadOnlyList<string> Informed,
IReadOnlyList<string> WaitingFor,
IReadOnlyList<CaseEntryDto> Trail,
string? DecisionId);
public sealed record CaseEntryDto(DateTime At, string Author, string Kind, string Text, string? RunId);
public sealed record DecisionDto(
string Id,
string Subject,
string Question,
string Answer,
string Reasoning,
string DecidedBy,
DateTime DecidedAt,
string? ScopeUnitId,
// "Purchasing / Team A"; null: binds the whole instance.
string? ScopePath,
string CaseId,
string? RunId);
public sealed record CaseDecisionInputDto(string? Answer, string? Reasoning);
public sealed record CaseStatementInputDto(string? AgentId, string? Question);