shravanshaha/fraud-detection-engine

GitHub: shravanshaha/fraud-detection-engine

基于 Spring Boot 构建的生产级金融欺诈检测引擎,结合可配置规则引擎与 Gemini AI 实现可解释的交易风险分析与自动决策。

Stars: 0 | Forks: 0

# 欺诈检测引擎 ![Java](https://img.shields.io/badge/Java-21-orange) ![Spring Boot](https://img.shields.io/badge/Spring_Boot-3-green) ![PostgreSQL](https://img.shields.io/badge/PostgreSQL-Supabase-blue) ![Docker](https://img.shields.io/badge/Docker-Enabled-blue) ![Swagger](https://img.shields.io/badge/OpenAPI-Swagger-brightgreen) ![Gemini AI](https://img.shields.io/badge/Google-Gemini_AI-purple) 一个生产级别的**欺诈检测后端**,使用 **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 ``` ![系统架构](https://static.pigsec.cn/wp-content/uploads/repos/cas/40/40d0691d66e63005fed88ac867a243f615d2ef4fc1a2e4400fabb06380c635bd.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 ``` ![AI 调查](https://static.pigsec.cn/wp-content/uploads/repos/cas/42/42d1a148ce11cb074e02e091ee9fbd5c5c63c4ffbdff47a1a01d0d21839282d8.png) # 🗄️ 数据库 Schema 该应用程序存储账户信息、交易详情、AI 调查结果和规则评估记录。 ``` docs/database-schema.png ``` ![数据库 Schema](https://static.pigsec.cn/wp-content/uploads/repos/cas/08/08bdb959598c03ee1d1074002b99b75679709502616ff433e16bc54116dd6f34.png) # 📸 API 文档 所有 REST API 均使用 **Swagger/OpenAPI** 记录文档,便于测试和探索。 ``` docs/swagger-ui.png ``` ![Swagger UI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ce/ce8f639645a6379823aa0d0c7fe25cadef62d089e8acb1c0d65379edbec17236.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开发, 云计算, 域名枚举, 欺诈检测, 测试用例, 网络测绘, 规则引擎, 请求拦截