shravanshaha/fraud-detection-engine
GitHub: shravanshaha/fraud-detection-engine
基于 Spring Boot 构建的生产级金融欺诈检测引擎,结合可配置规则引擎与 Gemini AI 实现可解释的交易风险分析与自动决策。
Stars: 0 | Forks: 0
# 欺诈检测引擎






一个生产级别的**欺诈检测后端**,使用 **Java Spring Boot** 构建,通过结合 **Google Gemini AI** 以实现可解释的欺诈分析的 **基于规则的欺诈检测引擎** 来分析金融交易。
该应用程序根据多条欺诈检测规则评估金融交易,计算风险评分,将交易分类为 **ALLOWED**(允许)、**REVIEW**(审查)或 **BLOCKED**(拦截),存储完整的欺诈审计记录,并生成 AI 驱动的解释和调查建议。
# ⭐ 项目亮点
- 使用 **Spring Boot 3** 和 **Java 21** 构建了生产级别的欺诈检测后端
- 设计了用于欺诈风险评估的模块化 **规则引擎**
- 集成 **Google Gemini AI** 以生成可解释的欺诈分析和建议
- 实现了 **基于数据库的 AI 调查缓存** 以降低延迟和 AI API 使用量
- 提供使用 **Swagger/OpenAPI** 记录文档的 REST API
- 使用 **Docker** 容器化,并使用 **PostgreSQL (Supabase)** 部署在 **Render** 上
# 🚀 在线演示
### API Base URL
https://fraud-detection-engine-htxl.onrender.com
### Swagger 文档
https://fraud-detection-engine-htxl.onrender.com/swagger-ui/index.html
# 🏗️ 系统架构
该应用程序将确定性的 **基于规则的欺诈检测引擎** 与 **Google Gemini AI** 相结合,以提供可解释的欺诈分析,同时确保 AI 永远不会影响欺诈决策本身。
```
docs/architecture.png
```

# ✨ 功能
- 基于规则的欺诈检测引擎
- 欺诈风险评分计算
- 交易分类
- ALLOWED
- REVIEW
- BLOCKED
- 包含完整规则评估历史的欺诈审计追踪
- AI 生成的欺诈解释
- AI 生成的欺诈调查建议
- 专用的 AI 欺诈调查端点
- 基于数据库的 AI 调查缓存
- AI 服务不可用时的优雅降级
- 账户管理 API
- 使用 Swagger/OpenAPI 记录文档的 REST API
- 使用 Jakarta Validation 进行请求验证
- 全局异常处理
- 使用 SLF4J 进行结构化日志记录
- 使用 Spring Profiles 进行环境特定配置
- Dockerized 部署
- 使用 JUnit 5 和 Mockito 进行单元测试
# 🛠️ 技术栈
## 后端
- Java 21
- Spring Boot 3
- Spring Data JPA
- Hibernate ORM
- Maven
## AI
- Google Gemini API
- Google GenAI Java SDK
## 数据库
- MySQL 8(本地开发)
- PostgreSQL(生产环境)
- Supabase
## 测试
- JUnit 5
- Mockito
## DevOps
- Docker
- Render
- Spring Profiles
- 环境变量
# 🧠 欺诈检测规则
### 金额偏差规则
检测与预期支出相比异常庞大的交易。
### 商家黑名单规则
检测涉及已知欺诈商家的交易。
### 频率规则
检测短时间内可疑的交易频率。
# 🤖 AI 欺诈调查
每笔已处理的交易都可以使用 **Google Gemini AI** 进行调查。
AI 提供:
- 人类易读的欺诈解释
- 专业的调查建议
- 结合上下文的推理
- 基于数据库缓存的调查结果
- AI 不可用时的优雅降级
AI 层**永远不会决定交易是否具有欺诈性**。规则引擎始终做出最终的欺诈决策。
## 📸 AI 调查示例
```
docs/ai-investigation.png
```

# 🗄️ 数据库 Schema
该应用程序存储账户信息、交易详情、AI 调查结果和规则评估记录。
```
docs/database-schema.png
```

# 📸 API 文档
所有 REST API 均使用 **Swagger/OpenAPI** 记录文档,便于测试和探索。
```
docs/swagger-ui.png
```

# 📌 REST API 端点
## 账户 API
| Method | Endpoint | Description |
| ------ | -------------------- | -------------- |
| POST | `/api/accounts` | 创建账户 |
| GET | `/api/accounts/{id}` | 获取账户 |
## 交易 API
| Method | Endpoint | Description |
| ------ | ------------------- | ---------------------------------------------- |
| POST | `/api/transactions` | 处理交易并执行欺诈分析 |
## AI 调查 API
| Method | Endpoint | Description |
| ------ | ------------------------------------ | ---------------------------------------------- |
| GET | `/api/investigation/{transactionId}` | 生成 AI 驱动的欺诈调查报告 |
# ⚙️ 本地设置
## 前置条件
- Java 21
- Maven
- Docker Desktop
## 克隆仓库
```
git clone https://github.com/shravanshaha/fraud-detection-engine.git
cd fraud-detection-engine
```
## 启动 MySQL
```
docker run --name fraud_mysql \
-p 3307:3306 \
-e MYSQL_ROOT_PASSWORD= \
-e MYSQL_DATABASE=fraud_db \
-e MYSQL_USER= \
-e MYSQL_PASSWORD= \
-d mysql:8.0
```
## 配置环境变量
使用您的本地数据库凭据更新 `application-dev.properties`(或创建一个)。
```
spring.datasource.url=YOUR_DATABASE_URL
spring.datasource.username=YOUR_DATABASE_USERNAME
spring.datasource.password=YOUR_DATABASE_PASSWORD
gemini.api.key=YOUR_GEMINI_API_KEY
```
## 运行应用程序
```
mvn spring-boot:run
```
应用程序
```
http://localhost:8080
```
Swagger
```
http://localhost:8080/swagger-ui/index.html
```
# 🌐 生产环境部署
该应用程序使用 **Docker** 部署在 **Render** 上,并连接到托管在 **Supabase** 上的 **PostgreSQL** 数据库。
生产环境配置使用以下方式管理:
- Spring Profiles
- 环境变量
- Docker 容器
# 📋 日志与监控
应用程序日志包括:
- 交易处理
- 欺诈规则执行
- 风险评分计算
- AI 服务调用
- 数据库持久化
- 应用程序启动事件
生产日志可通过 Render 仪表板查看。
# 🚀 未来改进
- JWT 身份验证与基于角色的授权
- 基于 Redis 的分布式缓存
- 基于 Apache Kafka 的事件驱动交易处理
- 交互式欺诈分析仪表板
- 电子邮件/短信欺诈警报
- Prometheus & Grafana 监控
- Kubernetes 部署
# 👨💻 作者
**Shravan Shaha**
## 联系方式
- GitHub: https://github.com/shravanshaha
- LinkedIn: https://www.linkedin.com/in/shravan-shaha/
标签:AI应用, Spring Boot, Syscall, Web开发, 云计算, 域名枚举, 欺诈检测, 测试用例, 网络测绘, 规则引擎, 请求拦截