# SIHO PMS RC5 — Auditoría del Panel de Control

## Hallazgos corregidos

1. Los gráficos de ingresos estaban fijados al mes y año actuales.
2. La vista ejecutaba consultas mediante un controlador estático (`ComparativoMensualController`), mezclando presentación y acceso a datos.
3. El gráfico mensual y el comparativo anual utilizaban lógica distinta a los servicios financieros auditados en RC4.
4. Productos más vendidos acumulaba todo el historial, sin respetar el periodo visualizado.
5. La clasificación de estancias cortas solo reconocía una tarifa fija de 4 horas.
6. El controlador realizaba consultas repetitivas por día, turno y caja directamente.
7. `reserva/dashboard` exponía rutas REST innecesarias además de `index`.

## Solución

- Nuevo `DashboardAnalyticsService`.
- Selector independiente de mes/año para ingresos diarios.
- Selector de año para comparativo anual.
- Uso de `FinancialReportService` como fuente financiera común con reportes y arqueos.
- Caché corta para periodos actuales y caché diaria para históricos.
- Productos más vendidos filtrados por el mes seleccionado.
- Tarifas por horas detectadas dinámicamente mediante `servicio LIKE '% HORAS'`.
- Consulta diaria conserva su fecha y no pierde los filtros del panel.
- Acceso a gráficos financieros sujeto a `reports.view`.
- Ruta del dashboard limitada a lectura (`index`).

## Periodos disponibles

Por defecto se presentan el mes y año actuales. El usuario autorizado puede consultar hasta diez años anteriores desde el mismo panel. El rango puede ampliarse posteriormente sin modificar la lógica financiera.

## Validación pendiente en MySQL

Comparar un mes histórico conocido entre:

- Dashboard mensual.
- Dashboard anual.
- Reporte mensual.
- Arqueos de las cajas del periodo.
- Excel/PDF auditados en RC4.

Los totales deben coincidir porque comparten `FinancialReportService` y `CashReconciliationService`.
