ricardohsmello/fraud-detection-streams-vector

GitHub: ricardohsmello/fraud-detection-streams-vector

一个基于 Kafka Streams 的实时欺诈检测演示项目,结合规则引擎与行为嵌入对银行卡交易进行风险评估。

Stars: 1 | Forks: 0

# 欺诈检测 实时欺诈检测流水线,使用 Kafka Streams、行为嵌入和基于规则的防护机制对银行卡交易进行评分 —— 无需训练自定义模型。 ## 幻灯片 https://mdb.link/devnexus/fraud-detection-presentation ## 技术栈 - Java 21 - Spring Boot 4 - Kafka Streams - MongoDB *(即将推出)* - Voyage AI *(嵌入生成)* ## Kafka Topics | Topic | 描述 | |-------|-------------| | `transactions` | 接收所有传入交易 | | `transactions-suspicious` | 被拦截的交易(规则检测到欺诈) | | `transactions-to-score` | 批准的交易(准备进行嵌入评分) | | `transactions-dlq` | 格式错误消息的死信队列(例如,无效 JSON) | ## 运作原理 ``` ┌─────────────────────────┐ │ transactions-suspicious │ │ (FraudAlert) │ └────────────▲────────────┘ │ YES │ ┌─────────────┐ ┌──────────────┐ ┌───────────┴───────────┐ │ Transaction │───▶│ transactions │───▶│ Kafka Streams │ └─────────────┘ └──────────────┘ │ (Fraud Rules) │ │ │ │ hasFraudAlert()? │ └───────────┬───────────┘ │ NO ┌───────────▼───────────┐ │ transactions-to-score │ │ (Transaction) │ └───────────────────────┘ ``` 1. 交易通过 REST API 发送到 `transactions` topic 2. Kafka Streams 进行处理并按卡号分组 3. 规则评估:不可能的移动、速度检查 4. **拦截** → `transactions-suspicious`(检测到欺诈) 5. **批准** → `transactions-to-score`(准备评分) 6. 格式错误的消息 → `transactions-dlq` ## 欺诈规则 | 规则 | 描述 | 示例 | |------|-------------|---------| | `IMPOSSIBLE_TRAVEL` | 同一张卡在短时间内于相距遥远的地点使用 | 5 分钟内 圣保罗 → 纽约 | | `VELOCITY_CHECK` | 在时间窗口内交易次数过多 | 1 分钟内 4+ 笔交易 | ## 运行 ### 1. 启动 Kafka ``` docker run -d --name kafka -p 9092:9092 apache/kafka:latest ``` ### 2. 创建 Topics ``` bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic transactions --partitions 1 bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic transactions-suspicious --partitions 1 bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic transactions-to-score --partitions 1 ``` ### 3. 运行应用程序 ``` ./mvnw spring-boot:run ``` ### 4. 发送交易 ``` curl -X POST http://localhost:8081/api/transactions \ -H "Content-Type: application/json" \ -d '{ "transactionId": "TXN-001", "userId": "USR-123", "merchant": "Starbucks", "city": "Sao Paulo", "transactionAmount": 25.50, "transactionTime": "2025-01-15T10:30:00Z", "cardNumber": "4444-5555-6666-7777", "latitude": -23.5489, "longitude": -46.6388 }' ``` ### 5. 查看可疑交易 ``` bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic transactions-suspicious --from-beginning ``` ### 自动生成交易 启用生成器以每秒发布一笔交易: ``` mvn spring-boot:run -Dspring-boot.run.arguments="--app.generator.enabled=true" ``` 您可以使用 `--app.generator.interval-ms=1000` 覆盖间隔时间。 ## 测试欺诈检测 **不可能的移动:** 快速连续发送两张来自遥远地点的同一张卡的交易(例如,圣保罗 → 纽约)。 **速度检查:** 在 1 分钟内使用同一张卡发送 4+ 笔交易。 有关示例请求,请参阅 `src/main/resources/http/fraud-detection.http`。
标签:DNS 反向解析, Java 21, Kafka Streams, MongoDB, Spring Boot, Voyage AI, 云计算, 交易监控, 信用卡风控, 反欺诈系统, 可解释性AI, 向量搜索, 域名枚举, 实时风控, 异常检测, 支付安全, 无模型AI, 欺诈检测, 流式计算, 行为嵌入, 规则引擎, 请求拦截, 金融科技, 风险评分