# Reservar Turno (Turnero)

## Tipo de usuario
Dueno de mascota (invitado, registrado, o recurrente)

## Donde empieza
Pagina principal -> Boton "Agendar visita" o enlace directo `/turnero`

## Que quiere hacer el usuario
Reservar un turno veterinario a domicilio para su mascota

## Pasos

1. Click en "Agendar visita"
2. Ingresar direccion en el popup de cobertura
3. Sistema verifica si hay cobertura en esa zona
4. Si hay cobertura, click "Siguiente"
5. Completar datos de la mascota:
   - Nombre
   - Tipo (Perro/Gato)
   - Raza (opcional)
   - Edad aproximada
   - Peso aproximado
   - Si esta castrado/a
6. Seleccionar categoria de servicio (Vacunacion, Consulta, etc.)
7. Seleccionar servicios especificos
8. Ver que algunos servicios se agregan automaticamente (ej: consulta clinica)
9. Seleccionar fechas preferidas (hasta 3)
10. Seleccionar franja horaria preferida
11. Ingresar datos de contacto:
    - Nombre completo
    - Telefono
    - Email
12. Revisar resumen
13. Enviar solicitud

## Que deberia pasar

- Solicitud creada con estado "Pendiente"
- Email de confirmacion al usuario
- Notificacion a veterinarios de la zona
- Aparece en "Mis turnos" del usuario

## Problemas comunes

- No hay cobertura en la zona del usuario
- El autocompletado de direcciones no encuentra la calle
- Usuario no puede quitar "Consulta clinica" cuando selecciona vacunacion
- Confunden "fecha preferida" con "fecha confirmada"
- No entienden por que no pueden elegir hora exacta
- El total no se muestra hasta el final y sorprende al usuario

## Casos especiales

- Usuario invitado: se crea como guest, puede registrarse despues
- Usuario logueado: datos pre-llenados, mascota puede ser existente
- Usuario recurrente (mismo email): sistema detecta y sugiere linkear
- Mascota ya castrada: no mostrar servicio de castracion
- Servicios combo: algunos incluyen otros automaticamente
- Zona sin cobertura: mostrar formulario para avisar cuando haya

## Flujos relacionados

- Ver mis turnos (despues de reservar)
- Pagar turno (cuando se coordina)
- Cancelar turno
- Agregar mascota (si ya tiene cuenta)

## Notas tecnicas

- APIs:
  - `POST /mascotas/api/v1/coverage-check/` (verificar cobertura)
  - `POST /mascotas/api/v1/pet-owners/` (crear dueno invitado)
  - `POST /mascotas/api/v1/pets/` (crear mascota)
  - `GET /productos/api/v1/services/` (obtener servicios)
  - `POST /solicitudes/api/v1/service-requests/` (crear solicitud)
- Estados de solicitud: pending -> coordinated -> payed -> completed
