257b6fb33d
Bisher bekam jeder Arbeitsplatz, der den Konflikt-Kontakt im Adressbuch hat, den Hinweis - auch wenn er den Wert gar nicht selbst gepflegt hat. Jetzt zeigt ein Client eine fremde Konflikt-Notiz nur, wenn er den Kontakt hat UND sein eigener Feldwert vom uebernommenen (Gewinner-)Wert abweicht. Die Pruefung laeuft VOR dem Sync (gegen den eigenen Mapping-Snapshot), bevor der Sync den Stand auf den Gewinner-Wert angleicht. - FieldConflict/ConflictNotice: stabiler FieldKey zusaetzlich zum Anzeige-Label. - ContactMerger: GetValue/ValuesEqual per FieldKey (telefon-normalisiert). - ConflictNotifier.GetPending: Filter "eigener Wert != Gewinner-Wert", bekommt StarfaceId -> eigener Kontaktstand. - MainForm zeigt die Hinweise jetzt vor dem Sync und liefert den eigenen Stand aus den Mapping-Snapshots. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
27 lines
1.1 KiB
C#
27 lines
1.1 KiB
C#
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 FieldKey { 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";
|
|
}
|
|
}
|