81 lines
1.9 KiB
Markdown
81 lines
1.9 KiB
Markdown
|
|
# Global AML & Sanctions Engine (GASE)
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
GASE is the global AML and sanctions engine providing sovereign sanctions list synchronization, automated risk tiering of transactions, PEP graph linking, and Suspicious Activity Score (SAS) calculation.
|
||
|
|
|
||
|
|
## Core Functions
|
||
|
|
|
||
|
|
- **Sovereign Sanctions List Synchronization**: Unified sanctions list from OFAC, EU, UN, etc.
|
||
|
|
- **Automated Risk Tiering**: Assign risk tiers (TIER_1 to TIER_4) to entities
|
||
|
|
- **PEP Graph Linking**: Graph structure for Politically Exposed Persons and relationships
|
||
|
|
- **Suspicious Activity Score (SAS)**: Multi-factor risk scoring for transactions
|
||
|
|
|
||
|
|
## Sanctions Matching Logic
|
||
|
|
|
||
|
|
```
|
||
|
|
if fuzzy_match(entity.name, sanctions_list) > 0.93:
|
||
|
|
block_transaction()
|
||
|
|
```
|
||
|
|
|
||
|
|
## API Endpoints
|
||
|
|
|
||
|
|
### Synchronize Sanctions
|
||
|
|
```http
|
||
|
|
POST /api/v1/gase/sanctions/sync
|
||
|
|
```
|
||
|
|
|
||
|
|
### Search Sanctions
|
||
|
|
```http
|
||
|
|
POST /api/v1/gase/sanctions/search
|
||
|
|
```
|
||
|
|
|
||
|
|
### Add PEP
|
||
|
|
```http
|
||
|
|
POST /api/v1/gase/pep/add
|
||
|
|
```
|
||
|
|
|
||
|
|
### Find PEP Connections
|
||
|
|
```http
|
||
|
|
GET /api/v1/gase/pep/:entityId/connections?maxDepth=2
|
||
|
|
```
|
||
|
|
|
||
|
|
### Calculate SAS
|
||
|
|
```http
|
||
|
|
POST /api/v1/gase/sas/calculate
|
||
|
|
GET /api/v1/gase/sas/:transactionId
|
||
|
|
```
|
||
|
|
|
||
|
|
### Risk Tiering
|
||
|
|
```http
|
||
|
|
GET /api/v1/gase/risk-tier/:entityId
|
||
|
|
POST /api/v1/gase/risk-tier/:entityId/assign
|
||
|
|
```
|
||
|
|
|
||
|
|
## Usage Example
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
import { gaseService } from '@/core/compliance/gase';
|
||
|
|
|
||
|
|
// Synchronize sanctions lists
|
||
|
|
await gaseService.syncSanctionsLists();
|
||
|
|
|
||
|
|
// Search sanctions
|
||
|
|
const matches = await gaseService.searchSanctions('entity-name', 0.93);
|
||
|
|
|
||
|
|
// Calculate SAS
|
||
|
|
const sas = await gaseService.calculateSAS(transactionId, entityId);
|
||
|
|
|
||
|
|
// Assign risk tier
|
||
|
|
const riskTier = await gaseService.assignRiskTier(entityId);
|
||
|
|
```
|
||
|
|
|
||
|
|
## Database Models
|
||
|
|
|
||
|
|
- `GlobalSanctionsList`: Unified sanctions list
|
||
|
|
- `PEPGraphNode`: PEP graph nodes
|
||
|
|
- `PEPGraphEdge`: PEP relationships
|
||
|
|
- `SuspiciousActivityScore`: SAS calculations
|
||
|
|
- `RiskTier`: Risk tier assignments
|
||
|
|
|