sushmayella/Fraud-Detection-Pipeline
GitHub: sushmayella/Fraud-Detection-Pipeline
基于 Kafka Streams 和 Spring Boot 构建的实时事件驱动欺诈检测管道,采用规则引擎与机器学习混合评分策略实现低延迟交易风控。
Stars: 0 | Forks: 0
# 欺诈检测平台
[](https://github.com/sushmayella/Fraud-Detection-Pipeline/actions/workflows/ci.yml)




## 项目简介
一个基于 Kafka、Kafka Streams 以及混合规则加机器学习决策模型构建的生产级欺诈检测系统。该项目作为一个学习和作品集项目而设计,其架构反映了在 Stripe、Visa 或 Capital One 等支付公司中常见的模式,并通过 Docker Compose 缩减至适合开发者笔记本电脑运行的规模。
**核心理念:**
- **事件驱动。** 服务之间通过 Kafka 主题进行通信,而非直接调用。每一笔交易、特征集和决策都是不可变且可重放的事件。
- **混合决策。** 确定性规则捕获已知的欺诈模式;机器学习评分则捕获新模式。组合策略将这两种信号融合在一起(参见 [ADR-0005](./docs/adr/))。
- **可审计。** 每一项决策都会记录触发了哪些规则、机器学习的概率是多少,以及输入的特征有哪些。没有任何黑盒。
- **可观测。** 包含来自每个服务的指标、链路追踪和结构化日志。提供预构建的 Grafana 仪表盘。
## 系统架构
```
Client → Ingestion API → Kafka → Feature Extractor → Kafka
↓
┌───────┴───────┐
↓ ↓
Rule Engine ML Scorer
↓ ↓
└──────┬────────┘
↓
Decision Engine → Postgres
↓
Action Service
```
有关不变量、故障模式、完整的组件分解和扩展说明,请参见 [`docs/ARCHITECTURE.md`](./docs/ARCHITECTURE.md)。有关正常路径、机器学习超时和死信队列(DLQ)流程,请参见 [`docs/sequence-diagrams/`](./docs/sequence-diagrams/)。
## 快速开始
```
# Clone 和 bootstrap
git clone https://github.com/sushmayella/Fraud-Detection-Pipeline.git
cd Fraud-Detection-Pipeline
mvn -pl shared/events install -DskipTests
# 启动基础设施和 ingestion 服务
docker-compose up -d
# 提交测试 transaction
curl -X POST http://localhost:8080/api/v1/transactions \
-H "Content-Type: application/json" \
-d '{
"userId": "user-42",
"cardFingerprint": "fp_abc123",
"amount": 249.99,
"currency": "USD",
"merchantId": "m-anchor-1",
"merchantCategoryCode": 5411,
"country": "US"
}'
# 观察其到达 Kafka
open http://localhost:8090 # Kafka UI
```
**服务 URL**(堆栈启动后):
| 服务 | URL | 备注 |
|--------------------|------------------------------------------|---------------------------|
| 数据接入 API (Ingestion API) | http://localhost:8080/swagger-ui.html | OpenAPI 文档 |
| Kafka UI | http://localhost:8090 | Topic 浏览器 |
| Schema Registry | http://localhost:8081 | Avro schemas |
| Prometheus | http://localhost:9090 | 原始指标 |
| Grafana | http://localhost:3000 (admin/admin) | 预构建仪表盘 |
| Postgres | `localhost:5432` (fraud/fraud_local) | |
## 项目状态
本仓库正在逐步构建中。该路线图如实反映了已完成与进行中的工作。
### 已交付 (阶段 1)
- [x] 数据接入 API — Spring Boot 3, Avro + Schema Registry, 幂等 Kafka producer
- [x] 共享 Avro 事件 schemas (`Transaction`, `EnrichedTransaction`, `Decision`)
- [x] 完整的项目脚手架 — Maven 多模块, Docker Compose 堆栈, GitHub Actions CI
- [x] 使用 Testcontainers 进行集成测试
- [x] OpenAPI / Swagger UI
- [x] 架构文档 + 3 个 ADR
- [x] JaCoCo 覆盖率门禁设定为 80%
### 进行中 (阶段 2)
- [ ] **特征提取器 (Feature Extractor)** — 用于速率、z-score 和地理增量特征的 Kafka Streams 拓扑
- [ ] **规则引擎** — YAML DSL 评估器 ([ADR-0003](./docs/adr/0003-rule-engine-dsl.md))
- [ ] **ML 评分器** — 基于 IEEE-CIS 数据集的逻辑回归 Python FastAPI 服务
- [ ] **决策引擎** — Kafka Streams 窗口连接,Postgres 持久化
- [ ] **查询 API** — 用于历史决策的只读 REST API
### 计划中 (阶段 3)
- [ ] 带有 Resilience4j 重试 + DLQ 的 Action 服务
- [ ] Grafana 仪表盘(流水线、各服务、特征分布)
- [ ] 使用 k6 进行负载测试
- [ ] Kubernetes manifests + Helm chart
## 技术栈
- **JVM:** Java 17, Spring Boot 3.2, Spring Kafka
- **流处理:** Kafka 3.6, Kafka Streams, Confluent Schema Registry, Avro
- **数据:** PostgreSQL 16, Redis 7
- **机器学习:** Python 3.11, FastAPI, scikit-learn *(阶段 2)*
- **可观测性:** Micrometer, Prometheus, Grafana, OpenTelemetry
- **构建与 CI:** Maven, Docker, GitHub Actions, JaCoCo (80% 覆盖率门禁), Spotless
- **测试:** JUnit 5, AssertJ, Mockito, Testcontainers, Kafka Streams `TopologyTestDriver`
## 设计决策
[`docs/adr/`](./docs/adr/) 中的架构决策记录(ADR)详细说明了关键选择背后的*原因*:
- [**ADR-0001**](./docs/adr/0001-kafka-over-rabbitmq.md) — 选择 Kafka 而非 RabbitMQ 作为事件主干
- [**ADR-0002**](./docs/adr/0002-kafka-streams-over-flink.md) — 选择 Kafka Streams 而非 Flink 进行流处理
- [**ADR-0003**](./docs/adr/0003-rule-engine-dsl.md) — 选择内部规则 DSL 而非 Drools
## 开发
有关设置、提交约定、PR 预期和测试工作流,请参见 [`CONTRIBUTING.md`](./CONTRIBUTING.md)。
```
mvn test # unit tests
mvn verify # unit + integration (Testcontainers)
mvn spotless:apply # auto-format
```
## 许可证
MIT — 详见 [`LICENSE`](./LICENSE)。
由 [Sushma Yella](https://github.com/sushmayella) 构建。灵感来源于在 Capital One、Visa 和 Walmart 的支付与通知平台方面的先前工作。
标签:Apache Kafka, API集成, DNS解析, Docker Compose, FinTech, Grafana, Java 17, Kafka Streams, MIT许可, Postgres, Spring Boot, Stripe风格架构, 事件溯源, 事件驱动架构, 云计算, 亚200毫秒延迟, 交易监控, 低延迟, 可观测性, 域名枚举, 实时反欺诈, 实时数据处理, 实时计算, 审计跟踪, 开源项目, 微服务架构, 搜索引擎查询, 支付风控, 数据管道, 机器学习评分, 欺诈检测, 流处理, 测试用例, 混合决策, 混合模型, 特征提取, 用户代理, 组合策略, 自定义请求头, 规则引擎, 请求拦截, 软件工程, 逆向工具, 金融科技, 风控系统