Skip to content

luisHidalgo-git/CapitalOneFintech

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sistema Inteligente de Gestión Financiera Personal

Sistema backend con inteligencia artificial que ayuda a los usuarios a gestionar sus finanzas personales, evaluar gastos en tiempo real y recibir recomendaciones personalizadas basadas en su historial de pagos.

Características Principales

  • Evaluación Inteligente de Gastos: Analiza cada transacción considerando tu saldo, suscripciones activas y patrones de gasto
  • Recomendaciones Personalizadas: La IA aprende de tu historial y ofrece consejos específicos para tu situación
  • Gestión de Pagos: Registra y controla todos tus pagos con historial completo
  • Alertas Inteligentes: Recibe advertencias cuando un gasto puede comprometer tu estabilidad financiera
  • API REST: Endpoints completos para integración con cualquier frontend

Tecnologías

  • Backend: Flask (Python)
  • Base de Datos: MySQL con SQLAlchemy ORM
  • IA: OpenAI GPT-4o-mini (con fallback inteligente)
  • Análisis: Sistema de evaluación basado en patrones de comportamiento

Instalación

Requisitos Previos

  • Python 3.8 o superior
  • MySQL Server instalado y en ejecución
  • (Opcional) API key de OpenAI para mensajes personalizados con GPT

Paso 1: Clonar el Repositorio

git clone <url-del-repositorio>
cd <nombre-del-proyecto>

Paso 2: Crear Entorno Virtual

python -m venv venv

2. Registrar un Pago

Endpoint: POST /api/pago

Notas: Este endpoint requiere un usuario autenticado (usa la sesión). No envíes idUser en el cuerpo: el servidor toma el usuario desde la sesión.

Body (JSON) — campos principales:

{
    "motivo": "Compra de supermercado",
    "monto": 250.5,
    "tipo": "debito",            
    "categoria": "hogar",        
    "metodo": "tarjeta",        
    "referencia": "xxxx-1234",  
    "notas": "Compra semanal"
}

Respuesta:

{
    "mensaje": "Movimiento registrado",
    "pago_id": 15,
    "tipo": "debito",
    "categoria": "hogar",
    "metodo": "tarjeta",
    "nuevo_saldo": 3949.5,
    "nueva_deuda_credito": 0.0
}

Activar el entorno virtual:

  • Windows: venv\Scripts\activate
  • Linux/Mac: source venv/bin/activate

Paso 3: Instalar Dependencias

### 3. Consultar Saldo

**Endpoint**: `GET /api/saldo`

**Notas**: Esta ruta utiliza la sesión autenticada para determinar el usuario actual. Debes iniciar sesión (o enviar la cookie de sesión) antes de consultar el saldo. No acepta `user_id` en la URL.

**Respuesta**:

```json
{
        "idUser": 1,
        "saldo": 3949.5,
        "deuda_credito": 1200.0,
        "moneda": "MXN"
}

pip install -r requirements.txt


### Paso 4: Configurar Variables de Entorno

Crea un archivo `.env` en la raíz del proyecto con las siguientes variables:

```env
MYSQL_USER=tu_usuario
MYSQL_PASS=tu_contraseña
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_DB=bancodigital

OPENAI_API_KEY=tu_api_key_opcional

Nota: Si no configuras OPENAI_API_KEY, el sistema usará un generador de mensajes inteligente local que también analiza tu historial.

Paso 5: Iniciar la Aplicación

### 4. Crear Nuevo Usuario

**Endpoint**: `POST /api/register`

**Body** (JSON) — campos requeridos/esperados:

```json
{
    "nombre": "María López",
    "apellido": "Pérez",
    "correo": "maria@example.com",
    "contrasena": "secreto123",
    "numeroTelefono": "5550001111",    
    "biometricos": "opcional",
    "saldo_inicial": 5000.0
}

Notas:

  • El campo obligatorio para el correo se llama correo (no email).
  • La contraseña debe enviarse en contrasena y tener al menos 4 caracteres.
  • saldo_inicial es opcional (por defecto 0).

Respuesta (201):

{
    "mensaje": "Usuario registrado exitosamente",
    "usuario": {
        "idUser": 2,
        "nombre": "María López",
        "apellido": "Pérez",
        "correo": "maria@example.com",
        "saldo_inicial": 5000.0
    }
}

python app.py


La aplicación creará automáticamente la base de datos y las tablas necesarias en el primer inicio.

El servidor estará disponible en: `http://127.0.0.1:5000`

## Uso de la API

### 1. Evaluar un Gasto (con IA)

**Endpoint**: `POST /api/evaluar`

**Body**:

```json
{
    "idUser": 1,
    "saldo": 4200.0,
    "suscripciones": 3,
    "esencial": false,
    "nuevo_gasto": 1500.0
}

Respuesta con alerta:

{
    "alerta": true,
    "mensaje": "⚠️ Este gasto representa el 35.7% de tu saldo. Basándome en tus últimos pagos..."
}

Respuesta sin alerta:

{
    "alerta": false
}

2. Registrar un Pago

Endpoint: POST /api/pago

Body:

{
    "idUser": 1,
    "motivo": "Compra de supermercado",
    "monto": 250.5
}

Respuesta:

{
    "mensaje": "Pago registrado con éxito",
    "nuevo_saldo": 3949.5,
    "pago_id": 15
}

3. Consultar Saldo

Endpoint: GET /api/saldo/<user_id>

Respuesta:

{
    "idUser": 1,
    "saldo": 3949.5
}

4. Crear Nuevo Usuario

Endpoint: POST /api/usuarios

Body:

{
    "nombre": "María López",
    "email": "maria@example.com",
    "saldo_inicial": 5000.0
}

Respuesta:

{
    "mensaje": "Usuario creado exitosamente",
    "usuario": {
        "id": 2,
        "nombre": "María López",
        "email": "maria@example.com",
        "saldo": 5000.0
    }
}

Pasos en Postman:

  1. Abrir Postman
  2. Crear una nueva solicitud HTTP:
    • Método: POST
    • URL: http://127.0.0.1:5000/api/usuarios
    • Headers:
      • Content-Type: application/json
  3. En la pestaña "Body":
    • Seleccionar "raw"
    • Seleccionar "JSON"
    • Pegar el JSON de ejemplo mostrado arriba
  4. Hacer clic en "Send"

Cómo Funciona la IA

El sistema de inteligencia artificial mejora con cada pago que registras:

  1. Análisis de Patrones: Calcula tu gasto promedio, identifica gastos similares y evalúa tendencias
  2. Evaluación Contextual: Considera tu saldo actual, suscripciones y tipo de gasto (esencial/no esencial)
  3. Predicción de Riesgo: Ajusta dinámicamente los umbrales de alerta según tu comportamiento histórico
  4. Recomendaciones Personalizadas: Genera mensajes específicos basados en tus hábitos reales

Ejemplo: Si normalmente gastas $500 en promedio y de repente intentas gastar $1500, la IA lo detectará y te advertirá que es 3x tu promedio habitual, incluso si técnicamente tienes el saldo.

Estructura del Proyecto

.
├── app.py                  # Aplicación principal Flask
├── config.py              # Configuración de base de datos
├── requirements.txt       # Dependencias del proyecto
├── models/               # Modelos de base de datos
│   ├── __init__.py
│   ├── user.py          # Usuario
│   ├── pago.py          # Pagos
│   ├── historial.py     # Historial de transacciones
│   └── dinero.py        # Saldo del usuario
└── ml/                   # Sistema de IA
    ├── model.py         # Lógica de evaluación de riesgo
    └── gpt.py           # Generación de mensajes personalizados

Desarrollo

Usuario de Prueba

Al iniciar la aplicación por primera vez, se crea automáticamente un usuario de prueba:

Extender la IA

Para mejorar el sistema de evaluación, puedes modificar:

  • ml/model.py: Ajusta los umbrales y lógica de evaluación de riesgo
  • ml/gpt.py: Personaliza los prompts y el formato de los mensajes

Solución de Problemas

Error de conexión a MySQL

Verifica que MySQL esté corriendo:

mysql -u root -p

Y que las credenciales en .env sean correctas.

La IA no genera mensajes personalizados

Si no tienes configurada la API key de OpenAI, el sistema usa un generador local inteligente. Para habilitar GPT:

  1. Obtén una API key en https://platform.openai.com/api-keys
  2. Agrégala a tu archivo .env
  3. Reinicia la aplicación

Contribuir

Las contribuciones son bienvenidas. Por favor:

  1. Haz fork del repositorio
  2. Crea una rama para tu feature (git checkout -b feature/nueva-funcionalidad)
  3. Commit tus cambios (git commit -am 'Agrega nueva funcionalidad')
  4. Push a la rama (git push origin feature/nueva-funcionalidad)
  5. Crea un Pull Request

Licencia

Este proyecto es de código abierto y está disponible bajo la licencia MIT.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors