Rozwiązanie składa się z wielu modułów.
Projekt można uruchomić korzystając z polecenia docker compose up. Należy chwilę odczekać, gdyż Kafka się długo uruchamia i dopiero po jej uruchomieniu rozwiązanie zaczyła działać stabilnie.
Tworzy losowe transakcje które są zapisywane na topic Kafki transactions w formacie JSON.
Parametry generatora można zmieniać poprzez parametry w pliku docker-compose.yaml.
Zarządza i uruchamia algorytmy sprawdzające oszustwa. Czyta z topicu Kafki transactions, a zapisuje wyniki do topicu alerts.
Jest kilka algorytmów sprawdzających wiarygodność transakcji.
ExpiredCardDetector- sprawdza, czy transakcja nie odbyła się po skończeniu ważności karty,OverLimitDetector- sprawdza, czy transakcja mieści się w limicie,SmallThenLargeDetector- sprawdza, czy w okienku minutowym nie dopuszczono się małej transakcji (poniżej 20 zł), po czym wykonano dużą transakcję (powyżej 500 zł),NormalDistributionDetector- oblicza parametry rozkładu normalnego: średnią oraz wariancję, a na ich podstawie odrzuca transakcje które są oddalone od średniej o więcej niż odchylenie standardowe,LocationDetector- który sprawdza dla ustalonego "session window" czy w trakcie okna transakcje nie są nadmiarowo oddalone od średniej lokalizacji transakcji w oknie.
Algorytmy zapisane są w folderze frauddetection/src/java/spendreport/detectors.
Zczytuje alerty z topicu Kafki alerts i przekazuje je klientom nasłuchującym na Websockecie.
Łączy się z Alerts Reader po Websockecie i na żywo wyświetla alerty oraz zlicza je na wykresie w okienkach 30 sekundowych.
Kafka ma dwa topici umożliwiające komunikację. Działanie Kafki możemy podejrzeć korzystając z interfejsu graficznego Kafdrop.
