Przejdź do treści

Rededuplikacja

Rededuplikacja to narzędzie operacyjne do ponownego przetworzenia całej historii zamówień — dostępne w panelu operatora.

Po co to istnieje

Każde zamówienie, które trafia do systemu, jest przetwarzane: dane osobowe są porządkowane, a następnie dopasowywane do istniejących klientów. Wynik tej pracy zależy od reguł i ustawień obowiązujących w chwili przetwarzania.

Gdy te reguły się zmieniają — zasady dopasowania, sposób porządkowania imion, obsługa numerów telefonów, filtrowanie zaśmieconych danych — zamówienia przetworzone wcześniej pozostają w stanie sprzed zmiany. Nowe zamówienia korzystają już z ulepszonego algorytmu, stare nie.

Rededuplikacja rozwiązuje ten problem: przepuszcza całą historię przez system od nowa, z aktualnymi regułami, i aktualizuje wyniki. Po zakończeniu wszystkie zamówienia są przetworzone według tych samych zasad.

Kiedy uruchamiać

Rededuplikacja jest potrzebna po każdej zmianie, która mogła wpłynąć na jakość dopasowań:

  • zmiany w porządkowaniu danych (imiona, telefony, adresy e-mail, adresy),
  • zmiany w regułach dopasowania (próg podobieństwa, znaczenie pól, obsługa literówek),
  • zmiany w filtrowaniu — np. rozszerzenie listy zdrobnień imion lub zaśmieconych danych,
  • poprawki w odczytywaniu danych z zamówień.

Nie trzeba jej uruchamiać po zmianach czysto technicznych ani po zmianach w wyglądzie panelu operatora.

Jak przebiega

Rededuplikacja przepuszcza całą historię przez ten sam tok przetwarzania co normalnie działający system — różni się tylko tym, że źródłem są wszystkie zamówienia od zawsze, a nie tylko te nowo zmienione.

Faza 1 — Ponowne wysłanie zamówień

System czyta wszystkie zamówienia od początku historii. Dla każdego wyciąga dane osób (zamawiający, płatnik) i wysyła je do przetworzenia — tak samo jak Scanner przy normalnej pracy.

Postęp jest zapamiętywany na bieżąco. Jeśli system zostanie zatrzymany w trakcie, wznowi pracę od miejsca, w którym skończył — nie od początku.

Faza 2 — Porządkowanie i identyfikacja (Stage1)

Stage1 odbiera dane tak samo jak w normalnym trybie: porządkuje je, pomija osoby niekompletne, decyduje, czy to nowy klient, czy aktualizacja istniejącego. Jest jedna różnica: nawet jeśli dane osoby się nie zmieniły, są i tak przekazywane do Stage2. Rededuplikacja wymusza ponowną ocenę każdego klienta według aktualnych reguł.

Faza 3 — Ponowne szukanie duplikatów (Stage2)

Stage2 ponownie szuka duplikatów dla każdego klienta — scala profile, aktualizuje powiązania z kontem LDE. To najdłuższy etap: przetwarza tylu klientów, ilu było w historii zamówień.

System czeka, aż Stage2 przetworzy co najmniej 95% wszystkich klientów i przez co najmniej minutę nie pojawi się żadne nowe dopasowanie. To sygnał, że praca jest w praktyce zakończona.

Zakończenie

Gdy warunek jest spełniony, rededuplikacja przechodzi w stan „Zakończono". Dane w systemie są teraz spójne z aktualnymi regułami.

Kontrolki operatora

Akcja Kiedy dostępna Co robi
Uruchom Gdy system jest bezczynny Startuje proces od początku; kasuje poprzednie liczniki i zapisany postęp
Zapauzuj W trakcie działania Zatrzymuje na najbliższym punkcie kontrolnym; dane nie są tracone
Wznów Po wstrzymaniu lub błędzie Kontynuuje od miejsca zatrzymania
Uruchom od nowa W dowolnym stanie Startuje od początku, ignoruje poprzedni postęp

W jednym momencie może działać tylko jedna rededuplikacja.

Co widać w panelu

Strona rededuplikacji pokazuje aktualny stan na bieżąco (odświeżenie co 3 sekundy):

  • Faza — która część procesu jest aktualnie aktywna,
  • Paski postępu — osobno dla fazy Stage1 i fazy Stage2,
  • Liczniki — ilu klientów utworzono, ilu zaktualizowano, ile duplikatów scalono,
  • Ostatnie przetworzone zamówienie — identyfikator zamówienia na bieżącym froncie kolejki,
  • Szczegóły błędu — gdy coś poszło nie tak, widoczny jest pełny komunikat.

Odporność na przerwy

Rededuplikacja jest zaprojektowana tak, żeby przerwy nie powodowały utraty pracy:

  • Restart systemu — po ponownym uruchomieniu praca jest automatycznie wznawiana od ostatniego punktu kontrolnego. Nie trzeba nic klikać.
  • Ręczne wstrzymanie — operator może zatrzymać proces i wznowić go później; dane zebrane do punktu zatrzymania są zachowane.
  • Błąd w trakcie działania — przy nieoczekiwanym błędzie rededuplikacja przechodzi w stan „Błąd" z widocznym opisem przyczyny. Po naprawieniu problemu operator może wznowić od miejsca zatrzymania.

W skrajnym przypadku — gdy system zostanie przerwany dokładnie w chwili zapisywania punktu kontrolnego — ostatnia partia zamówień może zostać przetworzona dwa razy. Jest to bezpieczne: powtórne przetworzenie już znanego klienta jest rozpoznawane i nie tworzy duplikatów.

Współistnienie ze Scannerem

Rededuplikacja działa równolegle ze Scannerem — normalny przepływ nowych zamówień nie jest wstrzymywany. Oba strumienie korzystają z tych samych etapów Stage1 i Stage2.

System pilnuje, żeby dwa etapy przetwarzania nie scalały jednocześnie tych samych profili — niezależnie od tego, skąd przyszło zamówienie (ze Scannera czy z rededuplikacji).

Rededuplikacja całej bazy zamówień

Po zmianie reguł porównywania danych wcześniejsze decyzje o połączeniu klientów mogą być błędne. Rededuplikacja to operacja „przelicz wszystko od nowa": wszystkie zamówienia z bazy przechodzą ponownie przez normalizację i porównywanie danych, tak jakby były nowe. Dotychczasowe połączenia są oceniane ponownie, a błędne — naprawiane. Operacja trwa długo (od minut do godzin przy dużej bazie) i jest uruchamiana ręcznie przez operatora po każdej istotnej zmianie reguł.

Rededuplikacja to jednorazowa, ręczna operacja po zmianie reguł

System nie uruchamia rededuplikacji automatycznie. Operator decyduje, kiedy i które etapy uruchomić. Postęp jest zapisywany co pewną liczbę zamówień — jeśli operacja zostanie przerwana, wznowienie kontynuuje od miejsca przerwy. Tylko jedna rededuplikacja może działać w danym momencie. Po zakończeniu dla każdego zamówienia wysyłana jest informacja o zakończeniu deduplikacji, aby systemy odbiorcze (np. analityka) mogły zaktualizować swoje dane.

Scenariusz: Uruchomienie rededuplikacji przetwarza wszystkie zamówienia

Zakładając że baza zawiera 5 zamówień z danymi osobowymi
I algorytm deduplikacji jest skonfigurowany
Kiedy operator uruchomi rededuplikację
Wtedy wszystkie 5 zamówień przejdzie przez normalizację
I wszystkie 5 zamówień utworzy lub zaktualizuje klientów
I status rededuplikacji zmieni się na "Completed"

Scenariusz: Rededuplikacja wymusza Stage2 matching nawet bez zmian danych

Zakładając że baza zawiera 3 zamówienia już przetworzonych
I klienci istnieją w bazie PostgreSQL
Kiedy operator uruchomi rededuplikację
Wtedy Stage1 przetworzy zamówienia jako UpdatedAndQueued
I mimo braku zmian klienci zostaną wysłani do Stage2
I Stage2 ponownie oceni wszystkich klientów

Scenariusz: Po rededuplikacji wszystkie powiązania zamówienie-klient są poprawne

Zakładając że baza zawiera 4 zamówienia z 2 osobami każde
I istniejące powiązania OrderPersonLink w bazie
Kiedy operator uruchomi rededuplikację
Wtedy każde zamówienie ma poprawne powiązanie z klientem
I żadne powiązanie nie zostało usunięte bez zastąpienia

Scenariusz: Po rededuplikacji wysyłane są powiadomienia DeduplicationCompleted

Zakładając że baza zawiera 3 zamówienia
I AnalyticsSyncWorker nasłuchuje na topic dedup-completed
Kiedy operator uruchomi rededuplikację
Wtedy dla każdego przetworzonenego zamówienia wysłano DeduplicationCompletedMessage
I wiadomości zawierają poprawne OrderId i PersonId

Scenariusz: System blokuje jednoczesne uruchomienie drugiej rededuplikacji

Zakładając że rededuplikacja jest w toku
Kiedy operator próbuje uruchomić drugą rededuplikację
Wtedy system odrzuca żądanie z komunikatem o trwającym procesie

Scenariusz: Wznowienie przerwanej rededuplikacji od checkpointu

Zakładając że rededuplikacja została przerwana po przetworzeniu 500 z 1000 zamówień
I checkpoint zapisany jest na pozycji 500
Kiedy operator wznowi rededuplikację
Wtedy system kontynuuje od zamówienia 501
I nie przetwarza ponownie pierwszych 500 zamówień

Scenariusz: Operator widzi postęp rededuplikacji w czasie rzeczywistym

Zakładając że rededuplikacja jest w toku z 300 przetworzonymi z 1000
Kiedy operator sprawdzi status rededuplikacji
Wtedy widzi liczbę przetworzonych 300
I widzi aktualny status "InProgress"