Skip to content

madeseor/BankRules-with-Drools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Reglas de Banco usando Drools y SpringBoot

Laboratorio N.° 2 — Fundamentos de Sistemas de Información
Universidad de Antioquia · Facultad de Ingeniería


Descripción

Este proyecto implementa un sistema de evaluación de créditos bancarios basado en reglas de negocio, desarrollado con Drools como motor de inferencia y Spring Boot como framework de aplicación.

El sistema permite evaluar solicitudes de crédito de tres tipos —personal, hipotecario y automotriz— aplicando reglas definidas en un archivo .drl (Drools Rule Language). Según los datos del cliente (puntaje crediticio, ingresos mensuales, edad) y el tipo de crédito solicitado, el motor de reglas determina automáticamente si la solicitud es aprobada o rechazada, el monto aprobado y la tasa de interés correspondiente.

Como característica adicional, el proyecto integra Spring AI con GPT-4o-mini (OpenAI) para generar explicaciones en lenguaje natural sobre las decisiones tomadas por Drools.

La aplicación expone tanto una interfaz web con formularios (Thymeleaf) como una API REST para integración con otros sistemas.


Reglas de negocio implementadas

Regla Condición Resultado
RejectLowCreditScore Puntaje crediticio < 500 Rechazado
RejectUnderAge Edad < 18 años Rechazado
PersonalCreditApproval Tipo: personal · Score ≥ 500 · Ingreso ≥ $1.000 Aprobado
MortgageCreditApproval Tipo: hipotecario · Score ≥ 600 · Ingreso ≥ $3.000 Aprobado
AutoCreditApproval Tipo: automotriz · Score ≥ 550 · Ingreso ≥ $1.500 Aprobado
RejectInvalidCreditType No cumple requisitos mínimos Rechazado con mensaje

Herramientas y versiones

Herramienta Versión
Java 17
Spring Boot 3.5.11
Drools (motor de reglas) 7.74.1.Final
Spring AI 1.1.3
Maven Incluido vía Maven Wrapper (mvnw)
Thymeleaf Gestionado por Spring Boot

Dependencias principales

Todas las dependencias se gestionan en el archivo pom.xml:

Dependencia Descripción
spring-boot-starter-web API REST y servidor web embebido
spring-boot-starter-thymeleaf Motor de plantillas HTML para la interfaz web
spring-boot-starter-validation Validación de datos de entrada
spring-boot-devtools Recarga automática en desarrollo
drools-core Núcleo del motor de reglas Drools
drools-compiler Compilador de archivos .drl
drools-mvel Soporte para expresiones MVEL en reglas
drools-decisiontables Soporte para tablas de decisión
kie-api API de KIE para gestión de sesiones Drools
spring-ai-starter-model-openai Integración con modelos de OpenAI (GPT-4o-mini)
spring-boot-starter-test Pruebas unitarias e integración

Estructura del proyecto

bankrules/
├── src/
│   └── main/
│       ├── java/com/udea/bankrules/
│       │   ├── BankrulesApplication.java            # Punto de entrada
│       │   ├── config/
│       │   │   └── DroolsConfig.java                # Configuración del KieContainer
│       │   ├── controller/
│       │   │   └── CreditEvaluationController.java  # Endpoints web y REST
│       │   ├── model/
│       │   │   ├── Customer.java                    # Datos del cliente
│       │   │   ├── CreditRequest.java               # Solicitud de crédito
│       │   │   └── CreditResponse.java              # Respuesta del sistema
│       │   ├── service/
│       │   │   └── CreditEvaluationService.java     # Lógica de evaluación con Drools
│       │   └── ai/
│       │       └── AIExplanationService.java        # Explicaciones con OpenAI
│       └── resources/
│           ├── rules/
│           │   └── credit_rules.drl                 # Reglas de negocio en Drools
│           ├── templates/
│           │   ├── credit_form.html                 # Formulario de solicitud
│           │   └── credit_result.html               # Resultado de la evaluación
│           └── application.yaml                     # Configuración de la app
├── pom.xml
└── mvnw / mvnw.cmd                                  # Maven Wrapper

Configuración previa

API Key de OpenAI (opcional pero recomendado)

El proyecto usa GPT-4o-mini para explicar las decisiones en lenguaje natural. Para habilitarlo, agrega tu API key en src/main/resources/application.yaml:

spring:
  ai:
    openai:
      api-key: TU_API_KEY_AQUI
      chat:
        options:
          model: gpt-4o-mini

Si no tienes API key de OpenAI, el proyecto igual funciona para evaluar créditos. Solo las explicaciones con IA no estarán disponibles.


Cómo abrir y ejecutar el proyecto en cualquier PC

Requisitos mínimos

No es necesario instalar Maven ni ningún IDE adicional. El proyecto incluye el Maven Wrapper (mvnw).


Paso 1: Clonar el repositorio

Abre una terminal (CMD, PowerShell o Terminal de Mac/Linux) y ejecuta:

git clone https://github.com/madeseor/BankRules-with-Drools.git
cd BankRules-with-Drools

Paso 2: Ejecutar la aplicación

En Linux / Mac:

./mvnw spring-boot:run

En Windows:

mvnw.cmd spring-boot:run

La primera vez descargará todas las dependencias automáticamente. Espera hasta ver en consola:

Started BankrulesApplication in X.XXX seconds

Paso 3: Acceder a la aplicación

Abre tu navegador y ve a:

http://localhost:8080/credit/form

Verás el formulario para ingresar los datos del cliente y solicitar la evaluación de crédito.


Alternativa: Abrir con IntelliJ IDEA

  1. Abre IntelliJ IDEA.
  2. Selecciona File → Open y elige la carpeta del proyecto clonado.
  3. IntelliJ detectará automáticamente el proyecto Maven y descargará las dependencias.
  4. Espera a que termine de indexar.
  5. Ejecuta la clase BankrulesApplication.java haciendo clic en el botón ▶.
  6. Accede en el navegador a http://localhost:8080/credit/form.

Endpoints disponibles

Método URL Descripción
GET /credit/form Formulario web de solicitud de crédito
POST /credit/evaluate Procesa la solicitud desde el formulario web
POST /credit/api/evaluate API REST — recibe JSON, retorna JSON

Ejemplo de llamada a la API REST

POST /credit/api/evaluate
Content-Type: application/json

{
  "customer": {
    "name": "Ana Torres",
    "age": 30,
    "monthlyIncome": 4000,
    "creditScore": 720
  },
  "creditType": "hipotecario",
  "requestAmount": 150000
}

Autor: Maria del Carmen Segura Ortiz

About

Rule-based bank credit evaluation system built with Drools and Spring Boot. It processes personal, mortgage, and auto loan applications and uses Spring AI (GPT-4o-mini) to generate natural language explanations.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors