# 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
