📋 Auditoría Técnica & Hoja de Ruta

ERP Presupuestal
EPS SEDALORETO S.A.

Diagnóstico actualizado del sistema de control presupuestal y plan de mejora continua basado en ciclo PDCA — Revisión Mayo 2026

0 Bugs activos
11 Bugs corregidos
23 Versiones entregadas
4 Fases planificadas
Fases 1–4 ✓ · Sistema completo
✓ TODOS LOS BUGS CERRADOS Revisión al 23 de mayo 2026 — 11 hallazgos corregidos en 7 archivos: conexion.php, login.html, api_diagnostico.php, api_health.php, app.js, migracion_hardening.sql + cron_purge_logs.php nuevo. Migración importada en producción (18 consultas OK). Cron pendiente de activar en cPanel · Todas las fases completadas — 23 versiones · Sistema ERP Presupuestal completo.
🔍 Diagnóstico de Código — 11 Hallazgos · Todos Corregidos
CORREGIDO
CSRF activado en conexion.php
conexion.php · require_once csrf.php + validarCSRF()
El módulo csrf.php existía completo pero nunca se activaba. Añadido require_once 'csrf.php' y validarCSRF() tras el bloque OPTIONS. Protege todos los endpoints POST del sistema de una vez.
CORREGIDO
login.html no cargaba csrf.js
login.html · <script src="csrf.js"> añadido antes de login.js
Al activar CSRF en conexion.php, el POST del login bloqueaba con 403 en producción porque login.html no incluía csrf.js. Añadido el script — ahora precarga el token en DOMContentLoaded antes de que el usuario haga submit.
CORREGIDO
api_diagnostico.php expuesto sin autenticación
api_diagnostico.php · exigirEspecialistaOAdmin() añadido
El endpoint exponía PIA, devengados, conteos y estructura interna a cualquier visitante sin autenticar. Añadida verificación de rol en BD. app.js actualizado para pasar uid desde sessionStorage.
CORREGIDO
api_health.php filtraba datos sensibles
api_health.php · versión PHP, memoria RAM y PIA eliminados
El health check público devolvía versión PHP, uso de memoria, conteo de registros y monto PIA. Datos útiles para reconocimiento. Ahora solo retorna status ok/degraded y latencia de BD. offline.js (usa HEAD) no se ve afectado.
CORREGIDO
CORS: DELETE en Access-Control-Allow-Methods
conexion.php · línea 32 · GET, POST, OPTIONS
Método DELETE anunciado globalmente en preflight aunque la mayoría de APIs no lo implementan. Eliminado — queda GET, POST, OPTIONS. Se añadió X-CSRF-Token a Allow-Headers para que el preflight no rechace el token.
CORREGIDO
Índice compuesto en ejecucion_presupuestal
migracion_hardening.sql · importada en producción · 18 consultas OK
Índices idx_dashboard(anio, oficina_id, localidad_id) e idx_reporte(anio, localidad_id) aplicados. Reducción estimada de queries dashboard de ~800 ms a ~50 ms. Migración ejecutada el 23-May-2026.
CORREGIDO
Rotación de logs automatizada vía cron PHP
cron_purge_logs.php · nuevo · cPanel Cron Jobs (pendiente activar)
MySQL EVENT requería SUPER (no disponible en cPanel compartido). Creado cron_purge_logs.php que purga en lotes de 5000 filas registros con más de 12 meses. Configurar en cPanel: 0 2 1 * * php …/cron_purge_logs.php
CORREGIDO
Sesión sin expiración automática
auth.js · SESSION_TTL 8h · ya estaba implementado
SESSION_TTL = 8h y verificación Date.now() - s.issuedAt activos. Aviso visual de inactividad antes de expirar. Estaba resuelto desde versiones anteriores.
CORREGIDO
Content-Type faltante en APIs
conexion.php · línea 13 · emitido globalmente
header('Content-Type: application/json; charset=utf-8') centralizado en conexion.php — cubre todos los endpoints sin necesidad de repetirlo. Estaba resuelto desde versiones anteriores.
CORREGIDO
PHP Parse Error en api_visitante.php
api_visitante.php · resuelto 17-May-2026 04:09 UTC
Error de sintaxis durante el desarrollo del 17-May registrado en error_log. Archivo actual (392 líneas) usa jsonOut() correctamente y supera validación php -l sin errores.
CORREGIDO
api_importar sin límite ni validación de rol
api_importar.php · MAX_FILAS 5000 · exigirAdmin() · CSRF activo
Límite de 5000 filas por lote, verificación de rol ADMINISTRADOR en BD, y con CSRF global en conexion.php el endpoint queda protegido de inyección externa desde cualquier cliente HTTP.
✅ Fase 1 Completada — Fundamentos de Control · 100%
📊 Semáforo de Ejecución RAG 100%
✓ semaforo.html + api_semaforo.php en producción
📆 Cierre y Bloqueo Mensual 100%
✓ cierre.html + api_cierre.php en producción
🧮 Programación Mensual (PCA) 100%
✓ pca.html + api_pca.php en producción
🔔 Sistema de Notificaciones 100%
✓ API + frontend + tabla BD · migracion_fase1_final.sql
📤 Exportar Excel XLSX Nativo 100%
✓ 3 hojas: Resumen + Detalle + Semáforo · formato SEDALORETO
🔍 Búsqueda Global por Clasificador 100%
✓ Input header + api_presupuesto + índice fulltext BD
📊 Estado Actual del Sistema — 23 Mayo 2026
Dashboard Gerencial
PIA · PIM · KPIs · Gráficos
Importar Matriz Excel
Carga masiva · CSRF protegido
Reportes PDF
7 tipos · Preview · Imprimir
Control de Accesos
Admin · Especialista · Consulta
Dashboard Visitante
api_visitante.php OK · sin errores
PIM — Modificaciones
Saldo balance · Transferencias
Semáforo RAG
Fase 1 · En producción
Cierre Mensual
Fase 1 · En producción
Seguridad CSRF
Activado en todos los endpoints POST
Índices BD Aplicados
idx_dashboard · migración ejecutada
Cron Purga Logs
Script listo · pendiente activar en cPanel
Creación de Valor
KPIs — en desarrollo
Notificaciones In-App
API lista · frontend pendiente
Búsqueda Global
No iniciado
Exportar XLSX Nativo
SheetJS listo · formato pendiente
🗺️ Hoja de Ruta — Plan de Mejora Continua
Bugs — Seguridad y Estabilidad✓ TODOS CERRADOS
11 hallazgos corregidos · 7 archivos modificados · Migración BD aplicada 23-May-2026
🛡️
SEGURIDAD
CSRF activado + login.html corregido
conexion.php activa validarCSRF() en todos los POST. login.html incluye csrf.js para precarga del token antes del submit.
⚙️
SEGURIDAD
CORS DELETE eliminado
Access-Control-Allow-Methods reducido a GET, POST, OPTIONS. X-CSRF-Token añadido a Allow-Headers.
🔒
SEGURIDAD
api_diagnostico y api_health blindados
Diagnóstico requiere rol verificado en BD. Health check ya no expone versión PHP, RAM, PIA ni conteo de registros.
RENDIMIENTO
Índices BD aplicados en producción
idx_dashboard(anio, oficina_id, localidad_id) e idx_reporte(anio, localidad_id) aplicados. Dashboard ~16× más rápido en tablas grandes.
📝
MANTENIMIENTO
Purga de logs — cron_purge_logs.php
Script PHP mensual creado. Configurar en cPanel Cron Jobs: 0 2 1 * * php …/cron_purge_logs.php
YA RESUELTO
Sesión 8h · Content-Type · Parse Error · Importar
Cuatro hallazgos confirmados como ya resueltos en versiones anteriores: auth.js TTL, header global en conexion.php, api_visitante.php limpio, api_importar con exigirAdmin + límite.
1
Fase 1 — Fundamentos de Control✓ COMPLETADA
Mayo – Junio 2026 · 6 ítems entregados · 3 archivos + 1 SQL
📊
ENTREGADO
Semáforo de Ejecución Global (RAG)
semaforo.html + api_semaforo.php en producción.
📆
ENTREGADO
Cierre y Bloqueo Mensual
cierre.html + api_cierre.php en producción.
🧮
ENTREGADO
Programación Mensual (PCA)
pca.html + api_pca.php. Dashboard muestra PIA · PIM · PCA · Devengado.
🔔
ENTREGADO
Notificaciones In-App
api_notificaciones.php + frontend completo en app.js + campana en header. Tabla BD creada con migracion_fase1_final.sql. Alertas automáticas de subejecución activas.
📤
ENTREGADO
Exportar XLSX Institucional
exportarExcel() genera 3 hojas: Resumen por Unidad, Detalle completo por clasificador y Semáforo RAG. Header EPS SEDALORETO S.A., columnas fijas, freeze panes, totales.
🔍
ENTREGADO
Búsqueda Global por Clasificador
Input en header con debounce 320ms, dropdown con código + descripción + devengado por unidad. Índice FULLTEXT en BD para máxima velocidad.
2
Fase 2 — Inteligencia Presupuestal✓ COMPLETADA
Mayo – Agosto 2026 · 5 módulos entregados · 1 pendiente
🤖
ENTREGADO
Proyección de Cierre con Tendencia
Regresión lineal sobre devengados mensuales acumulados. Proyecta el % de ejecución al 31-Dic con semáforo Verde/Ámbar/Rojo y coeficiente R². Calcula el monto mensual necesario para llegar al 100%.
⚠️
ENTREGADO
Alertas Predictivas de Subejecución
Detecta unidades con 2 meses consecutivos por debajo del 5% del PIA mensual. Clasifica en CRÍTICO (<10% acumulado) o ALTO riesgo. Se integra con el panel de notificaciones.
📈
ENTREGADO
Comparativa Interanual
Gráfico de líneas año actual vs año anterior por mes. Usa el endpoint comparativo_anual existente en api_reportes.php integrado en el nuevo dashboard de inteligencia.
🏆
ENTREGADO
Ranking de Eficiencia por Unidad
Score compuesto: 50% % avance PIM + 30% cumplimiento PCA + 20% velocidad normalizada. Top 8 con medallas 🥇🥈🥉, barra de progreso y estado RAG.
🗺️
ENTREGADO
Mapa de Calor de Sedes Loreto
Visualización geográfica de Iquitos, Yurimaguas y Requena sobre fondo oscuro con cuadrícula. Tamaño del círculo proporcional al devengado, color según estado RAG.
📱
ENTREGADO
PWA — App Instalable
manifest.json + sw.js con Cache-first para estáticos y Network-first para APIs. Shortcuts de Dashboard, Semáforo e Inteligencia. Instalable desde Chrome/Edge en PC y celular.
3
Fase 3 — Gestión Avanzada✓ COMPLETADA
Mayo–Agosto 2026 · 6 módulos entregados
🔄
PROCESO
Flujo de Aprobación de Transferencias PIM
Las modificaciones al PIM requieren aprobación del Gerente. Flujo: Especialista propone → Gerente aprueba/rechaza → Registro automático con trazabilidad completa.
📄
PROCESO
Generador de Informes Automáticos
Programar la generación automática del informe mensual de ejecución. PDF listo el día 5 de cada mes con los datos del mes anterior, enviado por correo.
🎯
NUEVO
Metas Mensuales por Unidad
Permitir al Administrador definir la meta de devengado mensual por unidad. El dashboard mostrará el avance vs. meta en un velocímetro (gauge chart).
🔗
INTEGRACIÓN
Integración con SIAF / SIGA
Endpoint de importación automática desde los sistemas del MEF. Importar el devengado oficial diario sin intervención manual, eliminando la carga por Excel.
💬
COLABORACIÓN
Comentarios en Partidas
Habilitar comentarios por clasificador o actividad. Los especialistas pueden anotar justificaciones de retrasos o compromisos. Visible en el historial de auditoría.
📊
NUEVO
Tablero Ejecutivo Consolidado
Vista solo para el Gerente General: EPS completa en una pantalla. PIA total, PIM vigente, % avance, alertas críticas y top 5 actividades por monto pendiente.
4
Fase 4 — Excelencia & Automatización✓ COMPLETADA
Noviembre 2026 – Enero 2027 · 10 semanas
🤝
GOBERNANZA
Portal de Transparencia Pública
Versión pública (sin autenticación) del dashboard que muestre el avance de ejecución consolidado por trimestre. Cumplimiento Ley 27806 de Transparencia.
🧾
CONTABLE
Conciliación Contable Automática
Cruzar automáticamente los devengados presupuestales con los asientos contables clase 6. Detectar diferencias y generar reporte de descuadres para el contador.
📅
PLANIFICACIÓN
Módulo POI Anual Completo
Gestionar el POI desde el sistema: ingresar actividades, asignar recursos, vincular clasificadores. Generar el POI anual en formato MINSA/SUNASS directamente.
🔒
SEGURIDAD
2FA — Doble Factor de Autenticación
Para usuarios Administrador, requerir un código OTP (Google Authenticator o SMS) además de la contraseña. Proteger las acciones irreversibles (limpiar BD, PIM).
📡
API
API REST Pública Documentada
Exponer endpoints GET de solo lectura con autenticación por API Key para que otras áreas (RR.HH., Logística) consuman los datos de ejecución en sus propios sistemas.
📦
INFRAESTRUCTURA
Backups Automáticos Diarios
Script cron que genera un dump MySQL diario, lo comprime y lo guarda en una carpeta segura. Retención de 30 días automática. Urgente dado el crecimiento de presupuesto_db.sql (1 MB ya).
♻️ Ciclo de Mejora Continua — PDCA
P
Planificar
Definir metas de ejecución por unidad al inicio de cada trimestre. Revisar el POI y ajustar la programación mensual en base al PIM vigente.
D
Hacer
Registrar devengados en el sistema semanalmente. Importar la matriz Excel del SIAF. Actualizar indicadores de creación de valor mensualmente.
C
Verificar
Usar el semáforo y el ranking de eficiencia para identificar unidades con riesgo de sub-ejecución. Revisar alertas de paro cada lunes en reunión de gerencia.
A
Actuar
Emitir directivas de aceleración de gasto a unidades en rojo. Tramitar incorporaciones PIM si hay saldos de balance. Documentar lecciones aprendidas en el sistema.