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,109 @@
# 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
Feature: 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
Background:
Given que estoy logueado como veterinario
And tengo cobertura en los barrios "Palermo" y "Recoleta"
And estoy en el dashboard de veterinario
# ============================================
# VER SOLICITUDES PENDIENTES
# ============================================
Scenario: Ver lista de solicitudes en mi zona
When veo la seccion "Solicitudes pendientes"
Then deberia ver solo solicitudes de "Palermo" y "Recoleta"
And no deberia ver solicitudes de otros barrios
Scenario: Ver detalle de solicitud
Given que hay una solicitud pendiente
When hago click en la solicitud
Then 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
# ============================================
Scenario: Aceptar solicitud con fecha disponible
Given que hay una solicitud para el barrio "Palermo"
And el dueno prefiere fechas:
| fecha | franja |
| 2024-01-15 | Mañana |
| 2024-01-16 | Tarde |
And tengo disponibilidad el 15 de enero a las 10:00
When hago click en "Aceptar"
And selecciono fecha "15 de enero" hora "10:00"
And confirmo la aceptacion
Then la solicitud deberia pasar a estado "Coordinado"
And deberia quedar asignada a mi
And el dueno deberia recibir notificacion con mis datos
And la visita deberia aparecer en mi agenda
Scenario: Aceptar solicitud con datos de mascota que ya atendi
Given que hay una solicitud para mascota "Luna"
And yo atendi a "Luna" anteriormente
When veo el detalle de la solicitud
Then deberia ver badge "Paciente recurrente"
And deberia ver el historial de mis visitas anteriores a Luna
# ============================================
# RECHAZAR SOLICITUD
# ============================================
Scenario Outline: Rechazar solicitud con motivo
Given que hay una solicitud pendiente
When hago click en "Rechazar"
And selecciono motivo "<motivo>"
And confirmo el rechazo
Then la solicitud deberia desaparecer de mi lista
And deberia seguir visible para otros veterinarios
Examples:
| motivo |
| No tengo disponibilidad |
| Fuera de mi zona |
| No realizo este servicio |
| Otro |
# ============================================
# RACE CONDITIONS
# ============================================
Rule: Solo un veterinario puede aceptar cada solicitud
Scenario: Otro vet acepta mientras estoy viendo
Given que estoy viendo el detalle de una solicitud
And otro veterinario acepta la misma solicitud
When intento aceptarla
Then deberia ver error "Esta solicitud ya fue aceptada"
And deberia ser redirigido al listado
# ============================================
# CASOS ESPECIALES
# ============================================
Scenario: Solicitud urgente destacada
Given que hay una solicitud marcada como "Urgente"
When veo el listado de solicitudes
Then deberia ver la solicitud con indicador de urgencia
And deberia aparecer primero en la lista
Scenario: No puedo aceptar con agenda completa
Given que tengo mi agenda completa para las fechas de la solicitud
When intento aceptar la solicitud
Then deberia ver advertencia "No tienes disponibilidad en las fechas preferidas"
And deberia poder proponer una fecha alternativa

View File

@@ -0,0 +1,99 @@
# 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
Feature: Gestion de agenda veterinaria
Como veterinario
Quiero gestionar mi calendario y disponibilidad
Para organizar mis visitas a domicilio eficientemente
Background:
Given que estoy logueado como veterinario
And estoy en la seccion "Mi agenda"
# ============================================
# VER AGENDA
# ============================================
Scenario: Ver calendario semanal
When veo mi agenda en vista semanal
Then deberia ver los 7 dias de la semana
And deberia ver mis visitas programadas
And cada visita deberia mostrar hora y nombre del paciente
Scenario: Ver visitas con codigo de color por estado
Given que tengo visitas en diferentes estados
When veo mi agenda
Then las visitas deberian mostrarse con colores:
| estado | color |
| Coordinado | amarillo |
| Pagado | verde |
| En progreso | azul |
| Completado | gris |
# ============================================
# CONFIGURAR DISPONIBILIDAD SEMANAL
# ============================================
Scenario: Configurar horario laboral
When voy a "Configuracion" -> "Mi disponibilidad"
And 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 | | | | |
And guardo la configuracion
Then mi disponibilidad deberia actualizarse
And no deberia recibir solicitudes fuera de ese horario
# ============================================
# BLOQUEAR DIAS ESPECIFICOS
# ============================================
Scenario: Marcar dia como no disponible
Given que necesito el 20 de enero libre
When hago click en el dia 20 de enero en el calendario
And selecciono "Marcar como no disponible"
And ingreso motivo "Vacaciones"
And confirmo
Then el dia 20 deberia mostrarse como bloqueado
And no deberia poder aceptar solicitudes para ese dia
Scenario: Bloquear rango de fechas
Given que tomo vacaciones del 15 al 22 de enero
When voy a "Agregar indisponibilidad"
And selecciono fecha inicio "15 de enero"
And selecciono fecha fin "22 de enero"
And ingreso motivo "Vacaciones"
And confirmo
Then todos esos dias deberian mostrarse como bloqueados
# ============================================
# IMPACTO EN SOLICITUDES
# ============================================
Rule: Los bloqueos no afectan visitas ya aceptadas
Scenario: Bloquear dia con visita ya aceptada
Given que tengo una visita aceptada para el 15 de enero
When intento bloquear el 15 de enero
Then deberia ver advertencia "Tienes una visita programada ese dia"
And deberia poder elegir:
| opcion |
| Cancelar el bloqueo |
| Bloquear y contactar al dueno |
Rule: Cambios de disponibilidad solo afectan solicitudes futuras
Scenario: Cambiar horario no afecta visitas existentes
Given que tengo una visita a las 17:00 el lunes
When cambio mi horario del lunes para terminar a las 16:00
And guardo los cambios
Then la visita de las 17:00 deberia mantenerse
And deberia ver advertencia sobre la inconsistencia

View File

@@ -0,0 +1,127 @@
# 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
Feature: Realizar visita y crear informe medico
Como veterinario
Quiero registrar la atencion medica de mis visitas
Para mantener el historial clinico del paciente
Background:
Given que estoy logueado como veterinario
And tengo una visita programada para hoy con mascota "Luna"
And la visita esta en estado "Pagado"
# ============================================
# INICIAR VISITA
# ============================================
Scenario: Ver informacion antes de la visita
When accedo al detalle de la visita
Then deberia ver la direccion para llegar
And deberia ver el telefono del dueno para confirmar
And deberia ver los servicios a realizar
And deberia ver el historial previo de Luna
Scenario: Iniciar visita al llegar
Given que llegue al domicilio
When hago click en "Iniciar visita"
Then el estado deberia cambiar a "En progreso"
And deberia registrarse la hora de inicio
And deberia habilitarse el boton "Crear informe"
# ============================================
# CREAR INFORME MEDICO
# ============================================
Scenario: Completar informe con examen fisico
Given que la visita esta en progreso
When voy a "Crear informe"
And 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 |
And guardo el informe
Then el examen fisico deberia guardarse
Scenario: Agregar diagnostico y tratamiento
Given que complete el examen fisico
When agrego el diagnostico:
"""
Otitis externa bilateral leve.
Paciente presenta prurito y secrecion ceruminosa.
Sin signos de infeccion secundaria.
"""
And agrego el tratamiento:
"""
Limpieza de oidos con solucion fisiologica.
Aplicacion de gotas oticas antibioticas.
Control en 7 dias.
"""
And guardo el informe
Then el diagnostico y tratamiento deberian guardarse
Scenario: Recetar medicamentos
Given que estoy creando el informe
When 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 |
And guardo el informe
Then los medicamentos deberian aparecer en el informe
And el dueno podra verlos desde su cuenta
# ============================================
# COMPLETAR VISITA
# ============================================
Scenario: Completar visita con informe
Given que el informe esta completo
When hago click en "Completar visita"
And confirmo la finalizacion
Then la visita deberia pasar a estado "Completado"
And deberia generarse factura electronica (AFIP)
And el dueno deberia recibir notificacion
And el informe deberia ser visible para el dueno
Scenario: No puedo completar sin informe
Given que la visita esta en progreso
But no cree ningun informe
When intento completar la visita
Then deberia ver error "Debes crear el informe antes de completar"
# ============================================
# GUARDADO AUTOMATICO
# ============================================
Rule: El informe se guarda automaticamente
Scenario: Guardado automatico cada 30 segundos
Given que estoy escribiendo el informe
When pasan 30 segundos
Then deberia ver indicador "Guardado automaticamente"
Scenario: Recuperar informe despues de desconexion
Given que estaba escribiendo el informe
And perdi conexion a internet
When recupero la conexion
Then deberia recuperar mi progreso
And no deberia perder lo que escribi
# ============================================
# CASOS ESPECIALES
# ============================================
Scenario: Cancelar visita in situ
Given que llegue al domicilio
But el dueno no esta
When marco la visita como "Cancelada in situ"
And selecciono motivo "Dueno ausente"
Then la visita deberia marcarse como cancelada
And deberia generarse cargo por visita fallida

View File

@@ -0,0 +1,83 @@
# 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
Feature: Gestionar zonas de cobertura
Como veterinario
Quiero definir en que zonas atiendo
Para recibir solo solicitudes que puedo cubrir
Background:
Given que estoy logueado como veterinario
And estoy en la seccion "Mi cobertura"
# ============================================
# VER ZONAS ACTUALES
# ============================================
Scenario: Ver mapa con mis zonas de cobertura
When cargo la pagina de cobertura
Then deberia ver un mapa de la ciudad
And mis zonas cubiertas deberian estar resaltadas
And deberia ver un listado de barrios seleccionados
Scenario: Ver estadisticas por zona
Given que tengo cobertura en "Palermo" y "Recoleta"
When veo el detalle de mis zonas
Then deberia ver para cada zona:
| metrica |
| Solicitudes este mes |
| Visitas completadas |
| Otros vets en la zona |
# ============================================
# AGREGAR ZONAS
# ============================================
Scenario: Agregar barrio desde el mapa
Given que no tengo cobertura en "Belgrano"
When hago click en "Belgrano" en el mapa
And confirmo agregar la zona
Then "Belgrano" deberia aparecer en mi lista de zonas
And deberia empezar a ver solicitudes de Belgrano
Scenario: Agregar multiples zonas a la vez
When selecciono los barrios:
| barrio |
| Colegiales |
| Chacarita |
| Villa Crespo |
And hago click en "Agregar seleccionados"
Then los 3 barrios deberian agregarse a mi cobertura
# ============================================
# QUITAR ZONAS
# ============================================
Scenario: Quitar zona de cobertura
Given que tengo cobertura en "Recoleta"
When hago click en "X" junto a "Recoleta"
And confirmo quitar la zona
Then "Recoleta" no deberia estar en mi lista
And no deberia ver nuevas solicitudes de Recoleta
# ============================================
# IMPACTO EN SOLICITUDES
# ============================================
Rule: Los cambios de zona afectan solo solicitudes nuevas
Scenario: Agregar zona muestra solicitudes existentes
Given que no tengo cobertura en "Belgrano"
And hay 3 solicitudes pendientes en Belgrano
When agrego "Belgrano" a mi cobertura
Then deberia ver las 3 solicitudes pendientes de Belgrano
Scenario: Quitar zona no afecta visitas aceptadas
Given que tengo cobertura en "Recoleta"
And tengo una visita aceptada en Recoleta para mañana
When quito "Recoleta" de mi cobertura
Then la visita de mañana deberia mantenerse
But no deberia ver nuevas solicitudes de Recoleta

View File

@@ -0,0 +1,100 @@
# 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
Feature: Ver historial de pacientes
Como veterinario
Quiero acceder al historial medico de pacientes
Para tener contexto clinico en mis atenciones
Background:
Given que estoy logueado como veterinario
And estoy en la seccion "Historia clinica"
# ============================================
# BUSCAR PACIENTES
# ============================================
Scenario Outline: Buscar paciente por diferentes criterios
When busco por <criterio> con valor "<valor>"
Then deberia ver resultados que coincidan
Examples:
| criterio | valor |
| nombre dueno | Maria Garcia |
| nombre mascota | Luna |
| telefono | 1155551234 |
| email | maria@ejemplo.com |
Scenario: Busqueda sin resultados
When busco "ZZZZZ paciente inexistente"
Then deberia ver mensaje "No se encontraron resultados"
And deberia ver sugerencia "Verifica la ortografia"
# ============================================
# VER FICHA DE MASCOTA
# ============================================
Scenario: Ver ficha completa de mascota
Given que encontre a la mascota "Luna"
When hago click en Luna
Then 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 |
# ============================================
# VER HISTORIAL DE VISITAS
# ============================================
Scenario: Ver listado de visitas
Given que estoy viendo la ficha de "Luna"
And Luna tiene 5 visitas completadas
When veo la seccion "Historial de visitas"
Then deberia ver las 5 visitas listadas
And deberian estar ordenadas de mas reciente a mas antigua
Scenario: Ver informe de visita de otro veterinario
Given que Luna fue atendida por "Dra. Rodriguez"
And yo no la atendi en esa visita
When hago click en esa visita
Then deberia poder ver el informe completo
# Para continuidad de atencion
# ============================================
# FILTROS Y NAVEGACION
# ============================================
Scenario: Filtrar historial por tipo de servicio
Given que estoy viendo el historial de "Luna"
When filtro por servicio "Vacunacion"
Then solo deberia ver visitas de vacunacion
Scenario: Filtrar por mis atenciones
Given que estoy viendo el historial de "Luna"
And Luna fue atendida por varios veterinarios
When marco "Solo mis atenciones"
Then solo deberia ver las visitas que yo realice
# ============================================
# PERMISOS
# ============================================
Rule: Veterinarios pueden ver historial de pacientes que atendieron
Scenario: Puedo ver historial de paciente que atendi
Given que yo atendi a "Luna" al menos una vez
When busco a Luna
Then deberia poder ver su historial completo
Scenario: Puedo ver historial de paciente con solicitud pendiente
Given que hay una solicitud pendiente para "Rocky"
And la solicitud esta en mi zona
When busco a Rocky
Then deberia poder ver su historial
# Para evaluar si acepto la solicitud