{"id":31675,"date":"2026-10-30T20:58:44","date_gmt":"2026-10-30T20:58:44","guid":{"rendered":"https:\/\/umang.pk\/2026\/10\/30\/%d9%86%d8%a7%d9%84%d8%ac-%da%af%d8%b1%d8%a7%d9%81-%da%a9%db%92-%d8%b3%d8%a7%d8%aa%da%be-%d9%85%d8%a7%d9%84%db%8c-%d9%81%d8%b1%d8%a7%da%88-%da%a9%db%92-%d9%86%d9%85%d9%88%d9%86%d9%88%da%ba-%da%a9%d8%a7\/"},"modified":"2026-10-30T20:58:44","modified_gmt":"2026-10-30T20:58:44","slug":"%d9%86%d8%a7%d9%84%d8%ac-%da%af%d8%b1%d8%a7%d9%81-%da%a9%db%92-%d8%b3%d8%a7%d8%aa%da%be-%d9%85%d8%a7%d9%84%db%8c-%d9%81%d8%b1%d8%a7%da%88-%da%a9%db%92-%d9%86%d9%85%d9%88%d9%86%d9%88%da%ba-%da%a9%d8%a7","status":"publish","type":"post","link":"https:\/\/umang.pk\/en_us\/2026\/10\/30\/%d9%86%d8%a7%d9%84%d8%ac-%da%af%d8%b1%d8%a7%d9%81-%da%a9%db%92-%d8%b3%d8%a7%d8%aa%da%be-%d9%85%d8%a7%d9%84%db%8c-%d9%81%d8%b1%d8%a7%da%88-%da%a9%db%92-%d9%86%d9%85%d9%88%d9%86%d9%88%da%ba-%da%a9%d8%a7\/","title":{"rendered":"\u0646\u0627\u0644\u062c \u06af\u0631\u0627\u0641 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0627\u0644\u06cc \u0641\u0631\u0627\u0688 \u06a9\u06d2 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1: \u0627\u06cc\u06a9 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u06af\u0627\u0626\u06cc\u0688"},"content":{"rendered":"\n<div id=\"\">\n<p>\u0627\u0646\u0679\u0631\u067e\u0631\u0627\u0626\u0632 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06d2 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u0645\u06cc\u06ba \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0641\u0631\u0627\u0688 \u0633\u06d2 \u0628\u0686\u0627\u0624 \u06a9\u06d2 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631\u0627\u062a \u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0644\u06cc\u0646 \u062f\u06cc\u0646 \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u062c\u0628 \u06a9\u0648\u0626\u06cc \u0631\u0633\u06cc\u062f \u0622\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0627\u06cc\u06a9 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0642\u0648\u0627\u0639\u062f \u06a9\u0627 \u0627\u0646\u062c\u0646 \u0627\u0633\u06d2 \u062c\u0627\u0645\u062f \u062d\u062f\u0648\u06ba \u06a9\u06d2 \u062e\u0644\u0627\u0641 \u0686\u06cc\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0688\u0627\u0644\u0631 \u06a9\u06cc \u0631\u0642\u0645 \u0645\u0639\u0645\u0648\u0644 \u06a9\u06cc \u062d\u062f \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u06c1\u06d2\u060c \u0648\u06cc\u0646\u0688\u0631 \u0645\u0646\u0638\u0648\u0631 \u0634\u062f\u06c1 \u0648\u06cc\u0646\u0688\u0631 \u0644\u0633\u0679 \u0645\u06cc\u06ba \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0622\u067e \u062c\u0648 IP \u0627\u06cc\u0688\u0631\u06cc\u0633 \u062c\u0645\u0639 \u06a9\u0631\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u0648\u06c1 \u0648\u0627\u0642\u0641 \u0646\u0638\u0631 \u0622\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u0627\u0648\u0635\u0627\u0641 \u0642\u0627\u0628\u0644 \u0641\u06c1\u0645 \u0646\u0638\u0631 \u0622\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u0645\u0646\u0633\u0648\u062e \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0646\u0642\u0637\u06c1 \u0646\u0638\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0633\u0626\u0644\u06c1 \u0633\u0627\u062e\u062a\u06cc \u06c1\u06d2\u06d4 \u0641\u0631\u0627\u0688 \u06a9\u06cc \u0646\u0641\u06cc\u0633 \u0627\u0633\u06a9\u06cc\u0645\u06cc\u06ba \u062c\u06cc\u0633\u06d2 \u0645\u0646\u06cc \u0645\u0648\u0648\u0644 \u0631\u0650\u0646\u06af\u0632\u060c \u0633\u0631\u06a9\u0644\u0631 \u0627\u0646\u0648\u0627\u0626\u0633\u0646\u06af \u0644\u0648\u067e\u0633\u060c \u0627\u0648\u0631 \u0633\u067e\u0644\u0627\u0626\u0631 \u06a9\u06d2 \u062a\u0646\u0627\u0632\u0639\u0627\u062a \u0634\u0627\u0630 \u0648 \u0646\u0627\u062f\u0631 \u06c1\u06cc \u0627\u06cc\u0633\u06d2 \u0644\u06cc\u0646 \u062f\u06cc\u0646 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u062d\u062f\u0648\u06ba \u06a9\u0648 \u062e\u0628\u0631\u062f\u0627\u0631 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u06cc\u06a9 \u0634\u06cc\u0644 \u06a9\u0645\u067e\u0646\u06cc \u062c\u0648 $5,000 \u0688\u0628\u0644 \u0627\u062c\u0627\u0632\u062a \u06a9\u06cc \u062d\u062f \u06a9\u06d2 \u0646\u06cc\u0686\u06d2 \u0631\u06c1\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 $4,800 \u06a9\u06cc \u0631\u0633\u06cc\u062f\u06cc\u06ba \u062c\u0627\u0631\u06cc \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u062c\u0628 \u0627\u0633\u06d2 \u062a\u0646\u06c1\u0627\u0626\u06cc \u0645\u06cc\u06ba \u062f\u06cc\u06a9\u06be\u0627 \u062c\u0627\u0626\u06d2 \u062a\u0648 \u0628\u0627\u0644\u06a9\u0644 \u0679\u06be\u06cc\u06a9 \u0646\u0638\u0631 \u0622\u062a\u0627 \u06c1\u06d2\u06d4 \u0644\u06cc\u06a9\u0646 \u062c\u0628 25 \u0628\u0638\u0627\u06c1\u0631 \u0622\u0632\u0627\u062f \u0633\u067e\u0644\u0627\u0626\u0631\u0632 \u0627\u06cc\u06a9 \u06c1\u06cc \u0628\u06cc\u0646\u06a9 \u0627\u06a9\u0627\u0624\u0646\u0679 \u0645\u06cc\u06ba \u062a\u0645\u0627\u0645 \u0631\u0648\u0679 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0645\u0631\u0628\u0648\u0637 \u067e\u06cc\u0679\u0631\u0646 \u0648\u0627\u0636\u062d \u06c1\u0648\u0646\u06d2 \u0644\u06af\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0622\u067e \u06a9\u0648 \u0627\u0644\u06af \u062a\u06be\u0644\u06af \u0644\u06cc\u0646 \u062f\u06cc\u0646 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0645\u06cc\u06ba \u06a9\u0648\u0626\u06cc \u0627\u0646\u062a\u0628\u0627\u06c1 \u0646\u06c1\u06cc\u06ba \u0645\u0644\u06d2 \u06af\u0627\u06d4 \u06cc\u06c1 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06d2 \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u06a9\u06cc \u0679\u0648\u067e\u0648\u0644\u0648\u062c\u06cc \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0645\u062a\u0639\u0644\u0642\u06c1 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0645\u06cc\u06ba \u0627\u0646 \u06a9\u062b\u06cc\u0631 \u06c1\u0633\u062a\u06cc \u06a9\u06d2 \u062a\u0639\u0644\u0642\u0627\u062a \u06a9\u0648 \u0679\u0631\u06cc\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0648\u06cc\u0646\u0688\u0631\u060c \u0627\u0646\u0648\u0627\u0626\u0633\u060c \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc\u060c \u0627\u0648\u0631 \u0628\u06cc\u0646\u06a9 \u0627\u06a9\u0627\u0624\u0646\u0679 \u0679\u06cc\u0628\u0644\u0632 \u0645\u06cc\u06ba \u0631\u06cc\u06a9\u0633\u0631\u06cc\u0648 \u0633\u06cc\u0644 \u062c\u0648\u0627\u0626\u0646 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u062a\u0627\u06c1\u0645\u060c \u062c\u06cc\u0633\u06d2 \u062c\u06cc\u0633\u06d2 \u0645\u06cc\u0632\u06cc\u06ba \u0644\u0627\u06a9\u06be\u0648\u06ba \u0642\u0637\u0627\u0631\u0648\u06ba \u062a\u06a9 \u0628\u0691\u06be\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u06af\u06c1\u0631\u06d2 \u0631\u0627\u0633\u062a\u06d2 \u06a9\u06cc \u062a\u0644\u0627\u0634 \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06cc \u06a9\u0627\u0631\u06a9\u0631\u062f\u06af\u06cc \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u06a9\u0645 \u06c1\u0648\u062a\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u06af\u0631\u0627\u0641 \u0688\u06cc\u0679\u0627\u0628\u06cc\u0633 \u0631\u0634\u062a\u0648\u06ba \u06a9\u0648 \u0641\u0631\u0633\u0679 \u06a9\u0644\u0627\u0633 \u0627\u0646\u0688\u06cc\u06a9\u0633 \u0644\u06cc\u0633 \u06a9\u0646\u0679\u06cc\u06af\u0648\u0626\u0633 \u067e\u0648\u0627\u0626\u0646\u0679\u0631\u0632 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u0679\u0648\u0631 \u06a9\u0631\u06a9\u06d2 \u0627\u0648\u0631 \u0645\u0644\u0679\u06cc \u06c1\u0627\u067e \u0679\u0631\u0627\u0648\u0631\u0633\u0644\u0632 \u06a9\u0648 \u0645\u0633\u062a\u0642\u0644 \u0648\u0642\u062a\u06cc \u062a\u0644\u0627\u0634 \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u06a9\u06d2 \u0627\u0633 \u0645\u0633\u0626\u0644\u06d2 \u06a9\u0648 \u062d\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0633 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0645\u06cc\u06ba\u060c \u06c1\u0645 Neo4j \u067e\u0631 \u0628\u0646\u06cc \u0627\u06cc\u0646\u0688 \u0679\u0648 \u0627\u06cc\u0646\u0688 \u0631\u06cc\u0644\u06cc\u0634\u0646\u0644 \u0641\u0631\u0627\u0688 \u0688\u06cc\u0679\u06cc\u06a9\u0634\u0646 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u06a9\u06d2 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u06cc\u06ba \u06af\u06d2\u06d4 \u06c1\u0645 \u062f\u06cc\u06a9\u06be\u06cc\u06ba \u06af\u06d2 \u06a9\u06c1 \u0645\u0627\u0644\u06cc\u0627\u062a\u06cc \u0627\u062f\u0627\u0631\u0648\u06ba \u06a9\u0648 \u06af\u0631\u0627\u0641\u0633 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u06cc\u0633\u06d2 \u0645\u0627\u0688\u0644 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u060c \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06d2 \u0644\u06cc\u0679\u06cc\u0646\u0633\u06cc \u06a9\u0648 \u0628\u06c1\u062a\u0631 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0627\u062e\u0630 \u06a9\u0631\u062f\u06c1 \u06a9\u0646\u0627\u0631\u0648\u06ba \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u060c \u0627\u0648\u0631 \u067e\u0627\u0646\u0686 \u0627\u06c1\u0645 \u067e\u0631\u0648\u06a9\u06cc\u0648\u0631\u0645\u0646\u0679 \u0641\u0631\u0627\u0688 \u0627\u0633\u06a9\u06cc\u0645\u0648\u06ba \u06a9\u0627 \u067e\u0631\u062f\u06c1 \u0641\u0627\u0634 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0627\u0626\u0632\u0688 \u0633\u0627\u0626\u0641\u0631 \u0633\u0648\u0627\u0644\u0627\u062a \u0644\u06a9\u06be\u06cc\u06ba\u06d4<\/p>\n<p>\u0641\u0631\u0627\u0688 \u0688\u0679\u06cc\u06a9\u0634\u0646- \u0646\u0627\u0644\u062c \u06af\u0631\u0627\u0641\u0633 \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u0645\u06cc\u06ba \u0645\u06a9\u0645\u0644 \u062d\u0648\u0627\u0644\u06c1 \u06a9\u0627 \u0646\u0641\u0627\u0630 \u067e\u0627\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-what-well-cover\">\u06c1\u0645 \u06a9\u06cc\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u06cc\u06ba \u06af\u06d2:<\/h3>\n<h2 id=\"heading-why-tabular-rules-miss-relational-fraud\">\u06a9\u06cc\u0648\u06ba \u0679\u06cc\u0628\u0644\u0631 \u0631\u0648\u0644\u0632 \u0631\u0634\u062a\u06c1 \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642 \u0641\u0631\u0627\u0688 \u0633\u06d2 \u0645\u062d\u0631\u0648\u0645 \u06c1\u06cc\u06ba\u06d4<\/h2>\n<p>\u0627\u06a9\u0627\u0624\u0646\u0679\u0633 \u0642\u0627\u0628\u0644 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u0645\u06cc\u06ba\u060c \u062e\u0637\u0631\u06d2 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0644\u06af \u062a\u06be\u0644\u06af \u0631\u06cc\u06a9\u0627\u0631\u0688 \u067e\u0631 \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-python\"># Transaction-level view \u2014 nothing suspicious\ntransactions = [\n    {\"vendor\": \"Alpha Corp\", \"amount\": 5200.00, \"date\": \"2025-08-01\"},\n    {\"vendor\": \"Beta LLC\", \"amount\": 4800.00, \"date\": \"2025-08-02\"},\n    {\"vendor\": \"Gamma Inc\", \"amount\": 5100.00, \"date\": \"2025-08-03\"},\n]\n# All amounts within normal range ($1K\u2013$15K). All vendors valid.\n# Dates are sequential. Nothing triggers any rule.\n<\/code><\/pre>\n<p>\u062c\u0628 \u0622\u067e \u0627\u0646\u06c1\u06cc \u0631\u06cc\u06a9\u0627\u0631\u0688\u0648\u06ba \u06a9\u0648 \u0627\u06cc\u06a9 \u062f\u0648\u0633\u0631\u06d2 \u0633\u06d2 \u0645\u0646\u0633\u0644\u06a9 \u06af\u0631\u0627\u0641 \u0645\u06cc\u06ba \u0646\u0642\u0634\u06c1 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u067e\u0648\u0634\u06cc\u062f\u06c1 \u0688\u06be\u0627\u0646\u0686\u06c1 \u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0648\u0627\u0636\u062d \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-python\"># Graph view \u2014 all three vendors pay to the same account\nconnections = {\n    \"ACC-MULE-001\": [\"Alpha Corp\", \"Beta LLC\", \"Gamma Inc\"],\n    \"ACC-0042\":     [\"Delta Corp\", \"Epsilon LLC\"],\n    \"ACC-0099\":     [\"Zeta GmbH\"],\n}\n# ACC-MULE-001 receives from 25+ vendors. That's a money mule ring.\n# The convergence is the red flag.\n<\/code><\/pre>\n<p>\u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06cc\u0679\u0627 \u062a\u0628\u062f\u06cc\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u0627 \u06c1\u06d2\u06d4 \u062a\u0627\u06c1\u0645\u060c \u06c1\u0633\u062a\u06cc \u06af\u0631\u0627\u0641 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0644\u06cc\u0646 \u062f\u06cc\u0646 \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u062a\u06d2 \u0648\u0642\u062a\u060c \u0645\u0631\u0628\u0648\u0637 \u0641\u0646\u0644 \u0646\u0645\u0627\u06cc\u0627\u06ba \u06c1\u0648 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0646 \u0646\u0642\u0637\u0648\u06ba \u06a9\u0648 \u0645\u062a\u0639\u0644\u0642\u06c1 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0645\u06cc\u06ba \u062c\u0648\u0691\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0644\u06af \u0627\u0644\u06af \u0679\u06cc\u0628\u0644\u0632 \u0645\u06cc\u06ba \u0645\u062a\u0639\u062f\u062f \u062c\u0648\u0627\u0626\u0646\u0632 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u0639\u0644\u0645\u06cc \u06af\u0631\u0627\u0641 \u0645\u06cc\u06ba\u060c \u06a9\u0646\u06a9\u0634\u0646\u0632 \u06a9\u0648 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u06a9\u0646\u0627\u0631\u0648\u06ba \u06a9\u0648 \u062c\u0648\u0691\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0646\u0648\u0688\u0633 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0645\u062d\u0641\u0648\u0638 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u0627\u0646 \u0633\u06d2 \u0627\u06cc\u06a9 \u06c1\u06cc \u0679\u0631\u0627\u0648\u0631\u0633\u0644 \u0645\u06cc\u06ba \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<table>\n<thead>\n<tr>\n<th>\u067e\u06cc\u0679\u0631\u0646<\/th>\n<th>\u06cc\u06c1 \u06a9\u06cc\u0627 \u06c1\u06d2<\/th>\n<th>\u062c\u0648 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0679\u0648\u0644\u0632 \u06a9\u06cc\u067e\u0686\u0631 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06d2<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u0688\u067e\u0644\u06cc\u06a9\u06cc\u0679 \u0631\u0633\u06cc\u062f<\/td>\n<td>\u0627\u06cc\u06a9 \u06c1\u06cc \u0627\u0646\u0648\u0627\u0626\u0633 \u0627\u0648\u0631 \u0648\u06cc\u0646\u0688\u0631\u060c \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0627\u06cc\u06a9 \u06c1\u06cc \u0631\u0642\u0645\u060c \u0645\u0642\u0631\u0631\u06c1 \u062a\u0627\u0631\u06cc\u062e\u06d4<\/td>\n<td>\u0627\u06cc\u06a9 \u0639\u06cc\u0646 \u0645\u0637\u0627\u0628\u0642 \u0645\u06cc\u0686 \u0645\u06cc\u06ba \u06a9\u0686\u06be \u0627\u062e\u062a\u0644\u0627\u0641\u0627\u062a \u0686\u06be\u0648\u0679 \u062c\u0627\u0626\u06cc\u06ba \u06af\u06d2\u06d4<\/td>\n<\/tr>\n<tr>\n<td>\u0633\u0631\u06a9\u0644\u0631 \u0627\u0646\u06af\u0648\u0679\u06cc<\/td>\n<td>\u0633\u067e\u0644\u0627\u0626\u0631\u0632 \u0627\u06cc\u06a9 \u062f\u0648\u0633\u0631\u06d2 \u06a9\u0648 \u0628\u0646\u062f \u0644\u0648\u067e \u0645\u06cc\u06ba \u0631\u0633\u06cc\u062f \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/td>\n<td>\u06c1\u0631 \u0631\u0633\u06cc\u062f \u0627\u067e\u0646\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u062c\u0627\u0626\u0632 \u0645\u0639\u0644\u0648\u0645 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/td>\n<\/tr>\n<tr>\n<td>\u067e\u06cc\u0633\u06d2 \u062e\u0686\u0631 \u06a9\u06cc \u0627\u0646\u06af\u0648\u0679\u06cc<\/td>\n<td>\u0628\u06c1\u062a \u0633\u06d2 \u0633\u067e\u0644\u0627\u0626\u0631\u0632 \u0627\u06cc\u06a9 \u06a9\u0646\u0679\u0631\u0648\u0644 \u0627\u06a9\u0627\u0624\u0646\u0679 \u0645\u06cc\u06ba \u0622\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/td>\n<td>\u0648\u0627\u062d\u062f \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u0645\u06cc\u06ba \u06a9\u0648\u0626\u06cc \u062d\u0631\u062c \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/td>\n<\/tr>\n<tr>\n<td>\u0633\u067e\u0644\u0627\u0626\u0631 \u06a9\u06cc \u0645\u0644\u06cc \u0628\u06be\u06af\u062a<\/td>\n<td>\u0628\u0646\u06cc\u0627\u062f\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u0627 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0622\u0632\u0627\u062f \u062f\u06a9\u0627\u0646\u062f\u0627\u0631<\/td>\n<td>\u0627\u062f\u0627\u0631\u0648\u06ba \u0645\u06cc\u06ba \u06a9\u0633\u06cc \u06a9\u0644\u0633\u0679\u0631\u0632 \u06a9\u0627 \u067e\u062a\u06c1 \u0646\u06c1\u06cc\u06ba \u0686\u0644\u0627\u06d4<\/td>\n<\/tr>\n<tr>\n<td>\u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06cc\u0627 \u0627\u0633 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1<\/td>\n<td>\u0645\u062d\u06a9\u0645\u06c1 \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 \u0645\u062c\u0627\u0632 \u0646\u06c1 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0627\u0641\u0631\u0627\u062f \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0645\u0646\u0638\u0648\u0631 \u0634\u062f\u06c1 \u0631\u0633\u06cc\u062f\u06cc\u06ba<\/td>\n<td>\u06a9\u0631\u062f\u0627\u0631 \u067e\u0631 \u0645\u0628\u0646\u06cc \u0686\u06cc\u06a9 \u067e\u0627\u0633 \u0627\u0648\u0631 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06d2 \u0686\u06cc\u06a9 \u0645\u0648\u062c\u0648\u062f \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u0639\u0644\u0645 \u06a9\u06d2 \u06af\u0631\u0627\u0641 \u0642\u0648\u0627\u0639\u062f \u06a9\u06d2 \u0627\u0646\u062c\u0646 \u06cc\u0627 \u0627\u06cc\u0645 \u0627\u06cc\u0644 \u0645\u0627\u0688\u0644\u0632 \u06a9\u06cc \u062c\u06af\u06c1 \u0646\u06c1\u06cc\u06ba \u0644\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0644\u06cc\u06a9\u0646 \u06cc\u06c1 \u0627\u0633 \u062e\u0644\u0627 \u06a9\u0648 \u062e\u062a\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0633 \u062a\u06a9 \u0648\u06c1 \u0646\u06c1\u06cc\u06ba \u067e\u06c1\u0646\u0686 \u0633\u06a9\u062a\u06d2: \u062a\u0639\u0644\u0642\u0627\u062a\u06d4<\/p>\n<h2 id=\"heading-prerequisites\">\u0634\u0631\u0637\u06cc\u06ba<\/h2>\n<p>\u0627\u0633 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0622\u06af\u06d2 \u0628\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 \u0636\u0631\u0648\u0631\u062a \u06c1\u0648 \u06af\u06cc:<\/p>\n<ul>\n<li>\u0622\u067e \u06a9\u06d2 \u06a9\u0645\u067e\u06cc\u0648\u0679\u0631 \u067e\u0631 Python 3.10 \u06cc\u0627 \u0627\u0633 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0627\u0646\u0633\u0679\u0627\u0644 \u06c1\u06d2\u06d4<\/li>\n<li>\u0645\u0642\u0627\u0645\u06cc Neo4j \u0645\u062b\u0627\u0644 \u06a9\u0648 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 Docker \u0627\u0648\u0631 Docker Compose \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u06cc\u0627\u06d4<\/li>\n<li>\u0627\u0632\u06af\u0631 \u0627\u0648\u0631 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06d2 \u062a\u0635\u0648\u0631\u0627\u062a \u06a9\u0627 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0639\u0644\u0645\u06d4<\/li>\n<\/ul>\n<h2 id=\"heading-how-to-model-the-financial-graph-and-ingestion-schema\">\u0645\u0627\u0644\u06cc\u0627\u062a\u06cc \u06af\u0631\u0627\u0641 \u0627\u0648\u0631 \u062c\u0645\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0627\u0633\u06a9\u06cc\u0645\u0648\u06ba \u06a9\u0627 \u0645\u0627\u0688\u0644 \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/h2>\n<p>\u062f\u06be\u0648\u06a9\u06c1 \u062f\u06c1\u06cc \u06a9\u06d2 \u0633\u0648\u0627\u0644\u0627\u062a \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0622\u067e \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0645\u0631\u0628\u0648\u0637 \u0648\u0635\u0641 \u06a9\u06d2 \u06af\u0631\u0627\u0641 \u0645\u06cc\u06ba \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 \u062d\u0648\u0627\u0644\u06c1 \u0688\u06cc\u0679\u0627\u0633\u06cc\u0679 \u0686\u06be \u06c1\u0633\u062a\u06cc\u0648\u06ba \u06a9\u06cc \u0627\u0642\u0633\u0627\u0645 \u06a9\u0648 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0645\u0627\u0644\u06cc\u0627\u062a\u06cc \u0646\u0638\u0627\u0645\u0648\u06ba \u0645\u06cc\u06ba \u067e\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<table>\n<thead>\n<tr>\n<th>\u062d\u0642\u06cc\u0642\u062a<\/th>\n<th>\u0627\u06c1\u0645 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a<\/th>\n<th>\u06a9\u0631\u062f\u0627\u0631<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1<\/td>\n<td>\u0679\u06cc\u06a9\u0633 ID\u060c \u0646\u0627\u0645\u060c \u0645\u0644\u06a9\u060c \u0634\u06c1\u0631<\/td>\n<td>\u0627\u0646\u0648\u0627\u0626\u0633 \u062c\u0627\u0631\u06cc \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0634\u062e\u0635<\/td>\n<\/tr>\n<tr>\n<td>\u0631\u0633\u06cc\u062f<\/td>\n<td>\u0627\u0646\u0648\u0627\u0626\u0633_ID\u060c \u0631\u0642\u0645\u060c \u062a\u0627\u0631\u06cc\u062e\u060c \u0632\u0645\u0631\u06c1<\/td>\n<td>\u0648\u0635\u0648\u0644 \u06a9\u06cc \u06af\u0626\u06cc \u0631\u0642\u0645<\/td>\n<\/tr>\n<tr>\n<td>\u0627\u062f\u0627\u0626\u06cc\u06af\u06cc<\/td>\n<td>\u0627\u062f\u0627\u0626\u06cc\u06af\u06cc_ID\u060c \u0631\u0642\u0645\u060c \u062a\u0627\u0631\u06cc\u062e<\/td>\n<td>\u06a9\u06d2 \u0644\u0626\u06d2 \u0627\u062f\u0627 \u06a9\u06cc\u0627<\/td>\n<\/tr>\n<tr>\n<td>\u0628\u06cc\u0646\u06a9 \u0627\u06a9\u0627\u0624\u0646\u0679<\/td>\n<td>\u0627\u06a9\u0627\u0624\u0646\u0679_\u0622\u0626\u06cc \u0688\u06cc\u060c \u0631\u0648\u0679\u0646\u06af_\u0646\u0645\u0628\u0631\u060c \u0628\u06cc\u0646\u06a9 \u06a9\u0627 \u0646\u0627\u0645<\/td>\n<td>\u067e\u06cc\u0633\u06c1 \u06a9\u06c1\u0627\u06ba \u06af\u06cc\u0627<\/td>\n<\/tr>\n<tr>\n<td>\u0645\u0644\u0627\u0632\u0645<\/td>\n<td>\u0645\u0644\u0627\u0632\u0645 \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a\u060c \u0646\u0627\u0645\u060c \u0645\u062d\u06a9\u0645\u06c1<\/td>\n<td>\u062c\u0633 \u0646\u06d2 \u0645\u0646\u0638\u0648\u0631\u06cc \u062f\u06cc<\/td>\n<\/tr>\n<tr>\n<td>\u06af\u0631\u0648\u067e<\/td>\n<td>org_id\u060c \u0646\u0627\u0645\u060c \u0634\u0639\u0628\u06c1<\/td>\n<td>\u0633\u0627\u062e\u062a\u06cc \u062f\u0631\u062c\u06c1 \u0628\u0646\u062f\u06cc<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u0628\u0646\u06cc\u0627\u062f\u06cc \u062a\u0639\u0644\u0642 \u062f\u0648 \u062d\u0635\u0648\u06ba \u06a9\u06cc \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u0627 \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">(Employee)-[:APPROVED]->(Payment)-[:LINKED_TO]->(Invoice)-[:ISSUED_BY]->(Vendor)\n                                   |\n                                   v\n                            (Payment)-[:PAID_TO]->(BankAccount)\n<\/code><\/pre>\n<h3 id=\"heading-step-1-how-to-generate-the-dataset-with-known-injected-patterns\">\u0645\u0631\u062d\u0644\u06c1 1: \u0645\u0639\u0644\u0648\u0645 \u0627\u0646\u062c\u06cc\u06a9\u0634\u0646 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0688\u06cc\u0679\u0627 \u0633\u06cc\u0679 \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u0626\u06cc\u06ba<\/h3>\n<p>\u067e\u0631\u0627\u0626\u06cc\u0648\u06cc\u0633\u06cc \u0627\u0648\u0631 \u0631\u06cc\u06af\u0648\u0644\u06cc\u0679\u0631\u06cc \u067e\u0627\u0628\u0646\u062f\u06cc\u0648\u06ba \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u062d\u0642\u06cc\u0642\u06cc \u062f\u0646\u06cc\u0627 \u06a9\u06d2 \u0645\u0627\u0644\u06cc\u0627\u062a\u06cc \u0688\u06cc\u0679\u0627\u0633\u06cc\u0679\u0633 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u0645\u0634\u06a9\u0644 \u06c1\u06d2\u06d4 \u0645\u0635\u0646\u0648\u0639\u06cc \u0688\u06cc\u0679\u0627 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2\u060c \u0622\u067e \u0641\u0631\u0627\u0688 \u06a9\u06d2 \u0645\u0639\u0631\u0648\u0641 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0648 \u0627\u0646\u062c\u06cc\u06a9\u0634\u0646 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0645\u0646\u0638\u0645 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0686\u06cc\u06a9 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0622\u06cc\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06d2 \u0633\u0648\u0627\u0644\u0627\u062a \u0627\u0646 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0648 \u062a\u0644\u0627\u0634 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0688\u06cc\u0679\u0627\u0633\u06cc\u0679 \u062c\u0646\u0631\u06cc\u0679\u0631 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b 500 \u0627\u062f\u0627\u0631\u0648\u06ba \u06a9\u0648 \u067e\u0627\u0646\u0686 \u0645\u0639\u0644\u0648\u0645 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<ul>\n<li>12 \u0688\u067e\u0644\u06cc\u06a9\u06cc\u0679 \u0627\u0646\u0648\u0627\u0626\u0633 \u06a9\u06d2 \u062c\u0648\u0691\u06d2<\/li>\n<li>1 \u06af\u0648\u0644 \u0631\u0633\u06cc\u062f \u06a9\u06cc \u0627\u0646\u06af\u0648\u0679\u06cc (3 \u0633\u067e\u0644\u0627\u0626\u0631\u0632)<\/li>\n<li>1 \u0645\u0646\u06cc \u062e\u0686\u0631 \u06a9\u06cc \u0627\u0646\u06af\u0648\u0679\u06be\u06cc (25 \u062a\u0627\u062c\u0631 \u0641\u06cc \u0627\u06a9\u0627\u0624\u0646\u0679)<\/li>\n<li>1 \u0648\u06cc\u0646\u0688\u0631 \u06a9\u0648\u0644\u06cc\u0634\u0646 \u06a9\u0644\u0633\u0679\u0631 (4 \u0648\u06cc\u0646\u0688\u0631\u0632)<\/li>\n<li>3 \u06cc\u0627 \u0627\u0633 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc<\/li>\n<\/ul>\n<pre><code class=\"language-python\">from dataset.generate import FraudDatasetGenerator\n\ngen = FraudDatasetGenerator(\n    num_vendors=100,\n    num_employees=30,\n    num_organizations=5,\n    seed=42,\n)\noutput_dir = gen.save(\"dataset\/output\")\n<\/code><\/pre>\n<p>\u0645\u0642\u0631\u0631\u06c1 \u062a\u0631\u062a\u06cc\u0628\u0627\u062a <code>seed=42<\/code> \u0627\u067e\u0646\u06d2 \u0688\u06cc\u0679\u0627\u0633\u06cc\u0679 \u06a9\u0648 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u062f\u0648\u0628\u0627\u0631\u06c1 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4 \u062c\u0646\u0631\u06cc\u0679\u0631 \u0686\u0644\u0627\u0646\u06d2 \u0633\u06d2 \u06c1\u0631 \u0628\u0627\u0631 \u0628\u0627\u0644\u06a9\u0644 \u0648\u06c1\u06cc \u062f\u06be\u0648\u06a9\u06c1 \u062f\u06c1\u06cc \u06a9\u0627 \u0646\u0645\u0648\u0646\u06c1 \u067e\u06cc\u062f\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u062c\u0627\u0646\u0686 \u06a9\u06d2 \u0633\u0648\u0627\u0644\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0645\u0639\u06cc\u0627\u0631 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">Vendors: 100\nInvoices: 220 (200 base + 20 fraud)\nPayments: 331 (300 base + 31 fraud)\nBank Accounts: 51 (50 + 1 mule)\nEmployees: 30\nOrganizations: 5\nFraud Patterns: 5 types\n<\/code><\/pre>\n<p>\u062c\u0646\u0631\u06cc\u0679\u0631 \u0632\u0645\u06cc\u0646\u06cc \u0633\u0686\u0627\u0626\u06cc \u06a9\u0627 \u0627\u0638\u06c1\u0627\u0631 \u0628\u06be\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>ground_truth.json<\/code> \u06cc\u06c1 \u062a\u0645\u0627\u0645 \u0627\u0646\u062c\u06a9\u0634\u0646 \u0634\u062f\u06c1 \u0628\u06d2 \u0636\u0627\u0628\u0637\u06af\u06cc\u0648\u06ba \u06a9\u0648 \u0644\u0627\u06af \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u062a\u0635\u062f\u06cc\u0642\u06cc \u0627\u0648\u0631\u06cc\u06a9\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-step-2-how-to-connect-to-neo4j-and-create-constraints\">\u0645\u0631\u062d\u0644\u06c1 2: Neo4j \u0633\u06d2 \u06a9\u06cc\u0633\u06d2 \u062c\u0691\u06cc\u06ba \u0627\u0648\u0631 \u0631\u06a9\u0627\u0648\u0679\u06cc\u06ba \u0628\u0646\u0627\u0626\u06cc\u06ba<\/h3>\n<p>\u0622\u067e APOC \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631 \u06a9\u06d2 \u0645\u0642\u0627\u0645\u06cc Neo4j 5.20 \u06a9\u0646\u0679\u06cc\u0646\u0631 \u06a9\u0648 \u06af\u06be\u0645\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 Docker Compose \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">docker compose up -d\n<\/code><\/pre>\n<p>\u0627\u06af\u0644\u0627\u060c \u06c1\u0645 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u06a9\u0648 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0646\u0641\u0631\u0627\u062f\u06cc\u062a \u06a9\u06cc \u067e\u0627\u0628\u0646\u062f\u06cc\u0627\u06ba \u0642\u0627\u0626\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-python\">from graph.connection import FraudGraph\n\nwith FraudGraph() as graph:\n    graph.create_constraints()\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0631\u06a9\u0627\u0648\u0679\u06cc\u06ba \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06cc \u06a9\u0627\u0631\u06a9\u0631\u062f\u06af\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06c1\u0645 \u06c1\u06cc\u06ba\u06d4 Neo4j \u0645\u06cc\u06ba\u060c \u0645\u0646\u0641\u0631\u062f \u0648\u0635\u0641 \u06a9\u06cc \u0631\u06a9\u0627\u0648\u0679\u06cc\u06ba \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0628\u0646\u06cc\u0627\u062f\u06cc B-tree \u0627\u0646\u0688\u06cc\u06a9\u0633 \u0628\u0646\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u06a9\u06d2 \u0628\u063a\u06cc\u0631\u060c \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc MERGE \u0622\u067e\u0631\u06cc\u0634\u0646 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0645\u06cc\u06ba \u062a\u0645\u0627\u0645 \u0646\u0648\u0688\u0633 \u067e\u0631 \u0645\u06a9\u0645\u0644\u060c \u063a\u06cc\u0631 \u0627\u0634\u0627\u0631\u06cc\u06c1 \u0634\u062f\u06c1 \u0627\u0633\u06a9\u06cc\u0646 \u067e\u0631 \u0645\u062c\u0628\u0648\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-python\">class FraudGraph:\n    def __init__(self, uri=None, user=None, password=None):\n        self.uri = uri or os.environ.get('NEO4J_URI', 'bolt:\/\/localhost:7687')\n        self.user = user or os.environ.get('NEO4J_USER', 'neo4j')\n        self.password = password or os.environ.get('NEO4J_PASSWORD', 'password')\n        self.driver = None\n\n    def connect(self):\n        self.driver = GraphDatabase.driver(\n            self.uri, auth=(self.user, self.password),\n            max_connection_pool_size=50,\n            connection_acquisition_timeout=30,\n        )\n        with self.driver.session() as session:\n            session.run('RETURN 1')\n        return self\n\n    def __enter__(self):\n        self.connect()\n        return self\n\n    def __exit__(self, exc_type, exc_val, exc_tb):\n        self.close()\n\n    def create_constraints(self):\n        with self.driver.session() as session:\n            session.run(\"CREATE CONSTRAINT vendor_tax_id IF NOT EXISTS FOR (v:Vendor) REQUIRE v.tax_id IS UNIQUE\")\n            session.run(\"CREATE CONSTRAINT invoice_id IF NOT EXISTS FOR (i:Invoice) REQUIRE i.invoice_id IS UNIQUE\")\n            session.run(\"CREATE CONSTRAINT account_id IF NOT EXISTS FOR (a:BankAccount) REQUIRE a.account_id IS UNIQUE\")\n            session.run(\"CREATE CONSTRAINT employee_id IF NOT EXISTS FOR (e:Employee) REQUIRE e.employee_id IS UNIQUE\")\n<\/code><\/pre>\n<h3 id=\"heading-step-3-how-to-load-entities-into-the-graph\">\u0645\u0631\u062d\u0644\u06c1 3: \u06af\u0631\u0627\u0641 \u0645\u06cc\u06ba \u0627\u0634\u06cc\u0627\u0621 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0644\u0648\u0688 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u06a9\u06c1 <code>FraudGraphLoader<\/code> \u0633\u0627\u0626\u0641\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>UNWIND<\/code> \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0627\u0626\u0632\u0688 \u0679\u0631\u0627\u0646\u0632\u06cc\u06a9\u0634\u0646 \u0645\u06cc\u06ba \u0628\u0691\u06cc \u062a\u0639\u062f\u0627\u062f \u0645\u06cc\u06ba \u0627\u062f\u0627\u0631\u0648\u06ba \u06a9\u0648 \u062f\u0627\u062e\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2:<\/p>\n<pre><code class=\"language-python\">from graph.loader import FraudGraphLoader\n\nwith FraudGraph() as graph:\n    graph.create_constraints()\n    loader = FraudGraphLoader(graph)\n    loader.load_all(data)\n<\/code><\/pre>\n<p>\u0644\u0648\u0688 \u0622\u0631\u0688\u0631 \u063a\u06cc\u0631 \u0645\u0644\u06a9\u06cc \u06a9\u0644\u06cc\u062f\u06cc \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0627 \u0627\u062d\u062a\u0631\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u0646\u0638\u06cc\u0645\u06cc\u06ba \u067e\u06c1\u0644\u06d2 \u0644\u0648\u0688 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u067e\u06be\u0631 \u0633\u067e\u0644\u0627\u0626\u0631\u0632\u060c \u0628\u06cc\u0646\u06a9 \u0627\u06a9\u0627\u0624\u0646\u0679\u0633 \u0627\u0648\u0631 \u0645\u0644\u0627\u0632\u0645\u06cc\u0646\u060c \u0627\u0648\u0631 \u0631\u0633\u06cc\u062f\u06cc\u06ba \u0627\u0648\u0631 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc\u0627\u06ba \u0622\u062e\u0631\u06cc\u06d4<\/p>\n<p>\u06c1\u0631 \u0628\u0648\u062c\u06be \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1 \u0627\u06cc\u06a9 \u06c1\u06cc \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-cypher\">UNWIND $data AS v\nMERGE (vendor:Vendor {tax_id: v.tax_id})\nSET vendor.name = v.name,\n    vendor.country = v.country,\n    vendor.city = v.city\nWITH vendor, v\nMATCH (org:Organization {org_id: v.organization})\nMERGE (vendor)-[:BELONGS_TO]->(org)\n<\/code><\/pre>\n<p><code>MERGE<\/code>    \u0646\u0648\u0688 \u0628\u0646\u0627\u0626\u06cc\u06ba \u06cc\u0627 \u0645\u06cc\u0686 \u06a9\u0631\u06cc\u06ba (O(1) \u062a\u0644\u0627\u0634 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2)\u06d4 <code>SET<\/code> \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0645\u0646\u0633\u0644\u06a9 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 <code>MERGE<\/code> \u062a\u0639\u0644\u0642\u0627\u062a \u0645\u06cc\u06ba \u0646\u0648\u0688\u0633 \u06a9\u0648 \u062c\u0648\u0691\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-step-4-how-to-materialize-derived-relationships-for-fast-queries\">\u0645\u0631\u062d\u0644\u06c1 4: \u0641\u0627\u0633\u0679 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u062e\u0630 \u06a9\u0631\u062f\u06c1 \u062a\u0639\u0644\u0642\u0627\u062a \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0645\u0627\u062f\u06cc \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/h3>\n<p>\u06af\u0631\u0627\u0641 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0627\u06c1\u0645 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631\u0644 \u0641\u06cc\u0635\u0644\u06c1 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06d2 \u0648\u0642\u062a \u062a\u0639\u0644\u0642\u0627\u062a \u06a9\u06cc \u06af\u0646\u062a\u06cc \u06a9\u06cc \u062c\u0627\u0626\u06d2 \u06cc\u0627 \u062c\u0645\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0627\u0646 \u06a9\u0648 \u0639\u0645\u0644\u06cc \u0634\u06a9\u0644 \u062f\u06cc \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u062a\u0639\u06cc\u0646 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u062f\u0648 \u062f\u06a9\u0627\u0646\u062f\u0627\u0631 \u0627\u06cc\u06a9 \u0628\u06cc\u0646\u06a9 \u0627\u06a9\u0627\u0624\u0646\u0679 \u06a9\u0627 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0622\u067e \u06a9\u0648 4-\u06c1\u0627\u067e \u0631\u0627\u0633\u062a\u06d2 \u0633\u06d2 \u06af\u0632\u0631\u0646\u0627 \u06c1\u0648\u06af\u0627\u06d4<\/p>\n<pre><code class=\"language-cypher\">(Vendor)<-[:ISSUED_BY]-(Invoice)<-[:LINKED_TO]-(Payment)-[:PAID_TO]->(BankAccount)<-[:PAID_TO]-(Payment)-[:LINKED_TO]->(Invoice)-[:ISSUED_BY]->(Vendor)\n<\/code><\/pre>\n<p>\u06c1\u0631 \u0631\u06cc\u0626\u0644 \u0679\u0627\u0626\u0645 \u0641\u0631\u0627\u0688 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0627\u0633 4-\u06c1\u0627\u067e \u067e\u0627\u062a\u06be \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0646\u06d2 \u0633\u06d2 \u0627\u06c1\u0645 \u06a9\u0645\u067e\u06cc\u0648\u0679\u06cc\u0634\u0646\u0644 \u0627\u0648\u0648\u0631 \u06c1\u06cc\u0688 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c \u0622\u067e \u0627\u062e\u0630 \u06a9\u0631\u062f\u06c1 \u06a9\u0646\u0627\u0631\u0648\u06ba \u06a9\u0648 \u0628\u06c1\u062a\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0688\u06cc\u0679\u0627 \u0633\u0633\u0679\u0645 \u0645\u06cc\u06ba \u062f\u0627\u062e\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0628\u06cc\u0686 \u067e\u0631\u0648\u0633\u06cc\u0633\u0646\u06af \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0644\u06a9\u06be\u0646\u06d2 \u0645\u06cc\u06ba \u06a9\u0686\u06be \u062a\u0627\u062e\u06cc\u0631 \u06a9\u0627 \u0627\u0636\u0627\u0641\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0631\u0646 \u0679\u0627\u0626\u0645 \u062a\u0644\u0627\u0634 \u06a9\u06d2 \u0633\u0648\u0627\u0644\u0627\u062a \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0645\u0644\u0679\u06cc \u06c1\u0627\u067e \u0679\u0631\u0627\u0648\u0631\u0633\u0644\u0632 \u06a9\u0648 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0633\u0646\u06af\u0644 \u06c1\u0627\u067e \u062a\u0644\u0627\u0634 \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u067e\u06c1\u0644\u0627 \u0627\u062e\u0630 \u06a9\u0631\u062f\u06c1 \u0631\u0634\u062a\u06c1 \u06cc\u06c1 \u06c1\u06d2: <strong>SHARED_ACCOUNT_WITH\u061b<\/strong> \u0622\u067e \u06a9\u06d2 \u0679\u0627\u0631\u06af\u0679 \u0628\u06cc\u0646\u06a9 \u0627\u06a9\u0627\u0624\u0646\u0679 \u06a9\u0648 \u0634\u06cc\u0626\u0631 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0633\u067e\u0644\u0627\u0626\u0631\u0632 \u0633\u06d2 \u0631\u0627\u0628\u0637\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-cypher\">MATCH (v1:Vendor)<-[:ISSUED_BY]-(i1:Invoice)<-[:LINKED_TO]-(p1:Payment)-[:PAID_TO]->(a:BankAccount)\nMATCH (v2:Vendor)<-[:ISSUED_BY]-(i2:Invoice)<-[:LINKED_TO]-(p2:Payment)-[:PAID_TO]->(a)\nWHERE id(v1) < id(v2)\nMERGE (v1)-[:SHARED_ACCOUNT_WITH]->(v2)\n<\/code><\/pre>\n<p>\u0641\u0644\u0679\u0631 <code>WHERE id(v1) < id(v2)<\/code> \u062a\u0639\u0644\u0642\u0627\u062a \u06a9\u0648 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0646\u0648\u0688 IDs \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0648\u0627\u062d\u062f \u0633\u0645\u062a \u06a9\u0646\u0627\u0631\u0648\u06ba \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0630\u062e\u06cc\u0631\u06c1 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0646\u0642\u0644\u06cc \u0631\u06cc\u0648\u0631\u0633 \u06a9\u0646\u0627\u0631\u0648\u06ba \u06a9\u0648 \u0631\u0648\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0645\u0634\u062a\u0631\u06a9\u06c1 \u062c\u063a\u0631\u0627\u0641\u06cc\u0627\u0626\u06cc \u0645\u0642\u0627\u0645\u0627\u062a \u0627\u0648\u0631 \u0628\u06cc\u0646\u06a9 \u0631\u0648\u0679\u0646\u06af \u06a9\u06d2 \u0633\u0627\u0628\u0642\u0648\u06ba \u06a9\u0648 \u0628\u06c1\u062a\u0631 \u0628\u0646\u0627 \u06a9\u0631 \u0688\u06be\u06cc\u0644\u06d2 \u0645\u0644\u06cc \u0628\u06be\u06af\u062a \u0648\u0627\u0644\u06d2 \u0646\u06cc\u0679 \u0648\u0631\u06a9\u0633 \u06a9\u0627 \u0628\u06be\u06cc \u067e\u062a\u06c1 \u0644\u06af\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-cypher\">-- Same city and country\nMATCH (v1:Vendor), (v2:Vendor)\nWHERE id(v1) < id(v2)\n  AND v1.city = v2.city\n  AND v1.country = v2.country\nMERGE (v1)-[:SHARED_LOCATION]->(v2)\n\n-- Bank accounts with same routing prefix (first 3 digits)\nMATCH (v1:Vendor)<-[:ISSUED_BY]-(i1:Invoice)<-[:LINKED_TO]-(p1:Payment)-[:PAID_TO]->(a1:BankAccount)\nMATCH (v2:Vendor)<-[:ISSUED_BY]-(i2:Invoice)<-[:LINKED_TO]-(p2:Payment)-[:PAID_TO]->(a2:BankAccount)\nWHERE id(v1) < id(v2)\n  AND a1.account_id <> a2.account_id\n  AND substring(a1.routing_number, 0, 3) = substring(a2.routing_number, 0, 3)\nMERGE (v1)-[:SHARED_ROUTING_PREFIX]->(v2)\n<\/code><\/pre>\n<p>\u0627\u06cc\u06a9 \u0628\u0627\u0631 \u062c\u0645\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0645\u06a9\u0645\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0622\u067e \u06af\u0631\u0627\u0641 \u0679\u0648\u067e\u0648\u0644\u0648\u062c\u06cc \u06a9\u0627 \u0645\u0639\u0627\u0626\u0646\u06c1 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u06cc\u06c1 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u06d2 \u06a9\u06c1 \u0628\u0646\u06cc\u0627\u062f \u0627\u0648\u0631 \u0627\u062e\u0630 \u06a9\u0631\u062f\u06c1 \u062a\u0639\u0644\u0642\u0627\u062a \u062f\u0648\u0646\u0648\u06ba \u062f\u0631\u0633\u062a \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0644\u0648\u0688 \u06a9\u06cc\u06d2 \u06af\u0626\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-python\">info = graph.get_info()\nfor label, count in sorted(info['nodes'].items(), key=lambda x: -x[1]):\n    print(f\"  {label}: {count} nodes\")\nfor rel, count in sorted(info['relationships'].items(), key=lambda x: -x[1]):\n    print(f\"  {rel}: {count} relationships\")\n<\/code><\/pre>\n<p>\u0622\u0624\u0679 \u067e\u0679 \u062e\u0627\u0645 \u0627\u062f\u0627\u0631\u0648\u06ba \u0627\u0648\u0631 \u0646\u062a\u06cc\u062c\u06d2 \u0645\u06cc\u06ba \u0627\u062e\u0630 \u06a9\u0631\u062f\u06c1 \u062a\u0639\u0644\u0642\u0627\u062a \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">  Invoice: 220 nodes\n  Payment: 331 nodes\n  Vendor: 100 nodes\n  BankAccount: 51 nodes\n  Employee: 30 nodes\n\n  SHARED_ACCOUNT_WITH: 412 relationships\n  SHARED_LOCATION: 387 relationships\n  LINKED_TO: 331 relationships\n  PAID_TO: 331 relationships\n  ISSUED_BY: 220 relationships\n  APPROVED: 331 relationships\n  SHARED_ROUTING_PREFIX: 52 relationships\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0627\u062e\u0630 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u062a\u0639\u0644\u0642\u0627\u062a \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u062a\u06cc\u0632 \u0631\u0641\u062a\u0627\u0631 \u0633\u06cc\u0646\u0633\u0646\u06af \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u0646\u0627\u0626\u06d2 \u06af\u0626\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0631\u0634\u062a\u06c1 \u062f\u0627\u0631 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0645\u06cc\u06ba \u0645\u0634\u062a\u0631\u06a9\u06c1 \u0627\u06a9\u0627\u0624\u0646\u0679\u0633 \u06a9\u06cc \u062a\u0644\u0627\u0634 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062a\u0639\u062f\u062f \u0679\u06cc\u0628\u0644\u0632 \u0645\u06cc\u06ba \u062e\u0648\u062f \u0634\u0645\u0648\u0644\u06cc\u062a \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u06af\u0631\u0627\u0641\u0633 \u0645\u06cc\u06ba\u060c \u06cc\u06c1 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u06af\u0646\u062a\u06cc \u0648\u0627\u0644\u06d2 \u06a9\u0646\u0627\u0631\u06d2 \u0628\u0646 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u067e\u06cc\u0686\u06cc\u062f\u06c1 \u0679\u0631\u0627\u0648\u0631\u0633\u0644\u0632 \u06a9\u0648 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u062a\u0644\u0627\u0634 \u0645\u06cc\u06ba \u0628\u062f\u0644 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-how-to-detect-five-fraud-patterns-with-cypher-queries\">\u067e\u0627\u0633 \u0648\u0631\u0688 \u06a9\u06d2 \u0633\u0648\u0627\u0644\u0627\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be 5 \u0641\u0631\u0627\u0688 \u067e\u06cc\u0679\u0631\u0646\u0632 \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1<\/h2>\n<p>\u0627\u0633\u06a9\u06cc\u0645\u0627 \u0627\u0648\u0631 \u0627\u062e\u0630 \u06a9\u0631\u062f\u06c1 \u062a\u0639\u0644\u0642\u0627\u062a \u0642\u0627\u0626\u0645 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u06c1\u0645 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0627\u0626\u0632\u0688 \u0633\u0627\u0626\u0641\u0631 \u0627\u0633\u062a\u0641\u0633\u0627\u0631\u0627\u062a \u0628\u0646\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u067e\u0627\u0646\u0686 \u0645\u0631\u0648\u062c\u06c1 \u067e\u0631\u0648\u06a9\u06cc\u0648\u0631\u0645\u0646\u0679 \u0641\u0631\u0627\u0688 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-pattern-1-how-to-find-duplicate-invoices\">\u067e\u06cc\u0679\u0631\u0646 1: \u0688\u067e\u0644\u06cc\u06a9\u06cc\u0679 \u0631\u0633\u06cc\u062f\u06cc\u06ba \u06a9\u06cc\u0633\u06d2 \u062a\u0644\u0627\u0634 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u062f\u06be\u0648\u06a9\u06c1 \u062f\u06c1\u06cc \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0627\u06a9\u062b\u0631 \u062f\u0646 \u06cc\u0627 \u06c1\u0641\u062a\u0648\u06ba \u06a9\u06d2 \u0639\u0644\u0627\u0648\u06c1 \u0688\u067e\u0644\u06cc\u06a9\u06cc\u0679 \u0631\u0633\u06cc\u062f\u06cc\u06ba \u062c\u0645\u0639 \u06a9\u0631\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u06cc\u06c1 \u0641\u0631\u0636 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u06a9\u06c1 \u0622\u067e \u06a9\u06d2 \u0627\u06a9\u0627\u0624\u0646\u0679\u0633 \u06a9\u06cc \u0642\u0627\u0628\u0644 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u0679\u06cc\u0645 \u0627\u0646 \u06a9\u0648 \u0645\u0639\u0645\u0648\u0644 \u06a9\u06d2\u060c \u0628\u0627\u0631 \u0628\u0627\u0631 \u0686\u0644\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0627\u062e\u0631\u0627\u062c\u0627\u062a \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u062f\u06cc\u06a9\u06be\u06d2 \u06af\u06cc\u06d4<\/p>\n<p>\u0642\u0648\u0627\u0639\u062f \u067e\u0631 \u0645\u0628\u0646\u06cc \u0627\u0646\u062c\u0646 \u0627\u06a9\u062b\u0631 \u0639\u06cc\u0646 \u0645\u0637\u0627\u0628\u0642 \u0645\u0645\u0627\u062b\u0644\u062a \u067e\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u062a\u06be\u0648\u0691\u06cc \u0633\u06cc \u0628\u062f\u0644\u06cc \u06c1\u0648\u0626\u06cc \u062a\u0627\u0631\u06cc\u062e\u0648\u06ba \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u0631\u0633\u06cc\u062f\u06cc\u06ba \u0686\u06be\u0648\u0679 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u06af\u0631\u0627\u0641 \u0622\u067e \u06a9\u0648 \u0631\u0648\u0644\u0646\u06af \u0688\u06cc\u0679 \u0648\u0646\u0688\u0648 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0627\u06cc\u06a9 \u06c1\u06cc \u0633\u067e\u0644\u0627\u0626\u0631 \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 \u062c\u0627\u0631\u06cc \u06a9\u0631\u062f\u06c1 \u062a\u0645\u0627\u0645 \u0631\u0633\u06cc\u062f\u0648\u06ba \u0633\u06d2 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-cypher\">\/\/ graph\/queries.py \u2014 detect_duplicates()\nMATCH (v:Vendor)<-[:ISSUED_BY]-(i1:Invoice),\n      (v)<-[:ISSUED_BY]-(i2:Invoice)\nWHERE i1.invoice_id < i2.invoice_id\n  AND i1.amount = i2.amount\n  AND i1.date < i2.date\n  AND duration.between(date(i1.date), date(i2.date)).days <= $max_days\nRETURN i1.invoice_id AS invoice_a,\n       i2.invoice_id AS invoice_b,\n       v.name AS vendor,\n       i1.amount AS amount,\n       i1.date AS date_a,\n       i2.date AS date_b,\n       duration.between(date(i1.date), date(i2.date)).days AS days_apart\nORDER BY days_apart\n<\/code><\/pre>\n<p>\u06cc\u06c1\u0627\u06ba \u0627\u06c1\u0645 \u0646\u06a9\u0627\u062a:<\/p>\n<ul>\n<li>\u062d\u0627\u0644\u062a <code>i1.invoice_id < i2.invoice_id<\/code> \u06cc\u06c1 \u0627\u06cc\u06a9 \u06c1\u06cc \u062c\u0648\u0691\u06cc \u06a9\u0648 \u062f\u0648 \u0628\u0627\u0631 \u0648\u0627\u067e\u0633 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0631\u0648\u06a9\u062a\u0627 \u06c1\u06d2: <code>(A, B)<\/code> \u0627\u0648\u0631 <code>(B, A)<\/code>.<\/li>\n<li><code>i1.amount = i2.amount<\/code>    \u06cc\u06c1 \u0627\u06cc\u06a9 \u062f\u06be\u0648\u06a9\u06c1 \u062f\u06c1\u06cc \u06a9\u0627 \u0627\u0634\u0627\u0631\u06c1 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0631\u0642\u0645 \u0627\u06cc\u06a9 \u062c\u06cc\u0633\u06cc \u06c1\u06d2 \u062a\u0648\u060c \u0627\u06cc\u06a9 \u06c1\u06cc \u0631\u0633\u06cc\u062f \u062f\u0648 \u0628\u0627\u0631 \u062c\u0645\u0639 \u06a9\u0631\u0627\u0626\u06cc \u062c\u0627\u0626\u06d2 \u06af\u06cc\u06d4<\/li>\n<li>\u0627\u0633\u06cc \u0633\u067e\u0644\u0627\u0626\u0631 \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 \u062c\u0627\u0631\u06cc \u06a9\u0631\u062f\u06c1 \u0627\u0646\u0648\u0627\u0626\u0633\u0632 \u06a9\u06cc \u062a\u0644\u0627\u0634 \u06a9\u0648 \u0627\u0633\u06a9\u0648\u067e \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2\u060c \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 \u0648\u0642\u062a\u06cc duration.between() \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u062a\u0627\u0631\u06cc\u062e \u06a9\u06d2 \u0648\u0642\u0641\u06d2 \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0633\u067e\u0644\u0627\u0626\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0646\u0688\u06cc\u06a9\u0633 \u062a\u0644\u0627\u0634 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/li>\n<\/ul>\n<p>\u0622\u067e \u0627\u0633 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u0648 \u0627\u0632\u06af\u0631 \u06a9\u06d2 \u0631\u06cc\u067e\u0631 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0686\u0644\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-python\">from graph.queries import FraudQueries\n\nqueries = FraudQueries(graph)\nduplicates = queries.detect_duplicates(max_days_apart=14)\nprint(f\"Found {len(duplicates)} duplicate invoice pairs\")\nfor dup in duplicates[:5]:\n    print(f\"  {dup['invoice_a']} &#x2194; {dup['invoice_b']} | \"\n          f\"{dup['vendor']} | ${dup['amount']} | \"\n          f\"{dup['days_apart']} days apart\")\n<\/code><\/pre>\n<p>\u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u0645\u0635\u0646\u0648\u0639\u06cc \u0688\u06cc\u0679\u0627\u0633\u06cc\u0679 \u0645\u06cc\u06ba \u0688\u0627\u0644\u06d2 \u06af\u0626\u06d2 \u062a\u0645\u0627\u0645 12 \u0688\u067e\u0644\u06cc\u06a9\u06cc\u0679 \u062c\u0648\u0691\u0648\u06ba \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u062a\u0627 \u06c1\u06d2\u060c 100% \u06cc\u0627\u062f \u06a9\u0648 \u062d\u0627\u0635\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-pattern-2-how-to-uncover-circular-invoicing-rings\">\u067e\u06cc\u0679\u0631\u0646 2: \u0633\u0631\u06a9\u0644\u0631 \u0627\u0646\u0648\u0627\u0626\u0633 \u06a9\u06cc \u0627\u0646\u06af\u0648\u0679\u06be\u06cc \u06a9\u06cc\u0633\u06d2 \u062a\u0644\u0627\u0634 \u06a9\u06cc \u062c\u0627\u0626\u06d2\u06d4<\/h3>\n<p>\u0627\u06cc\u06a9 \u0633\u0631\u06a9\u0644\u0631 \u0627\u0646\u0648\u0627\u0626\u0633\u0646\u06af \u0633\u0633\u0679\u0645 \u0645\u06cc\u06ba\u060c \u062a\u06cc\u0646 \u06cc\u0627 \u0632\u06cc\u0627\u062f\u06c1 \u0633\u067e\u0644\u0627\u0626\u0631\u0632 \u0627\u06cc\u06a9 \u062f\u0648\u0633\u0631\u06d2 \u06a9\u0648 \u0628\u0646\u062f \u0644\u0648\u067e \u0645\u06cc\u06ba \u0628\u0644 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06c1\u0631 \u0644\u06cc\u0646 \u062f\u06cc\u0646 \u0627\u067e\u0646\u06d2 \u0622\u067e \u0645\u06cc\u06ba \u062c\u0627\u0626\u0632 \u0645\u0639\u0644\u0648\u0645 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u06a9\u0648\u0626\u06cc \u062d\u0642\u06cc\u0642\u06cc \u0633\u0627\u0645\u0627\u0646 \u06cc\u0627 \u062e\u062f\u0645\u0627\u062a \u0641\u0631\u0627\u06c1\u0645 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0622\u067e \u0646\u06d2 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u062d\u0633\u0627\u0628 \u0644\u06af\u0627 \u0644\u06cc\u0627 \u062a\u06be\u0627\u06d4 <code>SHARED_ACCOUNT_WITH<\/code>\u0633\u0627\u0626\u06cc\u06a9\u0644 \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u0648 \u0648\u06cc\u0646\u0688\u0631 \u0633\u0628 \u06af\u0631\u0627\u0641 \u0645\u06cc\u06ba \u062a\u06cc\u0646 \u0646\u0648\u0688 \u0645\u062b\u0644\u062b \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0622\u0633\u0627\u0646 \u0628\u0646\u0627\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-cypher\">\/\/ graph\/queries.py \u2014 detect_circular_schemes()\nMATCH path = (v1:Vendor)-[:SHARED_ACCOUNT_WITH]-(v2:Vendor)\n              -[:SHARED_ACCOUNT_WITH]-(v3:Vendor)\n              -[:SHARED_ACCOUNT_WITH]-(v1)\nWHERE id(v1) < id(v2) AND id(v2) < id(v3)\nRETURN path,\n       [n IN nodes(path) | {name: n.name, tax_id: n.tax_id}] AS vendors,\n       length(path) AS hops\n<\/code><\/pre>\n<p>\u06cc\u06c1\u0627\u06ba \u0627\u06c1\u0645 \u0646\u06a9\u0627\u062a:<\/p>\n<ul>\n<li>\u0641\u0627\u0631\u0645\u0627\u0633\u06cc\u0648\u0679\u06cc\u06a9\u0644 <code>id(v1) < id(v2)<\/code> \u0627\u0648\u0631 <code>id(v2) < id(v3)<\/code> \u0633\u0631\u06a9\u0644\u0631 \u062a\u0628\u062f\u06cc\u0644\u06cc\u0648\u06ba \u06a9\u0648 \u062e\u062a\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u06d2 \u0628\u063a\u06cc\u0631\u060c \u0627\u06cc\u06a9 \u0648\u0627\u062d\u062f 3 \u0646\u0648\u0688 \u06a9\u06cc \u0627\u0646\u06af\u0648\u0679\u06cc. <code>(A, B, C)<\/code> \u06cc\u06c1 \u062a\u06cc\u0646 \u0627\u0644\u06af \u0627\u0644\u06af \u0628\u0627\u0631 \u0644\u0648\u0679\u062a\u0627 \u06c1\u06d2\u06d4<\/li>\n<li>\u0627\u06af\u0631 \u0622\u067e \u0627\u0633 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u0648 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u062e\u0627\u0645 4-\u06c1\u0627\u067e \u0679\u0631\u0627\u0646\u0632\u06cc\u06a9\u0634\u0646 \u067e\u0627\u062a\u06be \u06a9\u06d2 \u062e\u0644\u0627\u0641 \u0628\u063a\u06cc\u0631 \u0645\u0627\u062f\u06cc \u06a9\u0646\u0627\u0631\u0648\u06ba \u06a9\u06d2 \u0686\u0644\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u06a9\u0648 3 \u0633\u0627\u0626\u06cc\u06a9\u0644 \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 12 \u06c1\u0648\u067e\u0633 \u06a9\u0648 \u0639\u0628\u0648\u0631 \u06a9\u0631\u0646\u0627 \u067e\u0691\u06d2 \u06af\u0627\u060c \u062c\u0633 \u06a9\u06d2 \u0646\u062a\u06cc\u062c\u06d2 \u0645\u06cc\u06ba \u0628\u0691\u06d2 \u0688\u06cc\u0679\u0627 \u0633\u06cc\u0679\u0633 \u067e\u0631 CPU \u06a9\u0627 \u0632\u06cc\u0627\u062f\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u06af\u0627\u06d4<\/li>\n<\/ul>\n<pre><code class=\"language-python\">circles = queries.detect_circular_schemes(min_cycle_length=3)\nprint(f\"Found {len(circles)} circular invoice rings\")\nfor ring in circles:\n    vendor_names = [v['name'] for v in ring['vendors']]\n    print(f\"  Ring ({ring['hops']} hops): {' &#x2194; '.join(vendor_names)}\")\n<\/code><\/pre>\n<p>\u0627\u0633\u062a\u0641\u0633\u0627\u0631 100% \u06cc\u0627\u062f \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0633\u0631\u06a9\u0644\u0631 \u0627\u0646\u0648\u0627\u0626\u0633 \u0631\u0650\u0646\u06af\u0632 \u06a9\u0648 \u062d\u0627\u0635\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-pattern-3-how-to-detect-money-mule-networks\">\u067e\u06cc\u0679\u0631\u0646 3: \u0645\u0646\u06cc \u0645\u0648\u0644 \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1<\/h3>\n<p>\u067e\u06cc\u0633\u06d2 \u06a9\u06d2 \u062e\u0686\u0631 \u06a9\u06d2 \u0633\u06cc\u0679 \u0627\u067e \u0645\u06cc\u06ba\u060c \u0645\u062a\u0639\u062f\u062f \u0634\u06cc\u0644 \u0627\u062f\u0627\u0631\u06d2 \u0641\u0646\u0688\u0632 \u06a9\u0648 \u0627\u06cc\u06a9 \u06c1\u06cc \u0627\u06a9\u0627\u0624\u0646\u0679 \u0645\u06cc\u06ba \u0628\u06be\u06cc\u062c\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0627\u06cc\u06a9 \u0633\u0646\u0688\u06cc\u06a9\u06cc\u0679 \u06a9\u06d2 \u0632\u06cc\u0631 \u06a9\u0646\u0679\u0631\u0648\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631\u0686\u06c1 \u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u062e\u0631\u0686 \u06a9\u06cc \u0631\u0642\u0645 \u0686\u06be\u0648\u0679\u06cc \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u06c1\u062f\u0641 \u0648\u0627\u0644\u06d2 \u0627\u06a9\u0627\u0624\u0646\u0679 \u06a9\u0627 \u0641\u06cc\u0646 \u0627\u0646 \u0644\u06cc\u0648\u0644 \u063a\u06cc\u0631 \u0645\u0639\u0645\u0648\u0644\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0632\u06cc\u0627\u062f\u06c1 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u067e \u0627\u067e\u0646\u06d2 \u0679\u0627\u0631\u06af\u0679 \u0628\u06cc\u0646\u06a9 \u0627\u06a9\u0627\u0624\u0646\u0679\u0633 \u067e\u0631 \u0688\u06af\u0631\u06cc \u06a9\u0627 \u062a\u062c\u0632\u06cc\u06c1 \u06a9\u0631\u06a9\u06d2 \u0627\u0633 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-cypher\">\/\/ graph\/queries.py \u2014 detect_money_mule_rings()\nMATCH (a:BankAccount)<-[p_paid:PAID_TO]-(p:Payment)-[:LINKED_TO]->(i:Invoice)\n                  -[:ISSUED_BY]->(v:Vendor)\nWITH a, collect(DISTINCT v) AS vendors,\n     sum(p.amount) AS total_received,\n     count(DISTINCT v) AS unique_vendors,\n     count(p) AS payment_count\nWHERE unique_vendors >= $min_vendors\nRETURN a.account_id,\n       a.routing_number,\n       a.bank_name,\n       unique_vendors AS vendor_count,\n       payment_count,\n       total_received AS total_amount,\n       [vendor IN vendors | vendor.name] AS vendor_names\nORDER BY unique_vendors DESC\n<\/code><\/pre>\n<p>\u0622\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0646\u06a9\u0634\u0646\u0632 \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u067e\u0631 \u0627\u067e\u0646\u06d2 \u0627\u06a9\u0627\u0624\u0646\u0679 \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0622\u067e \u062f\u0631\u062c \u0630\u06cc\u0644 \u0631\u0633\u06a9 \u06af\u0627\u0626\u06cc\u0688 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<table>\n<thead>\n<tr>\n<th>\u0633\u067e\u0644\u0627\u0626\u0631\u0632 \u06a9\u06cc \u062a\u0639\u062f\u0627\u062f<\/th>\n<th>\u062e\u0637\u0631\u06d2 \u06a9\u06cc \u0633\u0637\u062d<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>1~3<\/td>\n<td>\u0639\u0627\u0645<\/td>\n<\/tr>\n<tr>\n<td>4~9<\/td>\n<td>\u062a\u062d\u0642\u06cc\u0642\u0627\u062a<\/td>\n<\/tr>\n<tr>\n<td>10+<\/td>\n<td>\u0634\u0627\u06cc\u062f \u067e\u06cc\u0633\u06d2 \u06a9\u0627 \u062e\u0686\u0631<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u0645\u06cc\u06ba\u060c \u0622\u067e \u0645\u0648\u0635\u0648\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06cc \u06a9\u0644 \u0631\u0642\u0645 \u0645\u06cc\u06ba \u062d\u062f \u06a9\u0627 \u0627\u0636\u0627\u0641\u06c1 \u06a9\u0631 \u06a9\u06d2 \u062c\u06be\u0648\u0679\u06d2 \u0645\u062b\u0628\u062a \u06a9\u0648 \u06a9\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-cypher\">WHERE unique_vendors >= 10 AND total_received > 50000\n<\/code><\/pre>\n<p>Python \u0645\u06cc\u06ba \u062a\u0644\u0627\u0634 \u06a9\u0627 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u0686\u0644\u0627\u0646\u0627:<\/p>\n<pre><code class=\"language-python\">mules = queries.detect_money_mule_rings(min_vendor_count=5)\nfor acct in mules:\n    print(f\"  {acct['a.account_id']} ({acct['a.bank_name']}) | \"\n          f\"{acct['vendor_count']} vendors | ${acct['total_amount']:.0f}\")\n<\/code><\/pre>\n<p>\u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u0627\u0645\u06cc\u0627\u0628\u06cc \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u0627\u0646\u062c\u06a9\u0634\u0646 \u0634\u062f\u06c1 \u062e\u0686\u0631 \u0631\u0646\u06af (ACC-MULE-001) \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 25 \u0634\u06cc\u0644 \u0633\u067e\u0644\u0627\u0626\u0631\u0632 \u06a9\u0648 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc\u0648\u06ba \u06a9\u0648 \u062c\u0645\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-pattern-4-how-to-identify-vendor-collusion-clusters\">\u067e\u06cc\u0679\u0631\u0646 4: \u0633\u067e\u0644\u0627\u0626\u0631 \u06a9\u06cc \u0645\u0644\u06cc \u0628\u06be\u06af\u062a \u06a9\u06d2 \u06a9\u0644\u0633\u0679\u0631\u0632 \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u06a9\u06cc\u0633\u06d2 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0633\u0627\u0632\u0634 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0634\u06cc\u0644 \u06a9\u0645\u067e\u0646\u06cc\u0627\u06ba \u0627\u06a9\u062b\u0631 \u0645\u062e\u062a\u0644\u0641 \u06a9\u0645\u067e\u0646\u06cc\u0648\u06ba \u06a9\u06d2 \u0646\u0627\u0645\u0648\u06ba \u0633\u06d2 \u0631\u062c\u0633\u0679\u0631 \u06c1\u0648 \u06a9\u0631 \u0627\u067e\u0646\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0686\u06be\u067e\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u062a\u0627\u06c1\u0645\u060c \u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627\u060c \u062c\u06cc\u0633\u06d2 \u0645\u0634\u062a\u0631\u06a9\u06c1 \u0641\u0632\u06cc\u06a9\u0644 \u0622\u0641\u0633 \u0633\u0648\u06cc\u0679\u0633 \u06cc\u0627 \u0627\u06cc\u06a9 \u062c\u06cc\u0633\u06d2 \u0628\u06cc\u0646\u06a9 \u0628\u0631\u0627\u0646\u0686 \u0631\u0648\u0679\u0646\u06af \u06a9\u06d2 \u0633\u0627\u0628\u0642\u06d2\u060c \u0627\u06a9\u062b\u0631 \u0644\u06cc\u06a9 \u06c1\u0648 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0646 \u06a9\u0644\u0633\u0679\u0631\u0632 \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0645\u062a\u0639\u062f\u062f \u0627\u062e\u0630 \u06a9\u0631\u062f\u06c1 \u0631\u0634\u062a\u0648\u06ba \u06a9\u0627 \u0628\u06cc\u06a9 \u0648\u0642\u062a \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u062c\u0627\u0645\u0639 \u0633\u0627\u062e\u062a\u06cc \u0631\u0633\u06a9 \u0633\u06a9\u0648\u0631 \u06a9\u0627 \u062d\u0633\u0627\u0628 \u0644\u06af\u0627\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-cypher\">\/\/ graph\/queries.py \u2014 detect_vendor_collusion()\nMATCH (v:Vendor)\nOPTIONAL MATCH (v)-[:SHARED_ACCOUNT_WITH]->(v2)\nOPTIONAL MATCH (v)-[:SHARED_LOCATION]->(v3)\nOPTIONAL MATCH (v)-[:SHARED_ROUTING_PREFIX]->(v4)\nWITH v,\n     collect(DISTINCT v2) AS shared_account_vendors,\n     collect(DISTINCT v3) AS shared_location_vendors,\n     collect(DISTINCT v4) AS shared_routing_vendors\nWITH v,\n     size(shared_account_vendors) AS sc,\n     size(shared_location_vendors) AS sl,\n     size(shared_routing_vendors) AS sr\nWHERE (sc + sl + sr) >= $min_score AND (sc + sl + sr) > 0\nRETURN v.name AS vendor,\n       v.tax_id,\n       (sc + sl + sr) AS risk_score,\n       [n IN shared_account_vendors + shared_location_vendors + shared_routing_vendors | n.name] AS related_vendors,\n       [x IN range(1, sc) | 'shared_account'] +\n       [x IN range(1, sl) | 'shared_location'] +\n       [x IN range(1, sr) | 'shared_routing'] AS flags\nORDER BY risk_score DESC\n<\/code><\/pre>\n<p>\u06cc\u06c1\u0627\u06ba \u0627\u06c1\u0645 \u0646\u06a9\u0627\u062a:<\/p>\n<ul>\n<li>\u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u0645\u06cc\u0686 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06cc\u06c1\u0627\u06ba \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4 \u0633\u062e\u062a \u0645\u06cc\u0686 \u0645\u0634\u062a\u0631\u06a9\u06c1 \u0631\u0648\u0679\u0646\u06af \u0627\u0648\u0631 \u0645\u0642\u0627\u0645\u0627\u062a \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0627\u0646 \u062f\u06a9\u0627\u0646\u062f\u0627\u0631\u0648\u06ba \u06a9\u0648 \u0634\u0627\u0645\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627 \u062c\u0646\u06c1\u0648\u06ba \u0646\u06d2 \u0627\u0628\u06be\u06cc \u062a\u06a9 \u0628\u06cc\u0646\u06a9 \u0627\u06a9\u0627\u0624\u0646\u0679 \u06a9\u0627 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u06c1\u06d2\u06d4<\/li>\n<li>\u0622\u067e \u0627\u067e\u0646\u06d2 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0645\u0627\u062d\u0648\u0644 \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u067e\u0631 \u0627\u067e\u0646\u06d2 \u0631\u0633\u06a9 \u0633\u06a9\u0648\u0631 \u06a9\u0648 \u0627\u06cc\u0688\u062c\u0633\u0679 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0628\u0691\u06d2 \u062a\u062c\u0627\u0631\u062a\u06cc \u0645\u0631\u0627\u06a9\u0632 \u0645\u06cc\u06ba \u0634\u06c1\u0631 \u06a9\u0627 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0639\u0627\u0645 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0627\u06cc\u06a9 \u06c1\u06cc \u0648\u0642\u062a \u0645\u06cc\u06ba \u0631\u0648\u0679\u0646\u06af \u06a9\u06d2 \u0633\u0627\u0628\u0642\u06d2 \u0627\u0648\u0631 \u0622\u0641\u0633 \u0633\u0648\u06cc\u0679\u0633 \u06a9\u0627 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0645\u062c\u0645\u0648\u0639\u06cc \u0627\u0633\u06a9\u0648\u0631 \u06a9\u0648 \u062a\u062d\u0642\u06cc\u0642 \u06a9\u06cc \u062d\u062f \u0633\u06d2 \u0622\u06af\u06d2 \u0628\u0691\u06be\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/li>\n<\/ul>\n<pre><code class=\"language-python\">collusion = queries.detect_vendor_collusion(min_risk_score=2)\nfor vendor in collusion[:10]:\n    print(f\"  {vendor['vendor']} | Risk: {vendor['risk_score']} | \"\n          f\"Flags: {vendor['flags']}\")\n<\/code><\/pre>\n<p>\u0645\u0644\u0679\u06cc \u0627\u06cc\u0679\u0631\u06cc\u0628\u06cc\u0648\u0679 \u0627\u0633\u06a9\u0648\u0631\u0646\u06af \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u0646\u06d2 \u0686\u0627\u0631 \u0648\u06cc\u0646\u0688\u0631 \u06a9\u0648\u0644\u06cc\u0634\u0646 \u06a9\u0644\u0633\u0679\u0631\u0632 \u06a9\u0648 \u06a9\u0627\u0645\u06cc\u0627\u0628\u06cc \u0633\u06d2 \u062c\u06be\u0646\u0688\u0627 \u0644\u06af\u0627\u06cc\u0627\u06d4<\/p>\n<h3 id=\"heading-pattern-5-how-to-flag-out-of-jurisdiction-payment-approvals\">\u067e\u06cc\u0679\u0631\u0646 5: \u062f\u0627\u0626\u0631\u06c1 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0633\u06d2 \u0628\u0627\u06c1\u0631 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u06a9\u06cc \u0646\u0634\u0627\u0646\u062f\u06c1\u06cc \u06a9\u06cc\u0633\u06d2 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0641\u0631\u0627\u0688 \u0627\u06a9\u062b\u0631 \u0627\u0633 \u0648\u0642\u062a \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0645\u0644\u0627\u0632\u0645\u06cc\u0646 \u0627\u067e\u0646\u06d2 \u0645\u062d\u06a9\u0645\u06d2 \u06a9\u06d2 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0633\u06d2 \u0628\u0627\u06c1\u0631 \u0631\u0633\u06cc\u062f\u06cc\u06ba \u0645\u0646\u0638\u0648\u0631 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u0627\u06cc\u06a9 HR \u0645\u06cc\u0646\u06cc\u062c\u0631 \u0628\u063a\u06cc\u0631 \u0645\u0646\u0638\u0648\u0631\u06cc \u06a9\u06d2 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0646\u06af \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631 \u0648\u06cc\u0646\u0688\u0631 \u0627\u0646\u0648\u0627\u0626\u0633 \u06a9\u0648 \u0645\u0646\u0638\u0648\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u0646\u0638\u0648\u0631\u06cc \u06a9\u06d2 \u0646\u0638\u0627\u0645 \u0627\u06a9\u062b\u0631 \u06cc\u06c1 \u062c\u0627\u0646\u0686\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0622\u06cc\u0627 \u0645\u0646\u0638\u0648\u0631 \u06a9\u0646\u0646\u062f\u06c1 \u06a9\u06d2 \u067e\u0627\u0633 \u062f\u0633\u062a\u062e\u0637 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0627\u062e\u062a\u06cc\u0627\u0631 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0634\u0627\u0630 \u0648 \u0646\u0627\u062f\u0631 \u06c1\u06cc \u06cc\u06c1 \u0686\u06cc\u06a9 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0622\u06cc\u0627 \u0645\u0646\u0638\u0648\u0631\u06cc \u062f\u06cc\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u06d2 \u0645\u062d\u06a9\u0645\u06d2 \u06a9\u0627 \u0627\u0646\u0648\u0627\u0626\u0633 \u06a9\u06d2 \u0632\u0645\u0631\u06d2 \u067e\u0631 \u062f\u0627\u0626\u0631\u06c1 \u0627\u062e\u062a\u06cc\u0627\u0631 \u06c1\u06d2 \u06cc\u0627 \u0646\u06c1\u06cc\u06ba\u06d4 \u06af\u0631\u0627\u0641 \u06a9\u06d2 \u0633\u0648\u0627\u0644\u0627\u062a \u067e\u0648\u0631\u06d2 \u0645\u0646\u0638\u0648\u0631\u06cc \u06a9\u06d2 \u0631\u0627\u0633\u062a\u06d2 \u06a9\u0648 \u062a\u0644\u0627\u0634 \u06a9\u0631\u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0645\u062d\u06a9\u0645\u06c1 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u0627\u062c\u0627\u0632\u062a\u0648\u06ba \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06d2 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-cypher\">\/\/ graph\/queries.py \u2014 detect_payment_anomalies()\nMATCH (inv:Invoice)<-[:LINKED_TO]-(p:Payment),\n      (e:Employee)-[:APPROVED]->(p),\n      (e)-[:WORKS_FOR]->(org:Organization)\nWITH inv, p, e, org,\n     CASE\n       WHEN inv.category = 'procurement' AND\n            e.department IN ['finance', 'operations', 'procurement']\n            THEN 'ok'\n       WHEN inv.category = 'payroll' AND\n            e.department IN ['hr', 'finance']\n            THEN 'ok'\n       WHEN inv.category = 'travel' AND\n            e.department IN ['operations', 'finance', 'hr']\n            THEN 'ok'\n       WHEN inv.category = 'marketing' AND\n            e.department IN ['marketing', 'finance']\n            THEN 'ok'\n       WHEN inv.category = 'consulting' AND\n            e.department IN ['finance', 'operations', 'procurement']\n            THEN 'ok'\n       WHEN inv.category = 'services' AND\n            e.department IN ['finance', 'operations', 'procurement']\n            THEN 'ok'\n       WHEN inv.category = 'supplies' AND\n            e.department IN ['operations', 'procurement', 'finance']\n            THEN 'ok'\n       WHEN inv.category = 'maintenance' AND\n            e.department IN ['operations', 'procurement', 'finance']\n            THEN 'ok'\n       WHEN inv.category = 'software' AND\n            e.department IN ['engineering', 'operations', 'finance']\n            THEN 'ok'\n       ELSE 'ANOMALY'\n     END AS approval_status\nWHERE approval_status=\"ANOMALY\"\nRETURN inv.invoice_id, inv.amount, inv.category,\n       inv.vendor_name, inv.date,\n       e.name AS approver, e.employee_id,\n       e.department AS approver_department\nORDER BY inv.date DESC\n<\/code><\/pre>\n<p>\u06cc\u06c1\u0627\u06ba \u0627\u06c1\u0645 \u0646\u06a9\u0627\u062a:<\/p>\n<ul>\n<li>\u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 \u0627\u0646\u06a9\u0627\u0631 <code>ELSE 'ANOMALY'<\/code> \u0688\u06be\u0627\u0646\u0686\u06c1 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0627\u0646\u0648\u0627\u0626\u0633 \u06a9\u06d2 \u0632\u0645\u0631\u06d2 \u062c\u0648 \u0648\u0627\u0636\u062d \u0637\u0648\u0631 \u067e\u0631 \u0645\u0646\u0638\u0648\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u0626\u06d2 \u06c1\u06cc\u06ba \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648 \u06af\u0626\u06d2 \u06c1\u06cc\u06ba \u0628\u0646\u062f \u06a9\u0631 \u062f\u06cc\u06d2 \u06af\u0626\u06d2 \u06c1\u06cc\u06ba\u06d4<\/li>\n<li>\u0627\u0646\u0679\u0631\u067e\u0631\u0627\u0626\u0632 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u0645\u06cc\u06ba\u060c \u0622\u067e \u06a9\u0648 \u0627\u0633 \u067e\u0627\u0644\u06cc\u0633\u06cc \u0645\u0646\u0637\u0642 \u06a9\u0648 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u06af\u0631\u0627\u0641 \u0645\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0639\u0645\u0644\u06cc \u0634\u06a9\u0644 \u062f\u06cc\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2: <code>(:Department)-[:AUTHORIZED_FOR]->(:Category)<\/code> \u0633\u0648\u0627\u0644\u0627\u062a \u0645\u06cc\u06ba \u0642\u062f\u0631\u0648\u06ba \u06a9\u0648 \u06c1\u0627\u0631\u0688 \u06a9\u0648\u0688\u0646\u06af \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c \u0646\u0648\u0688\u0633 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u06cc\u06c1 \u062a\u0639\u0645\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0679\u06cc\u0645\u0648\u06ba \u06a9\u0648 \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0648\u06c1 \u0646\u0626\u06d2 \u06a9\u0648\u0688 \u06a9\u06cc \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0627\u062c\u0627\u0632\u062a \u06a9\u06d2 \u0645\u06cc\u0679\u0631\u06a9\u0633 \u06a9\u0648 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631 \u0633\u06a9\u06cc\u06ba\u06d4<\/li>\n<\/ul>\n<pre><code class=\"language-python\">anomalies = queries.detect_payment_anomalies()\nprint(f\"Found {len(anomalies)} anomalous approvals\")\nfor a in anomalies:\n    print(f\"  Invoice {a['inv.invoice_id']}: \"\n          f\"{a['e.name']} ({a['e.department']}) approved \"\n          f\"{a['inv.category']} | ${a['inv.amount']}\")\n<\/code><\/pre>\n<p>\u0627\u0633\u062a\u0641\u0633\u0627\u0631 100% \u0631\u06cc\u06a9\u0627\u0644 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062f\u0627\u062e\u0644\u06d2 \u06a9\u06cc \u062a\u06cc\u0646\u0648\u06ba \u0627\u0646\u062c\u06cc\u06a9\u0634\u0646 \u06a9\u06cc \u0628\u06d2 \u0636\u0627\u0628\u0637\u06af\u06cc\u0648\u06ba \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-to-run-the-end-to-end-pipeline-and-validate-results\">\u0622\u062e\u0631 \u0633\u06d2 \u0622\u062e\u0631 \u062a\u06a9 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u06a9\u06cc\u0633\u06d2 \u0686\u0644\u0627\u0626\u06cc\u06ba \u0627\u0648\u0631 \u0646\u062a\u0627\u0626\u062c \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u06a9\u0648 \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0645\u0627\u0646\u0688 \u0644\u0627\u0626\u0646 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u0645\u06cc\u06ba \u0688\u06be\u0627\u0644 \u0644\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-bash\">python analysis\/run_detections.py\n<\/code><\/pre>\n<p>\u0627\u062e\u062a\u062a\u0627\u0645 \u0633\u06d2 \u0622\u062e\u0631 \u062a\u06a9 \u0688\u06cc\u0679\u0627 \u06a9\u0627 \u0628\u06c1\u0627\u0624 \u0686\u06be \u0627\u0644\u06af \u0627\u0644\u06af \u0645\u0631\u0627\u062d\u0644 \u0645\u06cc\u06ba \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-plaintext\">Generate Dataset \u2192 Load to Neo4j \u2192 Build Derived Relationships \u2192 Run 5 Queries \u2192 Save Results \u2192 Validate\n<\/code><\/pre>\n<h3 id=\"heading-how-to-run-ingestion-and-detection\">\u062c\u0645\u0639 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1<\/h3>\n<p>\u0688\u06cc\u0641\u0627\u0644\u0679 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u0627\u0633\u06a9\u0631\u067e\u0679 \u0688\u06cc\u0679\u0627 \u062c\u0646\u0631\u06cc\u0634\u0646\u060c \u0627\u0633\u06a9\u06cc\u0645\u0627 \u06a9\u06cc \u062a\u062e\u0644\u06cc\u0642\u060c \u0631\u06cc\u0644\u06cc\u0634\u0646 \u0634\u067e \u0645\u06cc\u0679\u0631\u06cc\u0644\u0627\u0626\u0632\u06cc\u0634\u0646\u060c \u0627\u0648\u0631 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06d2 \u0639\u0645\u0644 \u06a9\u0648 \u0645\u0631\u0628\u0648\u0637 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-python\"># analysis\/run_detections.py\nfrom dataset.generate import FraudDatasetGenerator\nfrom graph.connection import FraudGraph\nfrom graph.loader import FraudGraphLoader\nfrom graph.queries import FraudQueries\n\ndef run_pipeline(output_dir=\"analysis\/output\", force_regenerate=False):\n    os.makedirs(output_dir, exist_ok=True)\n\n    # Step 1: Generate or load dataset\n    dataset_path = os.path.join(output_dir, 'data')\n    if not os.path.exists(os.path.join(dataset_path, 'vendors.json')) or force_regenerate:\n        gen = FraudDatasetGenerator(seed=42)\n        gen.save(dataset_path)\n    else:\n        print(f'Dataset already at: {dataset_path}')\n\n    # Load JSON files\n    data = {}\n    for name in ['vendors', 'invoices', 'payments', 'bank_accounts',\n                  'employees', 'organizations', 'ground_truth']:\n        with open(os.path.join(dataset_path, f'{name}.json')) as f:\n            data[name] = json.load(f)\n\n    # Step 2: Load into Neo4j\n    graph = FraudGraph()\n    graph.connect()\n    graph.create_constraints()\n    loader = FraudGraphLoader(graph)\n    loader.load_all(data)\n    loader.create_shared_account_relationships()\n    loader.create_attribute_based_relationships()\n\n    info = graph.get_info()\n    print('Graph loaded:')\n    for label, count in sorted(info['nodes'].items(), key=lambda x: -x[1]):\n        print(f'  {label}: {count} nodes')\n\n    # Step 3: Run all detections\n    queries = FraudQueries(graph)\n    results = queries.detect_all()\n\n    # Step 4: Save results\n    with open(os.path.join(output_dir, 'detection_results.json'), 'w') as f:\n        json.dump(results, f, indent=2, default=str)\n\n    for pattern, items in results.items():\n        print(f'  {pattern}: {len(items)} findings')\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>detect_all()<\/code> \u06cc\u06c1 \u0637\u0631\u06cc\u0642\u06c1 \u062a\u0645\u0627\u0645 \u067e\u0627\u0646\u0686 \u0633\u0648\u0627\u0644\u0627\u062a \u06a9\u0648 \u0627\u0646\u062c\u0627\u0645 \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u06c1\u06cc \u0644\u063a\u062a \u0648\u0627\u067e\u0633 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-python\"># graph\/queries.py\ndef detect_all(self):\n    return {\n        'duplicate_invoices': self.detect_duplicates(),\n        'circular_schemes': self.detect_circular_schemes(),\n        'money_mule_rings': self.detect_money_mule_rings(),\n        'vendor_collusion': self.detect_vendor_collusion(),\n        'payment_anomalies': self.detect_payment_anomalies(),\n    }\n<\/code><\/pre>\n<h3 id=\"heading-how-to-validate-recall-against-injected-ground-truth\">\u0627\u0646\u062c\u06cc\u06a9\u0634\u0646 \u06af\u0631\u0627\u0624\u0646\u0688 \u0679\u0631\u0648\u062a\u06be \u06a9\u06d2 \u0644\u06cc\u06d2 \u06cc\u0627\u062f \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u06cc\u0633\u06d2 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u062a\u0648\u062b\u06cc\u0642 \u0627\u0633\u06a9\u0631\u067e\u0679 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06d2 \u0646\u062a\u0627\u0626\u062c \u06a9\u0627 \u0632\u0645\u06cc\u0646\u06cc \u0633\u0686\u0627\u0626\u06cc \u0641\u0627\u0626\u0644\u0648\u06ba \u0633\u06d2 \u0645\u0648\u0627\u0632\u0646\u06c1 \u06a9\u0631\u06a9\u06d2 \u06cc\u0627\u062f \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-python\"># analysis\/validate.py\nfrom collections import defaultdict\n\ndef validate(results_path, output_path=None):\n    with open(results_path) as f:\n        results = json.load(f)\n\n    with open(os.path.join(os.path.dirname(results_path), 'data',\n                           'ground_truth.json')) as f:\n        ground_truth = json.load(f)\n\n    gt_by_pattern = defaultdict(list)\n    for pattern in ground_truth:\n        gt_by_pattern[pattern['pattern']].append(pattern)\n<\/code><\/pre>\n<p>\u062a\u0648\u062b\u06cc\u0642\u06cc \u0645\u0646\u0637\u0642 \u06c1\u0631 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06cc \u0642\u0633\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06cc \u062f\u0631\u0633\u062a\u06af\u06cc \u06a9\u0627 \u0627\u0646\u062f\u0627\u0632\u06c1 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-python\">for pattern_name, gt_patterns in gt_by_pattern.items():\n    found = results.get(pattern_name, [])\n    gt_count = len(gt_patterns)\n\n    if pattern_name == 'duplicate_invoices':\n        print(f\"DUPLICATE INVOICES: DETECTED {len(found)} of {gt_count} pairs \u2014 {len(found)\/max(1,gt_count):.0%} recall\")\n\n    elif pattern_name == 'money_mule_rings':\n        matched = sum(1 for gt in gt_patterns\n                      for r in found\n                      if r.get('a.account_id') == gt['shared_account'])\n        print(f\"MONEY MULE RINGS: DETECTED {matched} of {gt_count} rings \u2014 {matched\/max(1,gt_count):.0%} recall\")\n<\/code><\/pre>\n<p>\u0627\u06af\u0644\u0627\u060c \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062f\u06c1 \u0688\u06cc\u0679\u0627\u0633\u06cc\u0679 \u067e\u0631 \u062a\u0648\u062b\u06cc\u0642 \u06a9\u0646\u0646\u062f\u06c1 \u06a9\u0648 \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4 <code>seed=42<\/code> \u06cc\u06c1 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u0646\u062a\u06cc\u062c\u06c1 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-plaintext\">DUPLICATE INVOICES: DETECTED 12 of 12 pairs \u2014 100% recall\nCIRCULAR SCHEMES: DETECTED 1 of 1 rings \u2014 100% recall\nMONEY MULE RINGS: DETECTED 1 of 1 rings \u2014 100% recall\nVENDOR COLLUSION: 89 high-risk vendors flagged (multi-attribute scoring)\nPAYMENT ANOMALIES: DETECTED 3 of 3 anomalies \u2014 100% recall\n<\/code><\/pre>\n<h3 id=\"heading-how-to-execute-the-complete-workflow\">\u067e\u0648\u0631\u06d2 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0686\u0644\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/h3>\n<p>\u0645\u0627\u062d\u0648\u0644 \u06a9\u0648 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u06d2\u060c \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u0686\u0644\u0627\u0646\u06d2 \u0627\u0648\u0631 \u0646\u062a\u0627\u0626\u062c \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u06a9\u0645\u0644 \u0679\u0631\u0645\u06cc\u0646\u0644 \u06a9\u0645\u0627\u0646\u0688 \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628 \u06cc\u06c1 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-bash\"># 1. Start Neo4j\ndocker compose up -d\n\n# 2. Install dependencies\npip install -r requirements.txt\n\n# 3. Run the full pipeline\npython analysis\/run_detections.py\n\n# 4. Validate results\npython analysis\/validate.py\n\n# 5. (Optional) Regenerate with fresh data and re-run\npython analysis\/run_detections.py --regenerate\n<\/code><\/pre>\n<h2 id=\"heading-production-architecture-how-to-scale-the-graph-pipeline\">\u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631: \u0627\u067e\u0646\u06cc \u06af\u0631\u0627\u0641 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u06a9\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u06cc\u0633\u06d2 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u062c\u0628\u06a9\u06c1 \u062d\u0648\u0627\u0644\u06c1 \u067e\u0631\u0648\u0679\u0648 \u0679\u0627\u0626\u067e \u0633\u06cc\u0646\u06a9\u0691\u0648\u06ba \u0646\u0648\u0688\u0633 \u067e\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0641\u0631\u0627\u0688 \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0627\u0646\u062c\u0646 \u0631\u0648\u0632\u0627\u0646\u06c1 \u0644\u0627\u06a9\u06be\u0648\u06ba \u0644\u06cc\u0646 \u062f\u06cc\u0646 \u067e\u0631 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0648 \u0627\u0633\u06a9\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06c1\u0645 \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u06a9\u0648 \u062f\u0648\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">New Transaction\n    \u2193\nStage 1 \u2014 Deterministic queries (fast, rule-based)\n    \u2193  (if any pattern matches)\nStage 2 \u2014 ML scoring on graph features\n    \u2193\nRisk Score \u2192 Alert \/ Approve \/ Escalate\n<\/code><\/pre>\n<h3 id=\"heading-how-to-implement-a-two-stage-detection-architecture\">\u062f\u0648 \u0645\u0631\u062d\u0644\u06d2 \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0646\u0627\u0641\u0630 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/h3>\n<p>\u0622\u0646 \u0644\u0627\u0626\u0646 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06d2 \u0631\u0627\u0633\u062a\u06d2 \u0645\u06cc\u06ba \u0622\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u062a\u0645\u0627\u0645 \u0644\u06cc\u0646 \u062f\u06cc\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0639\u0627\u0644\u0645\u06cc \u0633\u0627\u0626\u06cc\u06a9\u0644 \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06d2 \u0633\u0648\u0627\u0644\u0627\u062a \u06a9\u0648 \u06c1\u0645 \u0648\u0642\u062a \u0633\u0627\u0632\u06cc \u0633\u06d2 \u0627\u0646\u062c\u0627\u0645 \u062f\u06cc\u0646\u06d2 \u0633\u06d2 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u0646\u06a9\u0634\u0646 \u067e\u0648\u0644 \u062e\u062a\u0645 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4<\/p>\n<p>\u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u0648 \u062f\u0648 \u062a\u06c1\u0648\u06ba \u0645\u06cc\u06ba \u062a\u0642\u0633\u06cc\u0645 \u06a9\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2\u06d4<\/p>\n<ul>\n<li><strong>\u0645\u0631\u062d\u0644\u06c1 1 (\u06c1\u0645 \u0648\u0642\u062a \u0633\u0627\u0632 \u06af\u06cc\u0679\u0646\u06af):<\/strong> \u0630\u06cc\u0644\u06cc \u0645\u0644\u06cc \u0633\u06cc\u06a9\u0646\u0688 \u0633\u0627\u0626\u0641\u0631 \u0627\u0633\u062a\u0641\u0633\u0627\u0631\u0627\u062a \u062c\u0648 \u0645\u0639\u0644\u0648\u0645 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0648 \u062d\u0627\u0635\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u062a\u06cc\u0632 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u0627\u0634\u0627\u0631\u06cc\u06c1 \u0634\u062f\u06c1 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a\u060c \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0628\u0646\u0627\u0626\u06d2 \u06af\u0626\u06d2 \u062a\u0639\u0644\u0642\u0627\u062a\u060c \u0627\u0648\u0631 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06cc \u0645\u062d\u062f\u0648\u062f \u0644\u0645\u0628\u0627\u0626\u06cc \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/li>\n<li><strong>\u0645\u0631\u062d\u0644\u06c1 2 (\u0627\u0633\u06cc\u0646\u06a9\u0631\u0648\u0646\u0633 \u06af\u0631\u0627\u0641 \u062a\u062c\u0632\u06cc\u06c1):<\/strong> \u0627\u0646 \u0644\u06cc\u0646 \u062f\u06cc\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062c\u0648 \u062a\u0639\u06cc\u06cc\u0646\u0627\u062a\u06cc \u0627\u0635\u0648\u0644\u0648\u06ba \u06a9\u0648 \u0645\u062a\u062d\u0631\u06a9 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u06af\u0631\u0627\u0641 \u0633\u06d2 \u0627\u062e\u0630 \u06a9\u0631\u062f\u06c1 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u0648 \u0634\u0645\u0627\u0631 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633\u06a9\u0648\u0631 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/li>\n<\/ul>\n<h3 id=\"heading-how-to-tune-thresholds-and-manage-false-positives\">\u062d\u062f \u06a9\u0648 \u0627\u06cc\u0688\u062c\u0633\u0679 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u063a\u0644\u0637 \u0645\u062b\u0628\u062a\u0627\u062a \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u06cc\u0633\u06d2 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06d2 \u0646\u0638\u0627\u0645 \u0644\u0627\u0645\u062d\u0627\u0644\u06c1 \u063a\u0644\u0637 \u0645\u062b\u0628\u062a \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u0645\u06cc\u06ba\u060c \u062a\u0639\u0645\u06cc\u0644 \u062a\u062c\u0632\u06cc\u06c1 \u06a9\u0627\u0631\u0648\u06ba \u06a9\u06d2 \u062c\u0627\u0626\u0632\u06d2 \u06a9\u06d2 \u062a\u0627\u062b\u0631\u0627\u062a \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06cc \u062d\u062f \u06a9\u0648 \u0645\u0633\u0644\u0633\u0644 \u0627\u06cc\u0688\u062c\u0633\u0679 \u06a9\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<pre><code class=\"language-python\">#Tune thresholds based on false positive rate\n\nqueries.detect_money_mule_rings(min_vendor_count=10) # was 5\nqueries.detect_duplicates(max_days_apart=7) # was 14\nqueries.detect_vendor_collusion(min_risk_score=3) # was 2\n<\/code><\/pre>\n<p>\u0622\u067e \u0648\u0627\u067e\u0633\u06cc \u067e\u0631 \u0627\u062b\u0631\u0627\u062a \u06a9\u06cc \u0646\u06af\u0631\u0627\u0646\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u06c1\u0631 \u062a\u06be\u0631\u06cc\u0634\u0648\u0644\u0688 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u06d2 \u0628\u0639\u062f \u062a\u0648\u062b\u06cc\u0642 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0686\u0644\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-python\">python analysis\/validate.py --input analysis\/output\/detection_results.json\n<\/code><\/pre>\n<h3 id=\"heading-how-to-mitigate-supernode-expansion\">\u0633\u067e\u0631 \u0646\u0648\u0688 \u0627\u0633\u06a9\u06cc\u0644\u0646\u06af \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u06a9\u0645 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/h3>\n<p>\u06af\u0631\u0627\u0641 \u0633\u0633\u0679\u0645 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0639\u0627\u0645 \u0646\u0627\u06a9\u0627\u0645\u06cc \"\u0633\u067e\u0631 \u0646\u0648\u0688\" \u06a9\u0627 \u0645\u0633\u0626\u0644\u06c1 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u062c\u0627\u0626\u0632 \u0645\u0634\u062a\u0631\u06a9\u06c1 \u0627\u062f\u0627\u0631\u06c1 (\u062c\u06cc\u0633\u06d2 \u0627\u06cc\u06a9 \u0628\u0691\u0627 \u06a9\u0627\u0631\u067e\u0648\u0631\u06cc\u0679 \u0645\u0627\u0644\u06a9 \u0645\u06a9\u0627\u0646\u060c \u0642\u0648\u0645\u06cc \u0627\u0641\u0627\u062f\u06cc\u062a\u060c \u06cc\u0627 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u067e\u06d2 \u0631\u0648\u0644 \u0627\u06a9\u0627\u0624\u0646\u0679) \u062f\u0633\u06cc\u0648\u06ba \u06c1\u0632\u0627\u0631 \u0622\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0646\u0627\u0631\u06d2 \u062c\u0645\u0639 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u06a9\u0648\u0626\u06cc \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u0641\u0644\u0679\u0631\u0646\u06af \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0633\u067e\u0631\u0646\u0648\u0688 \u06a9\u0648 \u0639\u0628\u0648\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0679\u0631\u0627\u0648\u0631\u0633\u0644 \u0644\u06cc\u0679\u0646\u0633\u06cc \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u0628\u0691\u06be \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u067e \u0627\u0633\u06d2 \u062f\u0648 \u062d\u06a9\u0645\u062a \u0639\u0645\u0644\u06cc\u0648\u06ba \u0633\u06d2 \u06a9\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<ul>\n<li><strong>\u0688\u06af\u0631\u06cc \u06a9\u06cc \u067e\u0627\u0628\u0646\u062f\u06cc\u0627\u06ba:<\/strong> \u0679\u0631\u0627\u0648\u0631\u0633\u0644 \u0645\u06cc\u06ba \u0688\u06af\u0631\u06cc \u06a9\u06cc \u06a9\u0679\u0627\u0626\u06cc \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/li>\n<\/ul>\n<p>\u0645\u06cc\u0686 (a:\u0628\u06cc\u0646\u06a9 \u0627\u06a9\u0627\u0624\u0646\u0679)<\/p>\n<p>\u062c\u06c1\u0627\u06ba \u0633\u0627\u0626\u0632((a)<-[:PAID_TO]-()) <1000<\/p>\n<ul>\n<li><strong>\u0646\u0648\u0688 \u0644\u06cc\u0628\u0644:<\/strong> \u0645\u0639\u0631\u0648\u0641 \u0628\u0691\u06d2 \u0627\u062f\u0627\u0631\u06c1 \u062c\u0627\u062a\u06cc \u0627\u062f\u0627\u0631\u0648\u06ba \u06a9\u0648 :\u0648\u0627\u0626\u0679 \u0644\u0633\u0679\u0688 \u06cc\u0627 :\u06cc\u0648\u0679\u06cc\u0644\u06cc\u0679\u06cc \u0644\u06cc\u0628\u0644\u0632 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0679\u06cc\u06af \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0646\u06c1\u06cc\u06ba \u0648\u0627\u0636\u062d \u0637\u0648\u0631 \u067e\u0631 \u0645\u0644\u06cc \u0628\u06be\u06af\u062a \u0627\u0648\u0631 \u067e\u06cc\u0633\u06d2 \u06a9\u06d2 \u062e\u0686\u0631 \u0627\u0633\u06a9\u06cc\u0646 \u0633\u06d2 \u062e\u0627\u0631\u062c \u06a9\u0631\u06cc\u06ba\u06d4<\/li>\n<\/ul>\n<h3 id=\"heading-how-to-use-graph-features-for-machine-learning\">\u0645\u0634\u06cc\u0646 \u0644\u0631\u0646\u0646\u06af \u0645\u06cc\u06ba \u06af\u0631\u0627\u0641 \u0641\u0646\u06a9\u0634\u0646\u0632 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0633\u06d2 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u062f\u06be\u0648\u06a9\u06c1 \u062f\u06c1\u06cc \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06d2 \u0633\u0628 \u0633\u06d2 \u0645\u0624\u062b\u0631 \u0646\u0638\u0627\u0645 \u06af\u0631\u0627\u0641\u0633 \u0627\u0648\u0631 \u0645\u0634\u06cc\u0646 \u0644\u0631\u0646\u0646\u06af \u06a9\u0648 \u0645\u0633\u0627\u0628\u0642\u062a\u06cc \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0646\u06c1\u06cc\u06ba \u0645\u0627\u0646\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c \u06af\u0631\u0627\u0641 \u067e\u06cc\u0634 \u06af\u0648\u0626\u06cc \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0645\u0627\u0688\u0644\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0627\u0639\u0644\u06cc\u0670 \u0633\u0637\u062d\u06cc \u0641\u06cc\u0686\u0631 \u0627\u0633\u0679\u0648\u0631 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<ul>\n<li><strong>\u0688\u06af\u0631\u06cc \u0645\u0631\u06a9\u0632\u06cc\u062a:<\/strong> \u06c1\u0645 \u062e\u0686\u0631 \u06a9\u0646\u0648\u0631\u062c\u0646\u0633\u06cc \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06a9\u0627\u0624\u0646\u0679\u0633 \u06a9\u06cc \u06a9\u0646\u06cc\u06a9\u0679\u0648\u0679\u06cc \u06a9\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/li>\n<li><strong>\u0645\u0631\u06a9\u0632\u06cc\u062a \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646:<\/strong> \u0627\u06cc\u0633\u06d2 \u0627\u062f\u0627\u0631\u0648\u06ba \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u06a9\u0631\u06cc\u06ba \u062c\u0648 \u0633\u067e\u0644\u0627\u0626\u0631\u0632 \u06a9\u06d2 \u0628\u0638\u0627\u06c1\u0631 \u0645\u0646\u0642\u0637\u0639 \u06af\u0631\u0648\u067e\u0648\u06ba \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u067e\u0644 \u06a9\u0627 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/li>\n<li><strong>\u067e\u06cc\u062c \u0631\u06cc\u0646\u06a9 \u0627\u0648\u0631 \u06a9\u0645\u06cc\u0648\u0646\u0679\u06cc \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u0627:<\/strong> \u067e\u0648\u0631\u06d2 \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u0645\u06cc\u06ba \u06a9\u0644\u0633\u0679\u0631 \u0627\u06cc\u0633\u0648\u0633\u06cc \u0627\u06cc\u0634\u0646\u0632 \u0627\u0648\u0631 \u06c1\u0633\u062a\u06cc \u06a9\u06cc \u0627\u06c1\u0645\u06cc\u062a \u06a9\u0627 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0644\u06af\u0627\u0626\u06cc\u06ba\u06d4<\/li>\n<\/ul>\n<p>\u0627\u06cc\u06a9 ML \u062f\u0631\u062c\u06c1 \u0628\u0646\u062f\u06cc \u062c\u0648 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0644\u06cc\u0646 \u062f\u06cc\u0646 \u06a9\u06cc \u0631\u0642\u0645 \u067e\u0631 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0633\u06d2 $4,900 \u06a9\u06cc \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u06a9\u0648\u0626\u06cc \u063a\u06cc\u0631 \u0645\u0639\u0645\u0648\u0644\u06cc \u0686\u06cc\u0632 \u0646\u06c1\u06cc\u06ba \u0645\u0644\u06d2 \u06af\u06cc\u06d4 \u062a\u0627\u06c1\u0645\u060c \u062c\u0628 \u06af\u0631\u0627\u0641 \u0633\u06d2 \u0645\u0627\u062e\u0648\u0630 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062c\u0648\u0691 \u06a9\u0631 \u06cc\u06c1 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0627\u06cc\u06a9 \u0648\u06cc\u0646\u0688\u0631 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0645\u0631\u06a9\u0632\u06cc\u062a \u0632\u06cc\u0627\u062f\u06c1 \u06c1\u06d2 \u0627\u0648\u0631 \u0648\u06c1 \u0634\u0646\u0627\u062e\u062a \u0634\u062f\u06c1 \u0641\u0631\u0627\u0688 \u06af\u0631\u0648\u067e\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062b\u0627\u0646\u0648\u06cc \u06a9\u0646\u06a9\u0634\u0646 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u062f\u0631\u062c\u06c1 \u0628\u0646\u062f\u06cc \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0628\u0691\u06cc \u062f\u0631\u0633\u062a\u06af\u06cc \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0644\u06cc\u0646 \u062f\u06cc\u0646 \u06a9\u0648 \u062c\u06be\u0646\u0688\u0627 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-key-architectural-lessons-and-takeaways\">\u06a9\u0644\u06cc\u062f\u06cc \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u06d2 \u0627\u0633\u0628\u0627\u0642 \u0627\u0648\u0631 \u0645\u0636\u0645\u0631\u0627\u062a<\/h2>\n<p>\u06af\u0631\u0627\u0641 \u067e\u0631 \u0645\u0628\u0646\u06cc \u0641\u0631\u0627\u0688 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u06a9\u06cc \u062a\u0639\u0645\u06cc\u0631 \u0627\u0648\u0631 \u0679\u06cc\u0648\u0646\u0646\u06af \u06a9\u0686\u06be \u0627\u06c1\u0645 \u0641\u0648\u0627\u0626\u062f \u0627\u0648\u0631 \u0646\u0642\u0635\u0627\u0646\u0627\u062a \u06a9\u0648 \u0646\u0645\u0627\u06cc\u0627\u06ba \u06a9\u0631\u062a\u06cc \u06c1\u06d2:<\/p>\n<p>\u0633\u0628 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0645\u062a\u0639\u0644\u0642\u06c1 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0645\u06cc\u06ba\u060c \u0633\u06a9\u06cc\u0645\u0627 \u0688\u06cc\u0632\u0627\u0626\u0646 \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0641\u0627\u0644\u062a\u0648 \u067e\u0646 \u06a9\u0648 \u062e\u062a\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u06cc\u0633\u0631\u06d2 \u0646\u0627\u0631\u0645\u0644 \u0641\u0627\u0631\u0645 (3NF) \u06a9\u0648 \u062a\u0631\u062c\u06cc\u062d \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u067e\u0646\u0627 \u0627\u0633\u06a9\u06cc\u0645\u0627 \u0627\u0646 \u0679\u0631\u0627\u0648\u0631\u0633\u0644\u0632 \u06a9\u06d2 \u0627\u0631\u062f \u06af\u0631\u062f \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u0631\u06cc\u06ba \u062c\u0646\u06c1\u06cc\u06ba \u06af\u0631\u0627\u0641 \u067e\u0631 \u0627\u0646\u062c\u0627\u0645 \u062f\u06cc\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u06a9\u0648\u0626\u06cc \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u0627\u06cc\u06a9 \u0645\u0631\u0628\u0648\u0637 \u0648\u0635\u0641 \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u0627\u0631 \u0628\u0627\u0631 \u0686\u0627\u0631 \u06c1\u067e\u0633 \u0633\u06d2 \u06af\u0632\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06c1\u0645 \u062c\u0645\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0627\u0633 \u0627\u0631\u062a\u0628\u0627\u0637 \u06a9\u0648 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u062a\u0639\u0644\u0642 \u0645\u06cc\u06ba \u0628\u062f\u0644 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u062f\u0648\u0633\u0631\u0627\u060c \u0645\u0646\u0641\u0631\u062f \u0648\u0635\u0641 \u06a9\u06cc \u0631\u06a9\u0627\u0648\u0679\u06cc\u06ba \u0635\u0631\u0641 \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0633\u0627\u0644\u0645\u06cc\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 \u0627\u06cc\u06a9 \u0628\u06cc\u0633 \u06c1\u06cc\u0634 \u0627\u0646\u0688\u06cc\u06a9\u0633 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 $O(1)$ \u0646\u0648\u0688 \u062a\u0644\u0627\u0634 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0631\u06a9\u0627\u0648\u0679 \u06a9\u0648 \u0686\u06be\u0648\u0691\u0646\u0627 \u062a\u0645\u0627\u0645 \u06af\u0631\u0627\u0641 \u0627\u0646\u0636\u0645\u0627\u0645 \u06a9\u0648 \u0645\u06a9\u0645\u0644\u060c \u063a\u06cc\u0631 \u0627\u0634\u0627\u0631\u06cc\u06c1 \u0634\u062f\u06c1 \u0627\u0633\u06a9\u06cc\u0646\u0648\u06ba \u0645\u06cc\u06ba \u0628\u062f\u0644 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062a\u06cc\u0633\u0631\u0627\u060c \u0622\u067e \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u0627\u0635\u0648\u0644\u0648\u06ba \u06a9\u06cc \u0627\u0646\u0648\u06cc\u0646\u0679\u0631\u06cc \u06a9\u0648 \u062f\u0631\u0633\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4** \u0627\u06cc\u06a9 \u0633\u06cc\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba \u062c\u0648 \u0686\u0627\u0631 \u06cc\u0627 \u067e\u0627\u0646\u0686 \u06c1\u0627\u0626\u06cc \u0633\u06af\u0646\u0644 \u067e\u06cc\u0679\u0631\u0646 \u067e\u0631 \u0645\u0631\u06a9\u0648\u0632 \u06c1\u0648\u06d4 \u06c1\u0631 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u06be\u0631\u06cc\u0634\u0648\u0644\u0688 \u06a9\u06cc\u0644\u06cc\u0628\u0631\u06cc\u0634\u0646 \u0627\u0648\u0631 \u062f\u0631\u062c\u06c1 \u0628\u0646\u062f\u06cc \u06a9\u06d2 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u062f\u0631\u062c\u0646\u0648\u06ba \u063a\u06cc\u0631 \u062a\u0635\u062f\u06cc\u0642 \u0634\u062f\u06c1 \u06c1\u06cc\u0648\u0631\u0633\u0679\u06a9\u0633 \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u062a\u0639\u0645\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0679\u06cc\u0645\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u0634\u0648\u0631 \u0627\u0648\u0631 \u0627\u0644\u0631\u0679 \u062a\u06be\u06a9\u0627\u0648\u0679 \u067e\u06cc\u062f\u0627 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u062e\u0631 \u0645\u06cc\u06ba\u060c \u06c1\u0645 \u062a\u062c\u0632\u06cc\u06c1 \u06a9\u0627\u0631 \u0641\u06cc\u0688 \u0628\u06cc\u06a9 \u0644\u0648\u067e \u06a9\u0648 \u0628\u0646\u062f \u06a9\u0631 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062a\u0644\u0627\u0634 \u06a9\u06d2 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u0627 \u0646\u062a\u06cc\u062c\u06c1 \u0627\u06cc\u06a9 \u0645\u0641\u0631\u0648\u0636\u06c1 \u06c1\u06d2\u060c \u062d\u062a\u0645\u06cc \u0641\u06cc\u0635\u0644\u06c1 \u0646\u06c1\u06cc\u06ba\u06d4 \u062c\u0628 \u062a\u0639\u0645\u06cc\u0644 \u06a9\u06d2 \u062a\u062c\u0632\u06cc\u06c1 \u06a9\u0627\u0631 \u0627\u0644\u0631\u0679 \u06a9\u06cc \u0686\u06be\u0627\u0646 \u0628\u06cc\u0646 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u062f\u06be\u0648\u06a9\u06c1 \u062f\u06c1\u06cc \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0648\u06c1 \u0627\u0633 \u0627\u0633\u0679\u06cc\u0679\u0633 \u06a9\u0648 \u06af\u0631\u0627\u0641 \u067e\u0631 \u0648\u0627\u067e\u0633 \u0646\u0648\u0688 \u067e\u0631\u0627\u067e\u0631\u0679\u06cc \u06cc\u0627 \u0644\u06cc\u0628\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062c\u06cc\u0633\u06d2 \u06a9\u06c1:ConfirmedFraud\u06d4 \u06cc\u06c1 \u067e\u0691\u0648\u0633 \u06a9\u06cc \u0679\u0648\u067e\u0648\u0644\u0648\u062c\u06cc \u06a9\u0648 \u0645\u0636\u0628\u0648\u0637 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0688\u0627\u0624\u0646 \u0627\u0633\u0679\u0631\u06cc\u0645 \u0645\u0634\u06cc\u0646 \u0644\u0631\u0646\u0646\u06af \u0645\u0627\u0688\u0644\u0632 \u06a9\u06cc \u062a\u0631\u0628\u06cc\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0648\u0627\u0636\u062d \u062d\u0642\u06cc\u0642\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-conclusion\">\u0646\u062a\u06cc\u062c\u06c1<\/h2>\n<p>\u0627\u0633 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0645\u06cc\u06ba\u060c \u0622\u067e \u0646\u06d2 \u0633\u06cc\u06a9\u06be\u0627 \u06a9\u06c1 \u067e\u0648\u0627\u0626\u0646\u0679 \u0627\u0646 \u0679\u0627\u0626\u0645 \u0631\u06cc\u0644\u06cc\u0634\u0646\u0644 \u0686\u06cc\u06a9\u0633 \u067e\u06cc\u0686\u06cc\u062f\u06c1 \u0641\u0631\u0627\u0688 \u0627\u0633\u06a9\u06cc\u0645\u0648\u06ba \u0633\u06d2 \u06a9\u06cc\u0648\u06ba \u0645\u062d\u0631\u0648\u0645 \u0631\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u06a9\u0627\u0624\u0646\u0679\u0633 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0627\u06cc\u06a9 \u062f\u0648\u0633\u0631\u06d2 \u0633\u06d2 \u0645\u0646\u0633\u0644\u06a9 \u06af\u0631\u0627\u0641 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u06cc\u0633\u06d2 \u0645\u0627\u0688\u0644 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u060c \u0627\u0648\u0631 \u0627\u062e\u0630 \u06a9\u0631\u062f\u06c1 \u06a9\u0646\u0627\u0631\u0648\u06ba \u06a9\u0648 \u0645\u0627\u062f\u0651\u06cc \u0628\u0646\u0627 \u06a9\u0631 \u0679\u0631\u0627\u0648\u0631\u0633\u0644 \u0644\u06cc\u0679\u0646\u0633\u06cc \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u062a\u06cc\u0632 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<p>\u06c1\u0645 \u0646\u06d2 \u067e\u0627\u0646\u0686 \u0633\u0627\u0626\u0641\u0631 \u0627\u0633\u062a\u0641\u0633\u0627\u0631\u0627\u062a \u06a9\u0648 \u0628\u06be\u06cc \u0644\u0627\u06af\u0648 \u06a9\u06cc\u0627 \u06c1\u06d2 \u062c\u0648 \u0688\u067e\u0644\u06cc\u06a9\u06cc\u0679 \u0628\u0644\u0646\u06af\u060c \u0633\u0631\u06a9\u0644\u0631 \u0631\u0650\u0646\u06af\u0632\u060c \u0645\u0646\u06cc \u062e\u0686\u0631\u060c \u0633\u067e\u0644\u0627\u0626\u0631 \u06a9\u06cc \u0645\u0644\u06cc \u0628\u06be\u06af\u062a\u060c \u0627\u0648\u0631 \u063a\u06cc\u0631 \u0645\u062c\u0627\u0632 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a\u0648\u06ba \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p><em>\u0627\u0633 \u0645\u0636\u0645\u0648\u0646 \u06a9\u0627 \u0633\u0627\u062a\u06be\u06cc \u06a9\u0648\u0688 \u06cc\u06c1\u0627\u06ba \u067e\u0627\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2:<\/em> <em>github.com\/kamalct\/fraud-detection-knowledge-graphs<\/em><em>. \u062a\u0645\u0627\u0645 \u0688\u06cc\u0679\u0627 \u062a\u0631\u06a9\u06cc\u0628 \u0634\u062f\u06c1 \u0627\u0648\u0631 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u062f\u0648\u0628\u0627\u0631\u06c1 \u067e\u06cc\u062f\u0627 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/em><\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0627\u0646\u0679\u0631\u067e\u0631\u0627\u0626\u0632 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06d2 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u0645\u06cc\u06ba \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0641\u0631\u0627\u0688 \u0633\u06d2 \u0628\u0686\u0627\u0624 \u06a9\u06d2 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631\u0627\u062a \u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0644\u06cc\u0646 \u062f\u06cc\u0646 \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062c\u0628 \u06a9\u0648\u0626\u06cc \u0631\u0633\u06cc\u062f \u0622\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0627\u06cc\u06a9 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0642\u0648\u0627\u0639\u062f \u06a9\u0627 \u0627\u0646\u062c\u0646 \u0627\u0633\u06d2 \u062c\u0627\u0645\u062f \u062d\u062f\u0648\u06ba \u06a9\u06d2 \u062e\u0644\u0627\u0641 \u0686\u06cc\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0688\u0627\u0644\u0631 \u06a9\u06cc \u0631\u0642\u0645 \u0645\u0639\u0645\u0648\u0644 \u06a9\u06cc \u062d\u062f \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u06c1\u06d2\u060c \u0648\u06cc\u0646\u0688\u0631 [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-31675","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/31675","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/comments?post=31675"}],"version-history":[{"count":0,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/31675\/revisions"}],"wp:attachment":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/media?parent=31675"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/categories?post=31675"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/tags?post=31675"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}