Verlorene Updates erkennen statt warten: optimistische Pruefung beim Ersetzen, Konflikte im Audit und im Lagebild (#720)
FileLedger merkt je Agent die gelesene Fassung einer Datei in gemeinsamen Bereichen. write, copy und Downloads (FTP, RocketChat) ersetzen eine Datei nur, wenn sie seit dem Lesen unveraendert ist; eine fremde Datei nicht ungelesen. append bleibt ungeprueft, macht aeltere Lesestaende aber ungueltig. Abgelehnte Schreibvorgaenge: eigener Audit-Status Conflict, Tabelle FileConflicts, Hotspots (>= 3 in 7 Tagen) in der Teamuebersicht. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
8a7212c240
commit
79a3a7854f
@@ -189,7 +189,11 @@ public sealed record TeamSnapshotDto(
|
||||
IReadOnlyList<TeamMemberDto> Members,
|
||||
IReadOnlyList<AgentLinkDto> Links,
|
||||
DateTime AtUtc,
|
||||
IReadOnlyList<TeamUnitDto> Units);
|
||||
IReadOnlyList<TeamUnitDto> Units,
|
||||
IReadOnlyList<ConflictHotspotDto> ConflictHotspots);
|
||||
|
||||
/// <summary>#720: A file agents keep overwriting each other in — shown with a warning. The path is relative to the instance's Agents folder.</summary>
|
||||
public sealed record ConflictHotspotDto(string Workspace, string Path, int Conflicts, DateTime LastAtUtc, IReadOnlyList<string> Agents);
|
||||
|
||||
/// <summary>
|
||||
/// #711, stage 1: A unit with the states of everyone in it and below, counted by the
|
||||
|
||||
@@ -101,7 +101,9 @@ internal static class Mapping
|
||||
(snapshot.Units ?? []).Select(u => new TeamUnitDto(
|
||||
u.Id, u.Name, u.ParentId, u.Path, u.LeaderAgentId, u.Goal, u.Agents,
|
||||
u.States.ToDictionary(s => s.Key.ToString(), s => s.Value),
|
||||
u.PendingApprovals, u.Worst.ToString())).ToList());
|
||||
u.PendingApprovals, u.Worst.ToString())).ToList(),
|
||||
(snapshot.ConflictHotspots ?? []).Select(h => new ConflictHotspotDto(
|
||||
h.Workspace, h.Path, h.Conflicts, h.LastAtUtc, h.Agents)).ToList());
|
||||
|
||||
public static ActiveRunDto ToDto(this Core.Activity.ActiveRun run)
|
||||
=> new(run.RunId, run.AgentId, run.Source, run.TaskId, run.CalledBy, run.StartedAtUtc);
|
||||
|
||||
Reference in New Issue
Block a user