Fix duplicate company/service contacts: robust phone matching
Firmen-/Service-Eintraege (nur Nummer + Firma, kein Name/E-Mail) wurden bei jedem Sync neu angelegt statt verknuepft, weil das Matching Rufnummern feldgenau und formatabhaengig verglich. Bei unterschiedlich formatierten Nummern (+49 vs 0) und wechselnden Feldern (geschaeftlich/privat) schlug der Abgleich fehl -> Vervielfachung. - NormalizePhone vereinheitlicht jetzt +49/0049 -> 0 (SyncEngine + ContactMerger). - Telefon-Abgleich feldUEBERGREIFEND (jede Nummer gegen jede) via SharedPhone. - "Nummer + Firma"-Treffer nur noch fuer Eintraege OHNE Personennamen, damit Kollegen mit gemeinsamer Zentrale-Nummer nicht verschmolzen werden. - Zusaetzlich: reine Nummern-Eintraege (kein Name/Firma/E-Mail) matchen ueber eine gemeinsame Rufnummer. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -140,7 +140,11 @@ namespace StarfaceOutlookSync.Services
|
||||
private static string NormalizePhone(string phone)
|
||||
{
|
||||
if (string.IsNullOrEmpty(phone)) return "";
|
||||
return new string(phone.Where(c => char.IsDigit(c) || c == '+').ToArray());
|
||||
var s = new string(phone.Where(c => char.IsDigit(c) || c == '+').ToArray());
|
||||
if (s.StartsWith("+49")) s = "0" + s.Substring(3);
|
||||
else if (s.StartsWith("0049")) s = "0" + s.Substring(4);
|
||||
else if (s.StartsWith("+")) s = s.Substring(1);
|
||||
return s;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user