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"