Skip to content

Modelo de datos

Internamente existen interfaces para las principales entidades con las que el sistema trabaja.

Estas se crean en los respectivos módulos (como activos y supervisores) y solo persisten localmente en el navegador. Nada se guarda remotamente ni se sincroniza.

El sistema utiliza IndexDB y Dexie para guardar los datos localmente.

Órden de Trabajo

WorkOrder

NombreTipoDescripción
statusWorkOrderStatusEstado actual de la orden de trabajo. La función row2WorkOrder tiene la asignación de estados del perfil con los estados posibles del sistema.
codestringCódigo de la OT
descriptionstringDescripción detallada de la OT
classesPartial<WorkOrderClass>Categorías de la OT, como tipo, prioridad y especialidad
assetAsset (opcional)Activo asociado a la orden de trabajo, con detalles como ID, código, nombre y ubicación
creationDateDateFecha de creación de la OT
finishDateDate (opcional)Fecha de finalización de la OT si es que ya fue ejecutada
required_resourcesResource[]Lista de recursos necesarios para ejecutar la OT (e.g. HH, materiales, trabajadores)
assigned_resourcesAssignedResource[]Recursos asignados a la ejecución de la OT (e.g. HH)
estimatedDurationHoursnumber (opcional)Duración estimada de la OT en horas
scheduling{ supervisorId?: string, date?: Date } (opcional)Supervisor y fecha de programación
commentstring (opcional)Comentarios adicionales sobre la orden de trabajo

Todos los campos no opcionales tienen que definirse cuando se construye la OT en la función row2WorkOrder del perfil

WorkOrderStatus

EstadoCódigoDescripción
UNKNOWN-1Estado desconocido. Implica un error al leer
WAIT_MATERIAL0En espera de materiales necesarios
WAIT_APPROVAL1En espera de aprobación
WAIT_CONDITION2En espera de condiciones externas (e.g. paradas de planta)
APPROVED3Aprobada, esperando programación (i.e. en ready backlog)
SCHEDULED4Programada, pendiente de ejecución
IN_PROGRESS5Iniciada, trabajo en curso
COMPLETED6Trabajo físico finalizado
CREATED7Estado inicial

INFO

Solo el estado APPROVED corresponde a una OT en ready backlog.

WorkOrderClass

Las siguientes son las categorías que pueden asignarse a una OT. Se usan para definir los filtros de OT usados para seleccionarlas OTs posibles para un supervisor y para mostrar estadísticas durante la ejecución.

Para el sistema, la semåntica de cada categoría es la misma, por lo que las descripciones de las categorías en la tabla de más abajo son solo referenciales y todo lo que se puede hacer con una, se puede hacer con la otra.

Algunas (como la especialidad y priodidad) se muestran por defecto en algunas tablas y estadísticas o tienen parámetros asociados.

NombreCódigoDescripción
TipotypeTipo de la OT. En general es un número. Los días de vencimiento de las OT dependen del tipo.
PrioridadpriorityPrioridad de la OT
EspecialidadworkClassEspecialidad de trabajo requerida para ejecutar la OT
PlantasiteCódigo o nombre de la planta dónde está el activo de la OT
Ejemplo
js
const workOrder = {
    workOrderClass: { 
        type: "1",
        priority: "Alta",
        workClass: "Mecánica",
        site: "Norte",
    },
    // ... resto de la OT
}

Resource

NombreTipoDescripción
type'labor' | 'material' | 'worker' | 'scaffold'Tipo del recurso. labor equivale corresponde a HH de trabajo y se considera en estadísticas de ejecución. Las otras son solo referenciales
quantitynumberCantidad del recurso. HH en el caso de labor
classes{ workClass: string }Categoría del recurso si es que aplica
Ejemplo
js
const workOrder = {
    resources: [ 
        { type: 'labor', quantity: 10, classes: { workClass: 'Mecánico' } },
        { type: 'labor', quantity: 5, classes: { workClass: 'Eléctrico' } },
        { type: 'scaffold', quantity: 1 },
    },
    // ... resto de la OT
}

AssignedResource

NombreTipoDescripción
workOrderCodestringCódigo de la OT asociada
dateDateFecha en la que se ejecutó el trabajo
labornumberHH asignadas
workClassstringEspecialidad del trabajo ejecutado. Puede ser distinto al de la OT y las estadísticas de ejecución consideran esta especialidad para calcular utilización y cumplimiento de programas
Ejemplo
js
const workOrder = {
    resources: [
        { type: 'labor', quantity: 10, classes: { workClass: 'Mecánico' } },
        { type: 'labor', quantity: 5, classes: { workClass: 'Eléctrico' } },
        { type: 'scaffold', quantity: 1 },
    },
    assigned_resources [ 
        { workOrderCode: '123', labor: 10, workClass: 'Mecánico', date: new Date(2024, 1, 1) },
        { workOrderCode: '123', labor: 5, workClass: 'Eléctrico', date: new Date(2024, 1, 1) },
    },
    // ... resto de la OT
}

Activo

Asset

Los activos se gestionan en el módulo de activos que permite subir un csv que se procesa usando la función row2Asset del perfil.

NombreTipoDescripción
idstringIdentificador único del activo
codestring (opcional)Código de identificación. Usualmente un identificador más fácil de usar para humanos.
namestring (opcional)Nombre del activo
location{ name: string, code: string, site: string } (opcional)Información de ubicación del activo, incluyendo nombre, código y planta. La planta puede usarse para filtrar configuraciones de dotación y OTs
criticallitystring (opcional)Criticidad. Se usan para definir criterios de priorización de OTs.
stats{ mtbf: number } (opcional)Estadísticas del activo. Se usan para definir criterios de priorización de OTs. Opcional y los elementos del objeto también son opcionales.

Supervisor

Los supervisores se gestionan en el módulo de supervisores que permite subir un csv que se procesa usando la función row2Supervisor del perfil.

Supervisor

Los valores de classes son solo referenciales y sirven para autocompletar los filtros de la dotación al seleccionar el supervisor, pero estos pueden cambiarse al hacer un programa.

NombreTipoDescripción
idstringIdentificador único del supervisor. Se usa para asignar OTs ejecutadas a supervisores.
namestringNombre del supervisor
classes{ workClass: string, shiftName: string, site?: string[] }Especialidad, nombre del turno y plantas asociadas al supervisor.

Programa

SchedulingProcess

NombreTipoDescripción
keystringIdentificador único del proceso de creación de programa
createdAtDateFecha de creación
namestringNombre del proceso
alertsAlert[]Lista de alertas de la carga de OTs
fromDateDateFecha de inicio del turno
toDateDateFecha de fin del turno
skipDatesnumber[]Fechas que no se deben considerar
supervisorsSupervisor[]Lista de supervisores disponibles
workOrdersWorkOrder[]Órdenes de trabajo disponibles (ready backlog)
lockedWorkOrderIdsstring[]IDs de órdenes de trabajo bloqueadas
staffingsStaffing[]Lista de dotaciones disponibles

Staffing

Cada elemento de este tipo corresponde a una combinación de un supervisor, cantidad de trabajadores y categorías de OT para crear el programa.

NombreTipoDescripción
workOrderClassRecord<keyof WorkOrderClass, string | string[]>Filtros de OT de ready backlog disponibles para este supervisor. Cada categoría puede tener uno o más valores
classes{ shiftName: string? }Categorías de supervisores. Solo referencial (puede mostrarse en la tabla final del programa)
supervisorSupervisorDatos del supervisor
workersnumberNúmero de trajadores disponibles en el turno para el supervisor
workersByShiftDayRecord<number, number>Detalle de cantidad de trabajadores por cada día del turno