Automated Action 4730c37915 Implement comprehensive transaction fraud monitoring API
- Created FastAPI application with transaction ingestion endpoints
- Built dynamic rule engine supporting velocity checks and aggregations
- Implemented real-time and batch screening capabilities
- Added rule management with versioning and rollback functionality
- Created comprehensive audit and reporting endpoints with pagination
- Set up SQLite database with proper migrations using Alembic
- Added intelligent caching for aggregate computations
- Included extensive API documentation and example rule definitions
- Configured CORS, health endpoints, and proper error handling
- Added support for time-windowed aggregations (sum, count, avg, max, min)
- Built background processing for high-volume batch screening
- Implemented field-agnostic rule conditions with flexible operators

Features include transaction ingestion, rule CRUD operations, real-time screening,
batch processing, aggregation computations, and comprehensive reporting capabilities
suitable for fintech fraud monitoring systems.
2025-06-27 16:00:48 +00:00

34 lines
1.5 KiB
Python

from sqlalchemy import Column, Integer, String, Text, Boolean, DateTime
from sqlalchemy.sql import func
from app.db.base import Base
class Rule(Base):
__tablename__ = "rules"
id = Column(Integer, primary_key=True, index=True)
name = Column(String, unique=True, index=True, nullable=False)
description = Column(Text, nullable=True)
rule_type = Column(String, nullable=False) # velocity, amount_limit, blacklist, pattern, etc.
conditions = Column(Text, nullable=False) # JSON string with rule conditions
actions = Column(Text, nullable=False) # JSON string with actions to take
priority = Column(Integer, default=1) # Higher number = higher priority
is_active = Column(Boolean, default=True)
version = Column(Integer, default=1)
created_by = Column(String, nullable=True)
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
class RuleVersion(Base):
__tablename__ = "rule_versions"
id = Column(Integer, primary_key=True, index=True)
rule_id = Column(Integer, nullable=False, index=True)
version = Column(Integer, nullable=False)
name = Column(String, nullable=False)
description = Column(Text, nullable=True)
rule_type = Column(String, nullable=False)
conditions = Column(Text, nullable=False)
actions = Column(Text, nullable=False)
priority = Column(Integer, default=1)
created_by = Column(String, nullable=True)
created_at = Column(DateTime(timezone=True), server_default=func.now())