Add cross-client conflict notifications (step 3)
Wird ein echter Feld-Konflikt aufgeloest, erfahren jetzt auch die ANDEREN Arbeitsplaetze davon - nicht nur der aufloesende Client. - ConflictNotice-Modell + ConflictNotifier: schreibt pro Konflikt eine Notiz in <shared>/conflicts/ (nach StarfaceId), liest beim Sync ungesehene Notizen zu eigenen Kontakten, zeigt sie als Tray-Hinweis und merkt sich gezeigte lokal (seen-conflicts.json). Veraltete Notizen (>7 Tage) werden aufgeraeumt. - MainForm: schreibt nach einem Sync mit Konflikten die Notizen und zeigt ausstehende Notizen anderer Clients (gefiltert auf eigene gemappte StarfaceIds). AcquireCrossClientLock nimmt jetzt das gemeinsame Verzeichnis als Parameter. - README/CHANGELOG aktualisiert. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
namespace StarfaceOutlookSync.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// Hinweis ueber einen aufgeloesten Feld-Konflikt, der im gemeinsamen
|
||||
/// Verzeichnis abgelegt wird, damit auch andere Arbeitsplaetze (die denselben
|
||||
/// Kontakt pflegen) erfahren, dass ein Wert ueberschrieben wurde.
|
||||
/// </summary>
|
||||
public class ConflictNotice
|
||||
{
|
||||
public string Id { get; set; } = "";
|
||||
public string ByHost { get; set; } = "";
|
||||
public string ByUser { get; set; } = "";
|
||||
public string TimestampUtc { get; set; } = "";
|
||||
public string StarfaceId { get; set; } = "";
|
||||
public string ContactName { get; set; } = "";
|
||||
public string Field { get; set; } = "";
|
||||
public string OutlookValue { get; set; } = "";
|
||||
public string StarfaceValue { get; set; } = "";
|
||||
public string Winner { get; set; } = "";
|
||||
|
||||
public override string ToString() =>
|
||||
$"{ContactName}: Feld '{Field}' geaendert an Arbeitsplatz {ByHost} " +
|
||||
$"(Outlook: '{OutlookValue}' / Starface: '{StarfaceValue}') -> {Winner} uebernommen";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user