# language: es
# Fuente: album/book/ops-templates/backoffice/05-reportes.md
# Drive: 07. Finanzas y contabilidad/Reportes
# Tests Backend: pytest tests/contracts/mascotas/test_stats.py
# Tests Frontend: npx playwright test admin-reports.spec.ts

Característica: Reportes y dashboard

  Como administrador o gerente
  Quiero ver metricas y generar reportes
  Para tomar decisiones informadas

  Antecedentes:
    Dado que estoy logueado como administrador
    Y estoy en el backoffice

  # ============================================
  # DASHBOARD
  # ============================================

  Escenario: Ver dashboard principal
    Cuando accedo al dashboard
    Entonces deberia ver metricas resumidas:
      | metrica               | periodo  |
      | Solicitudes nuevas    | Hoy      |
      | Visitas completadas   | Semana   |
      | Ingresos              | Mes      |
      | Veterinarios activos  | Actual   |
      | Tasa de conversion    | Mes      |

  Escenario: Dashboard actualiza periodicamente
    Dado que estoy en el dashboard
    Cuando pasan 5 minutos
    Entonces los datos deberian actualizarse
    Y deberia ver indicador de ultima actualizacion

  Escenario: Ver grafico de tendencia
    Cuando veo el grafico de solicitudes
    Entonces deberia ver la evolucion de los ultimos 30 dias
    Y deberia poder comparar con periodo anterior

  # ============================================
  # REPORTE DE SOLICITUDES
  # ============================================

  Escenario: Generar reporte de solicitudes
    Cuando voy a "Reportes" -> "Solicitudes"
    Y selecciono periodo "Enero 2024"
    Y hago click en "Generar"
    Entonces deberia ver tabla con solicitudes del periodo
    Y deberia ver totales por estado:
      | estado      | cantidad |
      | Pendiente   | X        |
      | Coordinado  | X        |
      | Pagado      | X        |
      | Completado  | X        |
      | Cancelado   | X        |

  Escenario: Filtrar reporte por multiples criterios
    Cuando genero reporte con filtros:
      | filtro         | valor       |
      | Periodo        | Enero 2024  |
      | Zona           | Palermo     |
      | Veterinario    | Dra. Garcia |
      | Estado         | Completado  |
    Entonces deberia ver solo solicitudes que cumplan todos los criterios

  # ============================================
  # REPORTE DE INGRESOS
  # ============================================

  Escenario: Ver ingresos por periodo
    Cuando voy a "Reportes" -> "Ingresos"
    Y selecciono "Ultimo trimestre"
    Entonces deberia ver:
      | dato                  |
      | Ingresos totales      |
      | Cantidad de pagos     |
      | Ticket promedio       |
      | Reembolsos realizados |
      | Ingreso neto          |

  Escenario: Ingresos agrupados por veterinario
    Cuando agrupo el reporte por "Veterinario"
    Entonces deberia ver para cada vet:
      | dato                  |
      | Visitas completadas   |
      | Ingresos generados    |
      | Porcentaje del total  |
    Y deberian estar ordenados de mayor a menor

  Escenario: Ingresos agrupados por servicio
    Cuando agrupo el reporte por "Servicio"
    Entonces deberia ver los servicios mas vendidos
    Y deberia ver el ingreso de cada uno
    Y deberia ver la cantidad de veces realizado

  # ============================================
  # REPORTE DE VETERINARIOS
  # ============================================

  Escenario: Ver performance de veterinarios
    Cuando voy a "Reportes" -> "Veterinarios"
    Entonces deberia ver para cada veterinario:
      | metrica               |
      | Visitas completadas   |
      | Calificacion promedio |
      | Tasa de aceptacion    |
      | Tasa de cancelacion   |
      | Ingresos generados    |

  Escenario: Identificar veterinarios con problemas
    Dado que el reporte muestra la tasa de cancelacion
    Cuando ordeno por "Tasa de cancelacion" descendente
    Entonces deberia ver primero los vets con mas cancelaciones
    Y deberia poder investigar los motivos

  # ============================================
  # EXPORTACION
  # ============================================

  Esquema del escenario: Exportar reporte en diferentes formatos
    Dado que tengo un reporte generado
    Cuando hago click en "Exportar"
    Y selecciono formato "<formato>"
    Entonces deberia descargarse el archivo en formato <formato>

    Ejemplos:
      | formato |
      | CSV     |
      | Excel   |
      | PDF     |

  Escenario: Exportar reporte grande de forma asincrona
    Dado que genere un reporte con mas de 10000 registros
    Cuando hago click en "Exportar"
    Entonces deberia ver mensaje "Generando exportacion..."
    Y deberia recibir notificacion cuando este listo
    Y deberia poder descargar desde el centro de notificaciones

  # ============================================
  # REPORTES PROGRAMADOS
  # ============================================

  Escenario: Programar reporte semanal
    Cuando voy a "Reportes" -> "Programados"
    Y creo nuevo reporte programado:
      | campo       | valor                    |
      | Tipo        | Ingresos                 |
      | Frecuencia  | Semanal                  |
      | Dia         | Lunes                    |
      | Destinatarios | gerencia@ejemplo.com   |
    Y guardo
    Entonces deberia enviarse el reporte cada lunes
    Y los destinatarios deberian recibirlo por email
