spr migrated books, and tester

This commit is contained in:
buenosairesam
2025-12-31 09:07:27 -03:00
parent 21b8eab3cb
commit cccc6b5a93
136 changed files with 15763 additions and 472 deletions

View File

@@ -0,0 +1,129 @@
# language: es
# Fuente: album/book/ops-templates/veterinarian/01-aceptar-solicitud.md
# Drive: 08. IT y Producto/Funcionalidades Plataforma Veterinario
# Tests Backend: pytest tests/contracts/solicitudes/test_service_requests.py
# Tests Frontend: npx playwright test vet-requests.spec.ts
Característica: Aceptar o rechazar solicitudes de servicio
Como veterinario de la plataforma
Quiero revisar y responder a solicitudes en mi zona
Para gestionar mi agenda de visitas a domicilio
Antecedentes:
Dado que estoy logueado como veterinario
Y tengo cobertura en los barrios "Palermo" y "Recoleta"
Y estoy en el dashboard de veterinario
# ============================================
# VER SOLICITUDES PENDIENTES
# ============================================
Escenario: Ver lista de solicitudes en mi zona
Cuando veo la seccion "Solicitudes pendientes"
Entonces deberia ver solo solicitudes de "Palermo" y "Recoleta"
Y no deberia ver solicitudes de otros barrios
Escenario: Ver detalle de solicitud
Dado que hay una solicitud pendiente
Cuando hago click en la solicitud
Entonces deberia ver:
| seccion | contenido |
| Dueno | Nombre, telefono, direccion |
| Mascota | Nombre, tipo, edad, foto |
| Servicios | Lista de servicios solicitados |
| Fechas | Fechas preferidas por el dueno |
| Historial | Visitas anteriores si las hay |
# ============================================
# ACEPTAR SOLICITUD
# ============================================
Escenario: Aceptar solicitud con fecha disponible
Dado que hay una solicitud para el barrio "Palermo"
Y el dueno prefiere fechas:
| fecha | franja |
| 2024-01-15 | Mañana |
| 2024-01-16 | Tarde |
Y tengo disponibilidad el 15 de enero a las 10:00
Cuando hago click en "Aceptar"
Y selecciono fecha "15 de enero" hora "10:00"
Y confirmo la aceptacion
Entonces la solicitud deberia pasar a estado "Coordinado"
Y deberia quedar asignada a mi
Y el dueno deberia recibir notificacion con mis datos
Y la visita deberia aparecer en mi agenda
Escenario: Aceptar solicitud con datos de mascota que ya atendi
Dado que hay una solicitud para mascota "Luna"
Y yo atendi a "Luna" anteriormente
Cuando veo el detalle de la solicitud
Entonces deberia ver badge "Paciente recurrente"
Y deberia ver el historial de mis visitas anteriores a Luna
# ============================================
# RECHAZAR SOLICITUD
# ============================================
Esquema del escenario: Rechazar solicitud con motivo
Dado que hay una solicitud pendiente
Cuando hago click en "Rechazar"
Y selecciono motivo "<motivo>"
Y confirmo el rechazo
Entonces la solicitud deberia desaparecer de mi lista
Y deberia seguir visible para otros veterinarios
Ejemplos:
| motivo |
| No tengo disponibilidad |
| Fuera de mi zona |
| No realizo este servicio |
| Otro |
Escenario: Rechazar sin seleccionar motivo
Dado que hay una solicitud pendiente
Cuando hago click en "Rechazar"
Y confirmo sin seleccionar motivo
Entonces deberia poder rechazar igual
# El motivo es opcional
# ============================================
# RACE CONDITIONS
# ============================================
Regla: Solo un veterinario puede aceptar cada solicitud
Escenario: Otro vet acepta mientras estoy viendo
Dado que estoy viendo el detalle de una solicitud
Y otro veterinario acepta la misma solicitud
Cuando intento aceptarla
Entonces deberia ver error "Esta solicitud ya fue aceptada"
Y deberia ser redirigido al listado
Escenario: Solicitud desaparece cuando otro la acepta
Dado que estoy viendo el listado de solicitudes
Y otro veterinario acepta una solicitud
Entonces esa solicitud deberia desaparecer de mi lista
# Idealmente en tiempo real via websocket
# ============================================
# CASOS ESPECIALES
# ============================================
Escenario: Solicitud urgente destacada
Dado que hay una solicitud marcada como "Urgente"
Cuando veo el listado de solicitudes
Entonces deberia ver la solicitud con indicador de urgencia
Y deberia aparecer primero en la lista
Escenario: Solicitud con multiples mascotas
Dado que hay una solicitud para 2 mascotas
Cuando veo el detalle
Entonces deberia ver informacion de ambas mascotas
Y deberia ver nota sobre tiempo estimado adicional
Escenario: No puedo aceptar con agenda completa
Dado que tengo mi agenda completa para las fechas de la solicitud
Cuando intento aceptar la solicitud
Entonces deberia ver advertencia "No tienes disponibilidad en las fechas preferidas"
Y deberia poder proponer una fecha alternativa

View File

@@ -0,0 +1,134 @@
# 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

View File

@@ -0,0 +1,159 @@
# language: es
# Fuente: album/book/ops-templates/veterinarian/03-realizar-visita.md
# Drive: 08. IT y Producto/Funcionalidades Plataforma Veterinario
# Tests Backend: pytest tests/contracts/mascotas/test_vet_visits.py
# Tests Frontend: npx playwright test vet-visit.spec.ts
Característica: Realizar visita y crear informe medico
Como veterinario
Quiero registrar la atencion medica de mis visitas
Para mantener el historial clinico del paciente
Antecedentes:
Dado que estoy logueado como veterinario
Y tengo una visita programada para hoy con mascota "Luna"
Y la visita esta en estado "Pagado"
# ============================================
# INICIAR VISITA
# ============================================
Escenario: Ver informacion antes de la visita
Cuando accedo al detalle de la visita
Entonces deberia ver la direccion para llegar
Y deberia ver el telefono del dueno para confirmar
Y deberia ver los servicios a realizar
Y deberia ver el historial previo de Luna
Escenario: Iniciar visita al llegar
Dado que llegue al domicilio
Cuando hago click en "Iniciar visita"
Entonces el estado deberia cambiar a "En progreso"
Y deberia registrarse la hora de inicio
Y deberia habilitarse el boton "Crear informe"
# ============================================
# CREAR INFORME MEDICO
# ============================================
Escenario: Completar informe con examen fisico
Dado que la visita esta en progreso
Cuando voy a "Crear informe"
Y completo el examen fisico:
| campo | valor |
| Peso | 4.5 kg |
| Temperatura | 38.5 °C |
| Frecuencia cardiaca | 120 lpm |
| Frecuencia resp | 25 rpm |
| Mucosas | Rosadas |
| Hidratacion | Normal |
Y guardo el informe
Entonces el examen fisico deberia guardarse
Escenario: Agregar diagnostico y tratamiento
Dado que complete el examen fisico
Cuando agrego el diagnostico:
"""
Otitis externa bilateral leve.
Paciente presenta prurito y secrecion ceruminosa.
Sin signos de infeccion secundaria.
"""
Y agrego el tratamiento:
"""
Limpieza de oidos con solucion fisiologica.
Aplicacion de gotas oticas antibioticas.
Control en 7 dias.
"""
Y guardo el informe
Entonces el diagnostico y tratamiento deberian guardarse
Escenario: Recetar medicamentos
Dado que estoy creando el informe
Cuando agrego medicamentos:
| nombre | dosis | frecuencia | duracion |
| Otomax gotas | 5 gotas | cada 12 horas | 7 dias |
| Meloxicam 1.5mg | 1 comp | cada 24 horas | 3 dias |
Y guardo el informe
Entonces los medicamentos deberian aparecer en el informe
Y el dueno podra verlos desde su cuenta
Escenario: Solicitar estudios complementarios
Dado que necesito estudios de laboratorio
Cuando agrego estudio:
| tipo | indicaciones |
| Hemograma completo | Ayuno de 8 horas |
| Perfil hepatico | Para control pre-quirurgico |
Y guardo el informe
Entonces los estudios deberian quedar registrados
Y deberian mostrarse como "Pendientes de resultado"
# ============================================
# COMPLETAR VISITA
# ============================================
Escenario: Completar visita con informe
Dado que el informe esta completo
Cuando hago click en "Completar visita"
Y confirmo la finalizacion
Entonces la visita deberia pasar a estado "Completado"
Y deberia generarse factura electronica (AFIP)
Y el dueno deberia recibir notificacion
Y el informe deberia ser visible para el dueno
Escenario: No puedo completar sin informe
Dado que la visita esta en progreso
Pero no cree ningun informe
Cuando intento completar la visita
Entonces deberia ver error "Debes crear el informe antes de completar"
# ============================================
# GUARDADO AUTOMATICO
# ============================================
Regla: El informe se guarda automaticamente
Escenario: Guardado automatico cada 30 segundos
Dado que estoy escribiendo el informe
Cuando pasan 30 segundos
Entonces deberia ver indicador "Guardado automaticamente"
Escenario: Recuperar informe despues de desconexion
Dado que estaba escribiendo el informe
Y perdi conexion a internet
Cuando recupero la conexion
Entonces deberia recuperar mi progreso
Y no deberia perder lo que escribi
# ============================================
# CASOS ESPECIALES
# ============================================
Escenario: Visita con multiples mascotas
Dado que la visita incluye a "Luna" y "Rocky"
Cuando creo el informe
Entonces deberia crear un informe separado para cada mascota
Y ambos informes deberian estar asociados a la misma visita
Escenario: Cancelar visita in situ
Dado que llegue al domicilio
Pero el dueno no esta
Cuando marco la visita como "Cancelada in situ"
Y selecciono motivo "Dueno ausente"
Entonces la visita deberia marcarse como cancelada
Y deberia generarse cargo por visita fallida
# Segun politicas de la empresa
Escenario: Emergencia durante visita rutinaria
Dado que estoy en una consulta de vacunacion
Y detecto una condicion que requiere atencion urgente
Cuando agrego servicio "Consulta de urgencia"
Entonces deberia poder documentar ambos servicios
Y el precio deberia ajustarse
Escenario: Derivar a clinica
Dado que el paciente necesita atencion en clinica
Cuando marco "Derivacion a clinica"
Y especifico el motivo
Entonces deberia quedar registrada la derivacion
Y el dueno deberia recibir instrucciones

View File

@@ -0,0 +1,121 @@
# language: es
# Fuente: album/book/ops-templates/veterinarian/04-zonas-cobertura.md
# Drive: 08. IT y Producto/Funcionalidades Plataforma Veterinario
# Tests Backend: pytest tests/contracts/mascotas/test_veterinarians.py
# Tests Frontend: npx playwright test vet-coverage.spec.ts
Característica: Gestionar zonas de cobertura
Como veterinario
Quiero definir en que zonas atiendo
Para recibir solo solicitudes que puedo cubrir
Antecedentes:
Dado que estoy logueado como veterinario
Y estoy en la seccion "Mi cobertura"
# ============================================
# VER ZONAS ACTUALES
# ============================================
Escenario: Ver mapa con mis zonas de cobertura
Cuando cargo la pagina de cobertura
Entonces deberia ver un mapa de la ciudad
Y mis zonas cubiertas deberian estar resaltadas
Y deberia ver un listado de barrios seleccionados
Escenario: Ver estadisticas por zona
Dado que tengo cobertura en "Palermo" y "Recoleta"
Cuando veo el detalle de mis zonas
Entonces deberia ver para cada zona:
| metrica |
| Solicitudes este mes |
| Visitas completadas |
| Otros vets en la zona |
# ============================================
# AGREGAR ZONAS
# ============================================
Escenario: Agregar barrio desde el mapa
Dado que no tengo cobertura en "Belgrano"
Cuando hago click en "Belgrano" en el mapa
Y confirmo agregar la zona
Entonces "Belgrano" deberia aparecer en mi lista de zonas
Y deberia empezar a ver solicitudes de Belgrano
Escenario: Agregar barrio desde el buscador
Cuando busco "Nuñez" en el buscador de barrios
Y selecciono "Nuñez" de los resultados
Y confirmo agregar la zona
Entonces "Nuñez" deberia aparecer en mi lista
Escenario: Agregar multiples zonas a la vez
Cuando selecciono los barrios:
| barrio |
| Colegiales |
| Chacarita |
| Villa Crespo |
Y hago click en "Agregar seleccionados"
Entonces los 3 barrios deberian agregarse a mi cobertura
# ============================================
# QUITAR ZONAS
# ============================================
Escenario: Quitar zona de cobertura
Dado que tengo cobertura en "Recoleta"
Cuando hago click en "X" junto a "Recoleta"
Y confirmo quitar la zona
Entonces "Recoleta" no deberia estar en mi lista
Y no deberia ver nuevas solicitudes de Recoleta
Escenario: Quitar zona con solicitudes pendientes
Dado que tengo cobertura en "Palermo"
Y hay solicitudes pendientes en Palermo que no acepte
Cuando intento quitar "Palermo"
Entonces deberia ver advertencia "Hay X solicitudes pendientes en esta zona"
Y deberia poder confirmar de todas formas
# Las solicitudes pendientes siguen disponibles para otros vets
# ============================================
# IMPACTO EN SOLICITUDES
# ============================================
Regla: Los cambios de zona afectan solo solicitudes nuevas
Escenario: Agregar zona muestra solicitudes existentes
Dado que no tengo cobertura en "Belgrano"
Y hay 3 solicitudes pendientes en Belgrano
Cuando agrego "Belgrano" a mi cobertura
Entonces deberia ver las 3 solicitudes pendientes de Belgrano
Escenario: Quitar zona no afecta visitas aceptadas
Dado que tengo cobertura en "Recoleta"
Y tengo una visita aceptada en Recoleta para mañana
Cuando quito "Recoleta" de mi cobertura
Entonces la visita de mañana deberia mantenerse
Pero no deberia ver nuevas solicitudes de Recoleta
# ============================================
# CASOS ESPECIALES
# ============================================
Escenario: Zona no disponible en el sistema
Dado que quiero cubrir "Barrio Nuevo"
Pero ese barrio no esta en el sistema
Cuando busco "Barrio Nuevo"
Entonces deberia ver mensaje "Zona no encontrada"
Y deberia ver opcion "Solicitar que agreguen esta zona"
Escenario: Zona con baja demanda
Dado que agrego una zona con poca actividad
Cuando pasan 30 dias sin solicitudes
Entonces deberia recibir sugerencia "Considera expandir tu cobertura"
Escenario: Zona saturada de veterinarios
Dado que quiero agregar "Palermo"
Y hay muchos veterinarios cubriendo Palermo
Cuando agrego la zona
Entonces deberia ver nota "Esta zona tiene alta cobertura de veterinarios"
# Informativo, no bloquea

View File

@@ -0,0 +1,157 @@
# language: es
# Fuente: album/book/ops-templates/veterinarian/05-historial-pacientes.md
# Drive: 08. IT y Producto/Funcionalidades Plataforma Veterinario
# Tests Backend: pytest tests/contracts/mascotas/test_vet_visits.py
# Tests Frontend: npx playwright test vet-history.spec.ts
Característica: Ver historial de pacientes
Como veterinario
Quiero acceder al historial medico de pacientes
Para tener contexto clinico en mis atenciones
Antecedentes:
Dado que estoy logueado como veterinario
Y estoy en la seccion "Historia clinica"
# ============================================
# BUSCAR PACIENTES
# ============================================
Esquema del escenario: Buscar paciente por diferentes criterios
Cuando busco por <criterio> con valor "<valor>"
Entonces deberia ver resultados que coincidan
Ejemplos:
| criterio | valor |
| nombre dueno | Maria Garcia |
| nombre mascota | Luna |
| telefono | 1155551234 |
| email | maria@ejemplo.com |
Escenario: Busqueda sin resultados
Cuando busco "ZZZZZ paciente inexistente"
Entonces deberia ver mensaje "No se encontraron resultados"
Y deberia ver sugerencia "Verifica la ortografia"
Escenario: Busqueda con multiples resultados
Cuando busco "Garcia"
Y hay varios duenos con apellido Garcia
Entonces deberia ver lista de coincidencias
Y cada resultado deberia mostrar:
| campo |
| Nombre completo |
| Email |
| Mascotas |
# ============================================
# VER FICHA DE MASCOTA
# ============================================
Escenario: Ver ficha completa de mascota
Dado que encontre a la mascota "Luna"
Cuando hago click en Luna
Entonces deberia ver la ficha con:
| seccion | contenido |
| Datos basicos | Nombre, tipo, raza, edad, peso |
| Foto | Foto de la mascota |
| Dueno | Nombre y contacto del dueno |
| Vacunacion | Estado de vacunas |
| Historial | Lista de visitas |
Escenario: Ver grafico de peso historico
Dado que estoy viendo la ficha de "Luna"
Y Luna tuvo multiples visitas con peso registrado
Cuando veo la seccion "Evolucion"
Entonces deberia ver grafico de peso en el tiempo
Y deberia poder detectar tendencias
# ============================================
# VER HISTORIAL DE VISITAS
# ============================================
Escenario: Ver listado de visitas
Dado que estoy viendo la ficha de "Luna"
Y Luna tiene 5 visitas completadas
Cuando veo la seccion "Historial de visitas"
Entonces deberia ver las 5 visitas listadas
Y deberian estar ordenadas de mas reciente a mas antigua
Y cada visita deberia mostrar:
| campo |
| Fecha |
| Veterinario |
| Servicios |
| Diagnostico |
Escenario: Ver informe de visita de otro veterinario
Dado que Luna fue atendida por "Dra. Rodriguez"
Y yo no la atendi en esa visita
Cuando hago click en esa visita
Entonces deberia poder ver el informe completo
# Para continuidad de atencion
Escenario: Ver informe detallado
Cuando hago click en una visita
Entonces deberia ver el informe con:
| seccion | contenido |
| Examen fisico | Peso, temperatura, signos vitales |
| Diagnostico | Descripcion del diagnostico |
| Tratamiento | Plan de tratamiento indicado |
| Medicamentos | Lista con dosis y duracion |
| Estudios | Estudios solicitados y resultados |
| Observaciones | Notas adicionales |
# ============================================
# FILTROS Y NAVEGACION
# ============================================
Escenario: Filtrar historial por tipo de servicio
Dado que estoy viendo el historial de "Luna"
Cuando filtro por servicio "Vacunacion"
Entonces solo deberia ver visitas de vacunacion
Escenario: Filtrar historial por fecha
Dado que estoy viendo el historial de "Luna"
Cuando filtro por año "2023"
Entonces solo deberia ver visitas del 2023
Escenario: Filtrar por mis atenciones
Dado que estoy viendo el historial de "Luna"
Y Luna fue atendida por varios veterinarios
Cuando marco "Solo mis atenciones"
Entonces solo deberia ver las visitas que yo realice
# ============================================
# PERMISOS
# ============================================
Regla: Veterinarios pueden ver historial de pacientes que atendieron
Escenario: Puedo ver historial de paciente que atendi
Dado que yo atendi a "Luna" al menos una vez
Cuando busco a Luna
Entonces deberia poder ver su historial completo
Escenario: Puedo ver historial de paciente con solicitud pendiente
Dado que hay una solicitud pendiente para "Rocky"
Y la solicitud esta en mi zona
Cuando busco a Rocky
Entonces deberia poder ver su historial
# Para evaluar si acepto la solicitud
# ============================================
# CASOS ESPECIALES
# ============================================
Escenario: Paciente sin historial previo
Dado que busco a "Nuevo" que nunca fue atendido
Cuando veo su ficha
Entonces el historial deberia estar vacio
Y deberia ver mensaje "Sin visitas registradas"
Escenario: Dueno con multiples mascotas
Dado que busque al dueno "Maria Garcia"
Y Maria tiene 3 mascotas
Cuando veo su perfil
Entonces deberia ver las 3 mascotas listadas
Y deberia poder navegar al historial de cada una