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
| Nombre | Tipo | Descripción |
|---|---|---|
status | WorkOrderStatus | Estado actual de la orden de trabajo. La función row2WorkOrder tiene la asignación de estados del perfil con los estados posibles del sistema. |
code | string | Código de la OT |
description | string | Descripción detallada de la OT |
classes | Partial<WorkOrderClass> | Categorías de la OT, como tipo, prioridad y especialidad |
asset | Asset (opcional) | Activo asociado a la orden de trabajo, con detalles como ID, código, nombre y ubicación |
creationDate | Date | Fecha de creación de la OT |
finishDate | Date (opcional) | Fecha de finalización de la OT si es que ya fue ejecutada |
required_resources | Resource[] | Lista de recursos necesarios para ejecutar la OT (e.g. HH, materiales, trabajadores) |
assigned_resources | AssignedResource[] | Recursos asignados a la ejecución de la OT (e.g. HH) |
estimatedDurationHours | number (opcional) | Duración estimada de la OT en horas |
scheduling | { supervisorId?: string, date?: Date } (opcional) | Supervisor y fecha de programación |
comment | string (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
| Estado | Código | Descripción |
|---|---|---|
UNKNOWN | -1 | Estado desconocido. Implica un error al leer |
WAIT_MATERIAL | 0 | En espera de materiales necesarios |
WAIT_APPROVAL | 1 | En espera de aprobación |
WAIT_CONDITION | 2 | En espera de condiciones externas (e.g. paradas de planta) |
APPROVED | 3 | Aprobada, esperando programación (i.e. en ready backlog) |
SCHEDULED | 4 | Programada, pendiente de ejecución |
IN_PROGRESS | 5 | Iniciada, trabajo en curso |
COMPLETED | 6 | Trabajo físico finalizado |
CREATED | 7 | Estado 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.
| Nombre | Código | Descripción |
|---|---|---|
| Tipo | type | Tipo de la OT. En general es un número. Los días de vencimiento de las OT dependen del tipo. |
| Prioridad | priority | Prioridad de la OT |
| Especialidad | workClass | Especialidad de trabajo requerida para ejecutar la OT |
| Planta | site | Código o nombre de la planta dónde está el activo de la OT |
Ejemplo
const workOrder = {
workOrderClass: {
type: "1",
priority: "Alta",
workClass: "Mecánica",
site: "Norte",
},
// ... resto de la OT
}Resource
| Nombre | Tipo | Descripció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 |
quantity | number | Cantidad del recurso. HH en el caso de labor |
classes | { workClass: string } | Categoría del recurso si es que aplica |
Ejemplo
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
| Nombre | Tipo | Descripción |
|---|---|---|
workOrderCode | string | Código de la OT asociada |
date | Date | Fecha en la que se ejecutó el trabajo |
labor | number | HH asignadas |
workClass | string | Especialidad 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
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.
| Nombre | Tipo | Descripción |
|---|---|---|
id | string | Identificador único del activo |
code | string (opcional) | Código de identificación. Usualmente un identificador más fácil de usar para humanos. |
name | string (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 |
criticallity | string (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.
| Nombre | Tipo | Descripción |
|---|---|---|
id | string | Identificador único del supervisor. Se usa para asignar OTs ejecutadas a supervisores. |
name | string | Nombre del supervisor |
classes | { workClass: string, shiftName: string, site?: string[] } | Especialidad, nombre del turno y plantas asociadas al supervisor. |
Programa
SchedulingProcess
| Nombre | Tipo | Descripción |
|---|---|---|
key | string | Identificador único del proceso de creación de programa |
createdAt | Date | Fecha de creación |
name | string | Nombre del proceso |
alerts | Alert[] | Lista de alertas de la carga de OTs |
fromDate | Date | Fecha de inicio del turno |
toDate | Date | Fecha de fin del turno |
skipDates | number[] | Fechas que no se deben considerar |
supervisors | Supervisor[] | Lista de supervisores disponibles |
workOrders | WorkOrder[] | Órdenes de trabajo disponibles (ready backlog) |
lockedWorkOrderIds | string[] | IDs de órdenes de trabajo bloqueadas |
staffings | Staffing[] | 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.
| Nombre | Tipo | Descripción |
|---|---|---|
workOrderClass | Record<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) |
supervisor | Supervisor | Datos del supervisor |
workers | number | Número de trajadores disponibles en el turno para el supervisor |
workersByShiftDay | Record<number, number> | Detalle de cantidad de trabajadores por cada día del turno |