Skip to main content

Flujo de Configuración y Cita

Esta página describe el flujo objetivo para preparar una agenda y poder crear citas válidas. El flujo parte de una configuración general, continúa con servicios y empleados, y termina con la creación de una cita validada por backend.

Importante: parte de este flujo representa el comportamiento objetivo. Algunas reglas todavía deben implementarse en el modelo y en AppointmentModelValidator para que sean obligatorias tanto desde la UI como desde REST/API.

Flujo objetivo

flowchart TD
    A[Configurar Agenda] --> B[Definir reglas generales]
    B --> B1[Horas mínimas de anticipación]
    B --> B2[Días máximos de anticipación]
    B --> B3[Regla de asignación]
    B --> B4[Forzar aprobación]
    B --> B5[Autoaprobar si el servicio lo permite]

    A --> C[Definir horario macro de agenda]
    C --> C1[Lunes a viernes]
    C --> C2[Rangos de hora permitidos]
    C --> C3[Días o rangos cerrados de organización]

    A --> D[Relacionar servicios con la configuración]
    D --> D1[Cada servicio pertenece a una sola configuración]

    D --> E[Configurar Servicio]
    E --> E1[Duración]
    E --> E2[Precio]
    E --> E3[Intervalo de slot]
    E --> E4[Requiere aprobación]

    E --> F[Configurar Empleado]
    F --> F1[Servicios que puede atender]
    F --> F2[Precio/duración override]
    F --> F3[Horario laboral del empleado]
    F --> F4[Días libres o bloqueos]

    F --> G[Crear Cita]
    G --> G1[Seleccionar empleado]
    G --> G2[Seleccionar servicio]
    G --> G3[Resolver configuración del servicio]
    G --> G4[Validar reglas de agenda]
    G --> G5[Validar horario macro]
    G --> G6[Validar horario y días libres del empleado]
    G --> G7[Validar conflictos]

    G7 --> H{¿Requiere aprobación?}
    H -->|Sí| I[Guardar como Pendiente]
    H -->|No y configuración permite autoaprobar| J[Guardar como Aprobada]
    H -->|Configuración fuerza aprobación| I

Secuencia funcional

  1. Crear una configuración de agenda por organización o por alcance operativo.
  2. Definir reglas generales como anticipación mínima, anticipación máxima, regla de asignación y política de aprobación.
  3. Definir el horario macro de la agenda. Por ejemplo: lunes a viernes de 8:00 a 17:00.
  4. Relacionar cada servicio con una sola configuración de agenda.
  5. Configurar cada servicio con duración, precio, intervalo de slot y si requiere aprobación.
  6. Configurar empleados y definir qué servicios puede atender cada uno.
  7. Definir horario laboral y días libres del empleado.
  8. Crear la cita seleccionando empleado, servicio, fecha y slot.
  9. Validar primero la configuración de agenda y luego las reglas del empleado.
  10. Guardar la cita como pendiente o aprobada según las reglas de aprobación.

Jerarquía de disponibilidad esperada

NivelReglaPrioridad
Configuración de agendaDefine el marco general de operación: anticipación, días permitidos, horarios macro y aprobación.Debe estar por encima del empleado. Si la agenda general está cerrada, ningún empleado puede abrir disponibilidad.
ServicioDefine duración, precio, intervalo y si requiere aprobación.Debe resolver qué configuración aplica.
EmpleadoDefine servicios que puede atender, horario propio y bloqueos personales.Solo puede reducir o especializar la disponibilidad de la configuración, no ampliarla.
CitaConsume empleado, servicio, configuración, slot y reglas de conflicto.Debe ser validada por evento antes de guardarse.

Reglas pendientes para completar el flujo

  • Relacionar cada servicio con una configuración de agenda.
  • Validar que un servicio no pertenezca a más de una configuración.
  • Agregar horario macro de configuración, similar al horario del empleado.
  • Validar anticipación mínima y máxima desde la configuración.
  • Aplicar la política de aprobación automática o forzada en BeforeNew.
  • Hacer que los días libres de organización puedan aplicar por configuración cuando corresponda.