Neo4j · Neo4j 5.26.20
Деньги гоняют по кругу, чтобы «состарить» счета и запутать проверку: счёт A переводит B, B — C, C — обратно A. Антифрод Т‑Банка ищет такие круги.
Граф: (:Account {id})-[:TRANSFER {amount, at}]->(:Account), amount в рублях, at — datetime.
Круг — путь из 2–4 переводов, который возвращается на исходный счёт. Все переводы в нём ≥ 50 000 ₽, каждый следующий позже предыдущего, последний — не позже чем через 24 часа после первого. Верните счета, с которых круг начался (первый перевод), и hops — длину самого короткого такого круга. Порядок — по account.
В работе: Правило антифрода на графе переводов: поиск колец.
Источник: на данных банка: переводы между счетами. Условие пересказано своими словами.
Какой запрос найдёт счета, запустившие круг?
- any(amount ≥ 50 000), порядок и сутки проверяются
- all(amount ≥ 50 000), без проверки времени
- all по суммам, переводы по возрастанию времени, окно 24 часа, *2..4
- то же, но *1..4