Объединение всех
разделов в цельный генератор
Репозиторий проекта:
Ссылка
Диаграммы: Подробная диаграмма структуры генератора
Цельный генератор - скрипт
run_generator.py
, объединяющий в себе все разделы
генерации: легальные транз., compromised фрод, дропы. Это единая входная
точка. На выходе будет единый файл со всеми транзакциями.
Ноутбук:
Логика
run_generator.py
- загрузка всех конфигов из
config/
- валидация конфигов при помощи
ConfigsValidator
- создание директории под текущий запуск
- поочередное создание объектов-оркестраторов каждого раздела
генерации и запуск генерации для каждого раздела.
Порядок:
- создать объект
LegitRunner
, запустить генерацию
легальных транзакций
- после, создать объект
ComprRunner
, запустить генерацию
compromised fraud транзакций
- после, создать объект
DropsRunner
для дропов
распределителей, запустить генерацию транзакций
- после, создать объект
DropsRunner
для дропов
покупателей, запустить генерацию транзакций
- создание объекта
AllTxnsRecorder
на основании конфиг
файлов и пути директории текущего запуска
- сборка единого датафрейма и запись в файл в две директории: текущего
запуска и последнего запуска при помощи метода
AllTxnsRecorder.build_and_write()
- Вывод сообщения о том где искать конечный файл со сгенерированными
транзакциями
Валидация конфигураций в
yaml
файлах
Класс ConfigsValidator
.
Основной функционал
- валидация некоторых конфигураций в
yaml
файлах из папки
configs/
.
- подразумевается использование в начале запуска генератора перед
генерацией транзакций, чтобы избежать случаев когда часть данных
сгенерируется, а потом из-за невыполнимых конфигов будет ошибка и
генерация не завершится, но время будет потрачено. Особенно это
актуально если успешно сгенерировались легальные транзакции, которые
генерируются самыми первыми и дольше всего, при том значительно дольше
других разделов генерации; а потом ошибка в генерации compromised фрода
или дроп фрода из-за того что их конфиги невыполнимы.
- Например, легальные транзакции и compromised fraud использовали всех
клиентов под свою генерацию либо просто слишком много и для
выставленного в конфигах желаемого процента дроп фрода, клиентов уже не
хватает, следовательно, выходит ошибка, но время уже потрачено на
генерацию легальных и compromised, и приходится менять конфиги и
запускать заново. И если конфиги снова невыполнимы, то снова тратится
время на генерацию прежде чем все “упадет”.
- также тексты ошибок валидатора помогают быстрее понять, что дело в
конфигах и в каких именно
Примеры частей валидации:
- валидация compromised client fraud rate. Клиентов
под compromised фрод мы берем из числа клиентов использованных для
генерации легальных транзакций. Но в отличии от легальных транзакций,
где на одного клиента много транзакций, что значит что на 3000 клиентов
можно сгенерировать например 10000 транзакций; в compromised фроде число
транзакций немногим больше числа клиентов т.к. генерация под все
антифрод правила кроме одного подразумевает 1 транзакцию на 1 клиента.
Если fraud rate в конфигах слишком высок или входящий в него compromised
fraud rate слишком высок или и то и другое, то может случиться, что
клиентов для фрода, нужно больше чем было задействовано клиентов под
легальные транзакции.
- валидация drop rate. Под дропов берутся клиенты не
задействованные в генерации легальных и compromised fraud транзакций.
Следовательно, может быть так, что легальные и compromised возьмут
слишком много клиентов и для генерации drop rate процента транзакций
клиентов уже не хватит
Запись всех
созданных транзакций в единый файл
Класс AllTxnsRecorder
Основная логика
- когда сгенерированы транзакции всех разделов:
- читает транзакции из всех отдельных файлов каждого раздела
- создает из них единый датафрейм и сортирует по времени
транзакции
- пишет датафрейм в
parquet
файл в две директории