SivaSaiBharath/Fraud-Detection-Engine

GitHub: SivaSaiBharath/Fraud-Detection-Engine

基于 Spring Boot 的实时交易欺诈检测引擎,采用可扩展策略模式实现可插拔规则评估与账户自动锁定。

Stars: 0 | Forks: 0

# 交易监控 — 欺诈检测引擎 这是一个 Spring Boot 服务,它可以实时根据可配置的欺诈规则评估传入的交易,发出警报,并在检测到高严重性违规时自动锁定账户。 ## 概述 提交给系统的每笔交易都会: 1. 被保存为 `PENDING` 状态 2. 检查该账户的当前状态(如果账户已经是 `LOCKED` 状态则立即拒绝) 3. 由可插拔的规则引擎进行评估 4. 根据结果更新为 `SUCCESS`、`FLAGGED` 或 `REJECTED` 5. 如果违反了任何规则,将作为一条或多条 `Alert` 记录进行日志记录 发生 `HIGH` 严重性违规的账户将被自动锁定,在手动解锁之前,该账户的所有未来交易都将被阻止。 ## 架构 ``` TransactionController │ ▼ TransactionService │ ├── TransactionRepository (persist transaction) ├── AccountsRepository (fetch / lock account) ├── RuleEngine (evaluate fraud rules) │ │ │ └── List (auto-injected by Spring) │ ├── HighAmountRule │ └── ... (add more rules here) │ └── AlertsRepository (persist violations) ``` ### 规则引擎 `RuleEngine` 是一个 `@Component`,在其构造函数中接收一个 `List`。Spring 会自动收集应用程序上下文中每个带有 `@Component` 注解的 `FraudRule` 实现并将它们注入 —— 无需手动连接。添加新的欺诈检查非常简单,只需创建一个实现 `FraudRule` 的新类即可。 ``` public interface FraudRule { RuleViolation check(Transaction txn, Accounts account); } ``` `RuleEngine.evaluate(txn, account)` 会通过每个已注册的规则运行交易和账户,并将所有触发的违规收集到一个 `List` 中。 ## 实体 | 实体 | 表 | 用途 | |---|---|---| | `Transaction` | `transaction` | 单个借记/贷记请求,具有状态生命周期 | | `Accounts` | `accounts` | 账户余额、持有人信息和锁定状态 | | `Alerts` | `alerts` | 每次规则违规对应一行记录,关联到某笔交易 | ### 交易状态生命周期 ``` PENDING → SUCCESS (no violations) PENDING → FLAGGED (violation(s), action = ALERT_ONLY) PENDING → REJECTED (violation with action = LOCK_ACCOUNT, OR account already LOCKED) ``` ### 账户状态 ``` ACTIVE → LOCKED (triggered by any HIGH severity violation) ``` ## 欺诈规则 | 规则 | 触发条件 | 严重性 | 操作 | |---|---|---|---| | `HighAmountRule` | `amount > 50000` | `MEDIUM` | `ALERT_ONLY` | ## API ### `POST /requestTxn` 提交一笔新交易进行欺诈评估。 **请求体** ``` { "accountId": 1, "amount": 75000.00, "type": "DEBIT", "location": "Hyderabad" } ``` **响应** ``` { "id": 6, "accountId": 1, "amount": 75000.0, "type": "DEBIT", "location": "Hyderabad", "status": "FLAGGED", "flagged": true, "timestamp": "2026-06-21T23:49:13.7073483" } ``` 如果账户已经是 `LOCKED` 状态,交易将被立即拒绝且不会评估任何规则: ``` { "id": 7, "status": "REJECTED", "flagged": false } ``` ## 技术栈 - Java + Spring Boot - Spring Data JPA / Hibernate - MySQL - Lombok ## 快速开始 1. 在 `application.properties`(或 `.yml`)中配置你的 MySQL 连接: spring.datasource.url=jdbc:mysql://localhost:3306/transaction_monitor spring.datasource.username=your_username spring.datasource.password=your_password spring.jpa.hibernate.ddl-auto=update 2. 构建并运行: ./mvnw spring-boot:run 3. 发送一笔测试交易: curl -X POST http://localhost:8080/requestTxn \ -H "Content-Type: application/json" \ -d '{"accountId":1,"amount":75000.00,"type":"DEBIT","location":"Hyderabad"}' ## 路线图 - [ ] 附加的欺诈规则(频率检查、地理位置不匹配、异常时间段) - [ ] 统一严重性与操作作为账户锁定的单一事实来源 - [ ] 用于手动解锁账户的端点 - [ ] 用于列出/解决警报的端点 - [ ] `/requestTxn` 上的身份验证 ## 说明 这是一个学习/作品集项目,用于展示 Spring Boot 中的可插拔规则引擎模式 —— 而非生产级别的强健欺诈检测系统。账户查找仅在服务端通过 `accountId` 进行;账户状态绝不从请求体中获取。
标签:JS文件枚举, Spring Boot, 云计算, 反欺诈, 域名枚举, 实时交易监控, 规则引擎