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.
- 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
- 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
- Python 3.8 o superior
- MySQL Server instalado y en ejecución
- (Opcional) API key de OpenAI para mensajes personalizados con GPT
git clone <url-del-repositorio>
cd <nombre-del-proyecto>python -m venv venvEndpoint: 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
### 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.
### 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(noemail). - La contraseña debe enviarse en
contrasenay tener al menos 4 caracteres. saldo_iniciales 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
}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
}Endpoint: GET /api/saldo/<user_id>
Respuesta:
{
"idUser": 1,
"saldo": 3949.5
}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:
- Abrir Postman
- Crear una nueva solicitud HTTP:
- Método: POST
- URL:
http://127.0.0.1:5000/api/usuarios - Headers:
- Content-Type: application/json
- En la pestaña "Body":
- Seleccionar "raw"
- Seleccionar "JSON"
- Pegar el JSON de ejemplo mostrado arriba
- Hacer clic en "Send"
El sistema de inteligencia artificial mejora con cada pago que registras:
- Análisis de Patrones: Calcula tu gasto promedio, identifica gastos similares y evalúa tendencias
- Evaluación Contextual: Considera tu saldo actual, suscripciones y tipo de gasto (esencial/no esencial)
- Predicción de Riesgo: Ajusta dinámicamente los umbrales de alerta según tu comportamiento histórico
- 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.
.
├── 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
Al iniciar la aplicación por primera vez, se crea automáticamente un usuario de prueba:
- ID: 1
- Nombre: Carlos Ramírez
- Email: carlos@example.com
- Saldo inicial: $4200.00
Para mejorar el sistema de evaluación, puedes modificar:
ml/model.py: Ajusta los umbrales y lógica de evaluación de riesgoml/gpt.py: Personaliza los prompts y el formato de los mensajes
Verifica que MySQL esté corriendo:
mysql -u root -pY que las credenciales en .env sean correctas.
Si no tienes configurada la API key de OpenAI, el sistema usa un generador local inteligente. Para habilitar GPT:
- Obtén una API key en https://platform.openai.com/api-keys
- Agrégala a tu archivo
.env - Reinicia la aplicación
Las contribuciones son bienvenidas. Por favor:
- Haz fork del repositorio
- Crea una rama para tu feature (
git checkout -b feature/nueva-funcionalidad) - Commit tus cambios (
git commit -am 'Agrega nueva funcionalidad') - Push a la rama (
git push origin feature/nueva-funcionalidad) - Crea un Pull Request
Este proyecto es de código abierto y está disponible bajo la licencia MIT.