@startuml uml-class-operacion !include _style.iuml skinparam classAttributeIconSize 0 title 5. Diagrama de clases — Operacion de ordenes class Orden { + id : UUID + folio : String + clienteId : UUID + prestadorId : UUID + servicioId : UUID + direccionId : UUID + fechaSolicitud : DateTime + fechaProgramada : DateTime + estatus : String + montoTotal : Decimal -- + asignar(prestador) : Boolean + cancelar(motivo) : Boolean + calcularTotal() : Decimal + completar(evidencia) : Boolean } class HistorialEstatus { + id : UUID + ordenId : UUID + estatusAnterior : String + estatusNuevo : String + cambiadoPorId : UUID + fecha : DateTime + notas : String } class Evidencia { + id : UUID + ordenId : UUID + tipo : String + url : String + descripcion : String + fecha : DateTime } class Calificacion { + id : UUID + ordenId : UUID + calificadorId : UUID + calificadoId : UUID + puntuacion : Integer + comentario : String + fecha : DateTime } class Cliente <> #EAEAEA class Prestador <> #EAEAEA class Servicio <> #EAEAEA class Direccion <> #EAEAEA class Cupon <> #EAEAEA class Usuario <> #EAEAEA Cliente "1" -- "0..*" Orden : solicita > Prestador "0..1" -- "0..*" Orden : atiende > Servicio "1" -- "0..*" Orden : es_servicio > Direccion "1" -- "0..*" Orden : se_entrega_en > Cupon "0..1" -- "0..*" Orden : aplica > Orden "1" *-- "1..*" HistorialEstatus : evoluciona Orden "1" *-- "0..*" Evidencia : documenta Orden "1" -- "0..*" Calificacion : recibe Usuario "1" -- "0..*" Calificacion : califica > note right of Orden : Composicion: HistorialEstatus y Evidencia\nno existen sin la Orden. footer Fuente: 00.sql + apps/web/src/lib/dashboard/actions/ordenes/** @enduml