# language: es # Fuente: album/book/ops-templates/veterinarian/02-gestion-agenda.md # Drive: 08. IT y Producto/Funcionalidades Plataforma Veterinario # Tests Backend: pytest tests/contracts/mascotas/test_vet_availability.py # Tests Frontend: npx playwright test vet-schedule.spec.ts Característica: Gestion de agenda veterinaria Como veterinario Quiero gestionar mi calendario y disponibilidad Para organizar mis visitas a domicilio eficientemente Antecedentes: Dado que estoy logueado como veterinario Y estoy en la seccion "Mi agenda" # ============================================ # VER AGENDA # ============================================ Escenario: Ver calendario semanal Cuando veo mi agenda en vista semanal Entonces deberia ver los 7 dias de la semana Y deberia ver mis visitas programadas Y cada visita deberia mostrar hora y nombre del paciente Escenario: Ver visitas con codigo de color por estado Dado que tengo visitas en diferentes estados Cuando veo mi agenda Entonces las visitas deberian mostrarse con colores: | estado | color | | Coordinado | amarillo | | Pagado | verde | | En progreso | azul | | Completado | gris | Escenario: Ver detalle de visita desde el calendario Dado que tengo una visita programada para hoy Cuando hago click en la visita Entonces deberia ver popup con: | campo | valor | | Hora | 10:00 - 11:00 | | Dueno | Maria Garcia | | Direccion | Av Santa Fe 1234 | | Mascota | Luna (Gato, 3 años) | | Servicios | Vacunacion, Consulta | | Estado pago | Pagado | Y deberia ver boton "Ver detalle completo" # ============================================ # CONFIGURAR DISPONIBILIDAD SEMANAL # ============================================ Escenario: Configurar horario laboral Cuando voy a "Configuracion" -> "Mi disponibilidad" Y configuro mi horario: | dia | trabajo | desde | hasta | pausa_desde | pausa_hasta | | Lunes | Si | 09:00 | 18:00 | 13:00 | 14:00 | | Martes | Si | 09:00 | 18:00 | 13:00 | 14:00 | | Miercoles | Si | 09:00 | 18:00 | 13:00 | 14:00 | | Jueves | Si | 09:00 | 18:00 | 13:00 | 14:00 | | Viernes | Si | 09:00 | 15:00 | | | | Sabado | No | | | | | | Domingo | No | | | | | Y guardo la configuracion Entonces mi disponibilidad deberia actualizarse Y no deberia recibir solicitudes fuera de ese horario # ============================================ # BLOQUEAR DIAS ESPECIFICOS # ============================================ Escenario: Marcar dia como no disponible Dado que necesito el 20 de enero libre Cuando hago click en el dia 20 de enero en el calendario Y selecciono "Marcar como no disponible" Y ingreso motivo "Vacaciones" Y confirmo Entonces el dia 20 deberia mostrarse como bloqueado Y no deberia poder aceptar solicitudes para ese dia Escenario: Bloquear rango de fechas Dado que tomo vacaciones del 15 al 22 de enero Cuando voy a "Agregar indisponibilidad" Y selecciono fecha inicio "15 de enero" Y selecciono fecha fin "22 de enero" Y ingreso motivo "Vacaciones" Y confirmo Entonces todos esos dias deberian mostrarse como bloqueados Escenario: Desbloquear dia Dado que tengo el 20 de enero bloqueado Y ya no necesito ese dia libre Cuando hago click en el dia bloqueado Y selecciono "Quitar bloqueo" Entonces el dia deberia estar disponible nuevamente # ============================================ # IMPACTO EN SOLICITUDES # ============================================ Regla: Los bloqueos no afectan visitas ya aceptadas Escenario: Bloquear dia con visita ya aceptada Dado que tengo una visita aceptada para el 15 de enero Cuando intento bloquear el 15 de enero Entonces deberia ver advertencia "Tienes una visita programada ese dia" Y deberia poder elegir: | opcion | | Cancelar el bloqueo | | Bloquear y contactar al dueno | Regla: Cambios de disponibilidad solo afectan solicitudes futuras Escenario: Cambiar horario no afecta visitas existentes Dado que tengo una visita a las 17:00 el lunes Cuando cambio mi horario del lunes para terminar a las 16:00 Y guardo los cambios Entonces la visita de las 17:00 deberia mantenerse Y deberia ver advertencia sobre la inconsistencia # ============================================ # NAVEGACION # ============================================ Escenario: Navegar entre semanas Cuando hago click en "Semana siguiente" Entonces deberia ver el calendario de la proxima semana Y deberia poder volver con "Semana anterior" Escenario: Ir a fecha especifica Cuando hago click en el selector de fecha Y selecciono "15 de marzo" Entonces deberia ver la semana que contiene el 15 de marzo