Sistema de gestión bancaria desarrollado en Python diseñado para administrar clientes y sus cuentas. El proyecto implementa una arquitectura en capas para separar la lógica de negocio, el acceso a datos y la interfaz de usuario.
Actualmente permite el registro de nuevos clientes, inicio de sesión seguro y gestión administrativa básica.
- Lenguaje: Python
- Base de Datos: SQLite (Gestión de persistencia local)
- APIs: SendGrid (Notificaciones por correo electrónico)
- Librerías:
sqlite3,re,sendgrid
El código fuente se encuentra en el directorio src/ y está organizado de la siguiente manera:
Contiene las clases que representan las entidades del dominio.
cliente.py: Clase baseCliente.cliente_regular.py,cliente_premium.py,cliente_vip.py,cliente_corporativo.py: Subclases que heredan deClientecon atributos específicos.
Capa de acceso a datos (DAO).
repositorio_clientes.py: Gestiona la persistencia de clientes en SQLite (CRUD: Crear, Leer, Buscar, Eliminar).repositorio_transacciones.py: Gestiona el historial de transacciones (Depósitos, Retiros, Transferencias) vinculado a cada cliente.
Capa de lógica de negocio.
servicio_clientes.py: Coordina las operaciones principales (Login, Registro, Eliminación). Implementa la lógica para reconstruir objetos desde la base de datos.servicio_login_cliente.py: Maneja la sesión del usuario activo, permitiendo consultar saldo, ver historial, depositar y transferir fondos.servicio_notificaciones.py: Integra la API de SendGrid para enviar correos de bienvenida y despedida.
Utilidades y helpers.
validadores_de_formato.py: ClaseValidadorFormatocon métodos estáticos para validar RUT (módulo 11), email (RegEx), teléfonos, etc.inputs_usuario.py: Maneja la interacción con el usuario en consola, solicitando y limpiando los datos de entrada.config.py: Variables de configuración global (rutas de BD, etc).
menu_principal.py: Interfaz de línea de comandos (CLI) principal que orquesta el flujo de la aplicación.menu_cliente.py: Menú específico para usuarios logueados.
- Gestión de Clientes: Crear y buscar clientes.
- Autenticación: Inicio de sesión mediante RUT o Email y contraseña.
- Sistema de Transacciones:
- Depósitos: Abonar dinero a la propia cuenta.
- Transferencias: Enviar dinero a otros clientes del banco (validando fondos y destinatario).
- Historial: Registro detallado de movimientos (tipo, monto, fecha, destinatario).
- Validaciones: Verificación robusta de RUT chileno y formatos de datos.
- Notificaciones: Envío de correos automáticos al registrarse, eliminarse o realizar transferencias (requiere API Key).
- Límites de Saldo (Polimorfismo): Restricciones de saldo máximo implementadas en cada subclase mediante sobreescritura de propiedades (setters):
- Regular: Máx $2M
- Premium: Máx $10M
- VIP: Máx $50M
- Corporativo: Máx $100M
- Límites Diarios: Control de seguridad que impide depositar más de $10M o transferir más de $5M en un mismo día.
- Funcionalidades Únicas por Cliente:
- Regular: Simulador de Depósito a Plazo.
- Premium: Simulador de Compra de Dólares.
- VIP: Apertura de Portafolio de Inversión BlackRock.
- Corporativo: Calculadora de Nómina de Sueldos.
- Modo Admin: Funcionalidad para eliminar clientes protegida por contraseña maestra (
admin1234).
- ❌ Interfaz Gráfica: La interacción es 100% por consola (Terminal).
- ❌ Dashboard: No existen gráficos ni reportes visuales avanzados.
- Clonar el repositorio.
- Crear un entorno virtual e instalar dependencias:
pip install sendgrid python-dotenv
- Configurar variables de entorno en un archivo
.enven la raíz:SENDGRID_API_KEY=tu_api_key FROM_EMAIL=tu_email_verificado
- Ejecutar el sistema desde la raíz del proyecto:
python src/main.py
Para aprovechar al máximo todas las funcionalidades del sistema, te recomendamos:
-
Registra al menos 2 Clientes:
- Crea dos usuarios diferentes simulando distintas personas.
- Esto es esencial para probar las transferencias de dinero entre cuentas.
-
Usa un Correo Válido:
- Al menos para uno de los usuarios, usa un email real y verifica si recibes el correo de bienvenida (requiere
SENDGRID_API_KEY).
- Al menos para uno de los usuarios, usa un email real y verifica si recibes el correo de bienvenida (requiere
-
¡Recuerda los RUTs!:
- Para transferir dinero, debes ingresar el RUT exacto del destinatario.
- Tip: Puedes usar la opción de Administrador (
clave: admin1234) en el menú principal para listar todos los clientes y ver sus RUTs.
Los documentos y códigos solicitados para la evaluación se encuentran organizados de la siguiente manera:
-
Comparación de Paradigmas:
- 📄
docs/entrega/Analisis de caso PDF.pdf: Explicación y análisis de caso (Comparación POO vs Estructurada).
- 📄
-
Clase Banco / Arquitectura:
- 📄
docs/arquitectura_banco.md: Justificación técnica de la implementación deServicioClientescomo controlador bancario.
- 📄
-
Ejemplo Práctico (Simulación):
- 🐍
src/simulacion.py: Script estático que instancia el sistema, registra usuarios y realiza transferencias automáticamente. - Ejecutar con (en la raíz del repositorio):
python src/simulacion.py
- 🐍
-
Diagrama de Clases:
- 📊
docs/entrega/Diagrama de clase UML.png: Diagrama UML completo del sistema.
- 📊