Sistema web interno para la gestión del ciclo completo de revisión de operaciones de compra/venta de valores bursátiles. Desarrollado con Streamlit + PostgreSQL.
- Carga de operaciones: Parseo automático de archivos CPASVTAS (Excel) con clasificación MXN/USD por casa de bolsa
- Bandeja de revisión: Revisión por contrato con locking multiusuario, auto-cierre al completar
- Captura de precios: Integración con Yahoo Finance y archivos Vector analítico
- Asignaciones masivas: Gestión de compras con porcentajes de participación y validaciones de riesgo
- Métricas y dashboard: Gráficas Plotly interactivas, exportación PDF y reportes por email (.eml)
- Panel de administración: Backup de BD, búsqueda de operaciones, gestión de aliases, logs de auditoría
| Componente | Tecnología |
|---|---|
| Frontend | Streamlit |
| Base de Datos | PostgreSQL 15+ |
| Visualización | Plotly Express |
| ReportLab | |
| Excel | openpyxl |
| Precios | yahooquery |
├── app.py # Entry point: login, tabs, routing
├── config.py # Constantes, credenciales (env vars), mapeos
├── db.py # Pool de conexiones, migraciones, logging BD
├── helpers.py # Utilidades: conversión, aliases, usuarios RJ
├── precios.py # Vector analítico, Yahoo Finance, captura manual
├── carga.py # Parseo y carga de archivos CPASVTAS
├── bandeja.py # Bandeja de revisión, callbacks, auto-cierre
├── reportes.py # Reportes por contrato, exportación Excel
├── metricas.py # Dashboard, gráficas Plotly, PDF, email
├── admin.py # Backup, búsqueda, aliases, logs
├── asignaciones.py # Asignaciones masivas, validaciones, Excel
├── .env.example # Template de variables de entorno
└── .gitignore
- Python 3.10+
- PostgreSQL 15+
- pg_dump en PATH (incluido con PostgreSQL)
- Clonar el repositorio:
git clone https://github.com/tu-usuario/sis-rev-ops.git
cd sis-rev-ops- Instalar dependencias:
pip install streamlit pandas psycopg2-binary openpyxl plotly reportlab yahooquery- Configurar variables de entorno. Copiar el template y editar:
cp .env.example .envEditar .env con las credenciales reales:
SRO_DB_PASSWORD=tu_password
SRO_USUARIOS=Usuario1:1234,Usuario2:5678
SRO_ADMIN_USERS=Usuario1
SRO_MAIL_DESTINATARIOS=correo1@dominio.com,correo2@dominio.com
- Cargar variables de entorno antes de ejecutar:
Windows (PowerShell):
Get-Content .env | ForEach-Object {
if ($_ -match '^\s*([^#][^=]+)=(.*)$') {
[System.Environment]::SetEnvironmentVariable($Matches[1].Trim(), $Matches[2].Trim(), 'Process')
}
}Linux/Mac:
export $(grep -v '^#' .env | xargs)- (Opcional) Colocar archivos de datos:
usuarios_rj.csv— Mapeo contrato → usuario RJ (columnas: Contrato, Usuario)vector/— Directorio con archivos Vector analítico para precios de deuda
streamlit run app.py --server.port 8502El sistema crea automáticamente 12 tablas al iniciar:
| Tabla | Descripción |
|---|---|
contratos |
Contratos con estado, lock, metadatos del cliente |
operaciones |
Operaciones individuales (30+ columnas del sistema bursátil) |
titulos_actuales |
Posiciones de títulos por contrato/emisora |
importes_actuales |
Posiciones de importes por contrato/emisora |
cargas |
Registro de archivos cargados |
emisora_aliases |
Mapeo emisora → ticker Yahoo Finance |
audit_log |
Log de auditoría (login, cambios, backups) |
operacion_historial |
Historial campo-por-campo de cambios |
asignaciones |
Asignaciones masivas |
asignacion_operaciones |
Operaciones por asignación |
asignacion_cargas |
Cargas por asignación |
asignacion_config |
Configuración global de porcentajes |
- Las credenciales se leen de variables de entorno, nunca del código fuente
- El archivo
.envestá excluido del repositorio via.gitignore - Los PINs se almacenan en texto plano (migración a bcrypt pendiente)
- Se recomienda usar HTTPS via reverse proxy (nginx) en producción
Uso interno — NSC Asesores S.C.