OTD Dashboard (On-Time Delivery Dashboard) es un sistema integral de gestión y seguimiento de órdenes y entregas que permite:
Cálculo:
(Pedidos completados a tiempo / Total pedidos completados) × 100
Criterio: Un pedido está "a tiempo" si fecha_completado ≤ fecha_entrega
Cálculo:
(Órdenes 100% completadas a tiempo / Total órdenes completadas) × 100
Criterio: Una orden está completa cuando todos sus pedidos están completados
Pedidos que han superado su fecha de entrega sin completarse.
Criterio: fecha_actual > fecha_entrega AND estatus != 'completado'
Número total de problemas registrados que aún no han sido resueltos.
Estados: pendiente, en_proceso, resuelto
El proceso ETL es el corazón del sistema que mantiene los datos actualizados automáticamente.
Extrae datos de archivos CSV:
ordenes.csvpedidos.csvProcesa y limpia los datos:
Carga datos a PostgreSQL:
El ETL respeta las modificaciones manuales mediante campos de control:
modificado_manualmente: Indica si el registro fue modificado por un usuariofecha_modificacion_manual: Timestamp de la última modificación manualhash_etl: Hash para detectar cambios en datos fuenteEl ETL se ejecuta automáticamente cada hora mediante cron job:
0 * * * * cd /var/www/otd-app && /var/www/otd-app/venv/bin/python etl.py >> logs/etl.log 2>&1
| Campo | Tipo | Descripción |
|---|---|---|
| id | INTEGER | ID único de la orden |
| clave | VARCHAR | Clave identificadora |
| fecha_entrega | DATE | Fecha programada de entrega |
| prioridad | VARCHAR | alta/media/baja |
| estatus | VARCHAR | pendiente/completado |
| modificado_manualmente | BOOLEAN | Control ETL |
| Campo | Tipo | Descripción |
|---|---|---|
| id | INTEGER | ID único del pedido |
| orden_id | INTEGER | Referencia a orden |
| producto | VARCHAR | Nombre del producto |
| cantidad | INTEGER | Cantidad solicitada |
| surtido | INTEGER | Cantidad entregada |
| saldo | INTEGER | Cantidad pendiente |
| estatus | VARCHAR | pendiente/completado |
| fecha_completado | TIMESTAMP | Cuándo se completó |
| Campo | Tipo | Descripción |
|---|---|---|
| id | INTEGER | ID único del problema |
| orden_id | INTEGER | Orden afectada |
| origen_problema | VARCHAR | Causa del problema |
| estado | VARCHAR | pendiente/resuelto |
| fecha_reporte | TIMESTAMP | Cuándo se reportó |
| descripcion | TEXT | Detalles del problema |
| Campo | Tipo | Descripción |
|---|---|---|
| id | INTEGER | ID único del cambio |
| pedido_id | INTEGER | Pedido modificado |
| estado_anterior | VARCHAR | Estado previo |
| estado_nuevo | VARCHAR | Nuevo estado |
| fecha | TIMESTAMP | Cuándo ocurrió |
| usuario_responsable | VARCHAR | Quién lo cambió |
| comentarios | TEXT | Notas adicionales |
Una orden puede tener múltiples pedidos. Cada pedido puede generar múltiples cambios de estado y problemas.
Orden #12345
├── Pedido #001: Producto A (cantidad: 100, surtido: 80, saldo: 20)
├── Pedido #002: Producto B (cantidad: 50, surtido: 50, saldo: 0) ✅
└── Pedido #003: Producto C (cantidad: 75, surtido: 0, saldo: 75) ⚠️
Pedidos que han superado su fecha de entrega
Productos no disponibles en inventario
Problemas diversos del proceso
El sistema mantiene un registro completo de todos los cambios realizados:
Utiliza los filtros en la página de Historial para encontrar cambios específicos por fecha, usuario o tipo de modificación.
Para soporte técnico o preguntas adicionales, contacta al administrador del sistema.
Manual actualizado: 08/12/2025 | Versión del sistema: OTD Dashboard v1.0