import os import sys import pandas as pd from src.core.config_loader import load_config from src.generators.user_generator import generate_users from src.generators.transaction_generator import generate_transactions from src.fraud.fraud_engine import FraudEngine from src.risk.risk_engine import apply_risk_engine def main(): config = load_config("config/default.yaml") difficulty = sys.argv[1] if len(sys.argv) > 1 else "medium" print("Generating users...") users = generate_users(config) print("Generating transactions...") df = generate_transactions(users, config) print("Applying risk engine...") df = apply_risk_engine(df, users, config) print(f"Applying fraud engine (difficulty={difficulty})...") engine = FraudEngine(difficulty=difficulty) df = engine.apply(df) df = df.sort_values("timestamp").reset_index(drop=True) os.makedirs("data/processed", exist_ok=True) print("Saving dataset...") df.to_csv("data/processed/transactions.csv", index=False) users.to_csv("data/processed/users.csv", index=False) print("Dataset generation complete") print(f"Transactions: {len(df)}") print(f"Users: {len(users)}") if __name__ == "__main__": main()