Documento Visual para el Cliente

Modelo de Entidades
y Flujos

Todas las entidades, relaciones y flujos del sistema Ubiot en un documento interactivo.

01

Vista General de Entidades

Ubiot gestiona fichajes de empleados a traves de un modelo de entidades interrelacionadas. El diagrama muestra las relaciones principales entre todas las entidades del sistema.

Diagrama Entidad-Relacion
Arrastra los nodos · Scroll = zoom · Arrastra fondo = mover

Tenant

Nivel mas alto del sistema. Solo hay uno: Ubiot. Contiene todos los Customers, Assets y Devices.

Customer

Representa un contrato entre el receptor del servicio y la empresa empleadora. Ej: SMS LIMCAMAR.

Empresa Empleadora

Asset tipo EMPRESA_EMPLEADORA. Empresa donde el trabajador tiene su nomina.

Centro de Trabajo

Asset tipo CARD READER. Lugar fisico donde los trabajadores fichan. Pertenece a 1 Customer.

Trabajador

Device Device_<8digitos>. Empleado con DNI, planificacion, tarjetas NFC y codigos telefonicos.

Fichaje

Alarm en el centro. Timestamps de entrada/salida, DNI, tipo de fichaje y datos del lector.

02

Trabajador (Device)

Cada trabajador es un Device con nombre Device_<8digitos> generado de su DNI/NIE. Puede tener multiples tarjetas NFC y codigos telefonicos, cada uno asociado a una empresa diferente.

Relaciones del trabajador
Arrastra los nodos · Scroll = zoom · Arrastra fondo = mover
Generacion de ID desde DNI/NIE:
DNI (9 chars): 12345678ADevice_12345678 (primeros 8 digitos)
NIE (10 chars): X1234567ADevice_01234567 (siempre 0 + ultimos 7 digitos)

Tarjetas NFC

  • Device tipo FICHAJES
  • Codigo hexadecimal unico
  • Atributo empresa_empleadora
  • Relacion TarjetaDeEmpresa a la empresa

Codigos Telefonicos

  • Device con numero de 9 digitos
  • Atributo empresa_empleadora
  • Relacion UsesCodigoTelefonico
  • Identifica centro + empresa
03

Centro de Trabajo (Asset)

Los centros son Assets tipo CARD READER. Cada centro pertenece a exactamente un Customer y esta asociado a una empresa empleadora.

Relaciones del centro
Arrastra los nodos · Scroll = zoom · Arrastra fondo = mover
1 Centro = 1 Customer: El Customer representa un contrato (receptor + empresa empleadora). Dos empresas en el mismo edificio = dos centros distintos, cada uno con su Customer.
04

Estructura del Fichaje (Alarma)

Los fichajes son alarmas (Alarms). Es critico distinguir entre timestamps REALES y PLANIFICADOS.

Campos del fichaje
Arrastra los nodos · Scroll = zoom · Arrastra fondo = mover
NUNCA usar start_ ni end_ para calculos de horas. Son horas PLANIFICADAS, no reales. Usar siempre start_raw y endBonus.
Duracion = endBonus - start_raw
endBonus YA incluye el bonus sumado — no hay que sumar nada extra

Prioridad INICIO

  • start_raw (fichaje real NFC)
  • startBonus
  • startTs / createdTime
  • NUNCA start_

Prioridad FIN

  • endBonus (real + bonus)
  • end_raw (salida real)
  • endTs
  • NUNCA end_

Tipos de Fichaje

  • NFC: reader = hex, nfc_in=true
  • Telefonico: reader = 9 digitos
  • SQT: type contiene _Simple
  • Manual: manual=true

Sistema de Bonus

current_bonus = horas decimales (0.75 = 45min). Se SUMA a end_raw para generar endBonus. El calculo es simplemente endBonus - start_raw.

05

Mapa de Relaciones

Todas las relaciones del sistema con sus cardinalidades. Las lineas muestran el tipo de relacion y la direccion.

Relaciones completas
Arrastra los nodos · Scroll = zoom · Arrastra fondo = mover

Detalle de cada relacion

RelacionDesde → HaciaCard.Descripcion
ContainsCentro → TrabajadorN:MEl centro contiene al trabajador (pertenencia)
ContainsDelegacion → Trabajador1:NLa delegacion agrupa trabajadores
ContainsTrabajador → Tarjeta NFC1:NEl trabajador posee tarjetas NFC
CentroDeEmpresaEmpresa → Centro1:NEl centro pertenece a una empresa empleadora
TarjetaDeEmpresaTarjeta NFC → EmpresaN:1La tarjeta NFC esta asociada a una empresa
UsesCodigoTelefonicoTrabajador → Cod. Tel.1:NEl trabajador usa codigos telefonicos
customerIdCentro → CustomerN:1Propiedad del asset (no relacion TB)
originatorCentro → Fichaje1:NLos fichajes se crean como alarmas en el centro
06

Modelo Multiempresa

Varias empresas empleadoras pueden operar en el mismo edificio fisico. Cada una tiene su propio centro en Ubiot. La tarjeta NFC determina a que centro se asigna el fichaje.

Ejemplo: Hospital Rosell
Arrastra los nodos · Scroll = zoom · Arrastra fondo = mover
Trabajador multi-empresa: Un trabajador puede pertenecer a varias empresas. Posee una tarjeta NFC por empresa. La tarjeta usada al fichar determina el centro y la empresa del fichaje.

Customer = Contrato

Cada Customer = contrato entre receptor + empresa empleadora. SMS LIMCAMAR = Serv. Murciano de Salud con LIMCAMAR.

Un lector, multiples centros

Un unico lector NFC fisico puede servir a multiples centros. La tarjeta determina el centro mediante la empresa asociada.

07

Flujo de Fichaje NFC

El fichaje NFC es el metodo principal. El trabajador pasa su tarjeta, el sistema identifica la empresa, busca el centro y crea el fichaje con indices.

Diagrama de secuencia
Arrastra los nodos · Scroll = zoom · Arrastra fondo = mover
08

Flujo de Fichaje Telefonico

El trabajador ficha llamando a un numero de 9 digitos. El numero identifica centro y empresa; el telefono del trabajador lo identifica a el.

Diagrama de secuencia
Arrastra los nodos · Scroll = zoom · Arrastra fondo = mover
Diferencia con NFC: El codigo telefonico ya esta asociado a una empresa empleadora, por lo que no se necesita validar la empresa por separado. El reader es un numero de 9 digitos.
09

Sistema de Indices de Telemetria

Ubiot mantiene indices fichaje_idx en tres ubicaciones para busquedas rapidas bidireccionales.

Escritura triple
Arrastra los nodos · Scroll = zoom · Arrastra fondo = mover
Escritura triple obligatoria: Al crear, editar o eliminar un fichaje, SIEMPRE actualizar los tres indices para mantener consistencia.

Indice en Centro

Responde: Quien ficho aqui hoy? Almacena alarmId, dni, nombre.

Indice en Trabajador

Responde: Donde ficho este trabajador? Almacena alarmId, centroId, centroNombre.

Indice Global

Responde: Todos los fichajes. Asset RegistroGlobalFichajes con datos combinados.

10

Sistema de Permisos

Cada usuario tiene permisos basados en filtros intersectivos: un centro es visible solo si cumple los tres criterios.

Filtros intersectivos
Arrastra los nodos · Scroll = zoom · Arrastra fondo = mover
CentrosVisibles = (Provincia Empresa Cliente) + excepciones_add - excepciones_remove
Wizard de Permisos v5.5: 6 pasos para configurar permisos. Los filtros son intersectivos: provincia, empresa Y cliente deben coincidir. Las excepciones permiten anadir o excluir centros puntuales.
11

Roles de Usuario

Dos roles principales: Admin Ubiot (multiples empresas) y Gestor de Empresa (una empresa).

Admin Ubiot

  • Gestiona MULTIPLES empresas empleadoras
  • Ve TODOS los centros del tenant
  • Ve TODOS los clientes y trabajadores
  • Configura permisos de otros usuarios
  • Wizard de permisos completo
  • Acceso a TODAS las provincias

Gestor de Empresa

  • Gestiona UNA empresa empleadora
  • Ve SOLO centros de su empresa
  • Ve SOLO clientes y trabajadores de su empresa
  • NO puede cambiar permisos de otros
  • Puede crear/editar fichajes de sus centros
  • Puede gestionar planificaciones
12

Tabla de Entidades y Atributos

Detalle completo de atributos por entidad.

Trabajador (Device)

AtributoTipoDescripcion
Device NameDevice_<8dig>Ej: Device_12345678
TipoPersonal Fichajes DNITipo de device
NombreStringNombre completo del trabajador
Dni. Trab.StringDNI o NIE con letra
C. Trab.StringCodigo interno del trabajador
EmpresaString | Array"00001 LIMCAMAR" o ["00001 LIMCAMAR","00003 CONCAMAR"]
DelegacionStringCodigo delegacion (DEL28, DEL30...)
RolStringLimpiador, Supervisor, etc.
worker_scheduleJSONHorarios por centro y dia de la semana
turnos_nocturnosJSONConfiguracion de turnos nocturnos

Centro de Trabajo (Asset)

AtributoTipoDescripcion
Asset NameStringEj: "Hospital Rosell - LIMCAMAR"
TipoCARD READERTipo de asset
labelStringNombre corto (ej: "Hospital Rosell")
cod_provinceStringCodigo provincia (30=Murcia, 03=Alicante...)
name_provinceStringNombre de la provincia
cod_empresaStringCodigo empresa empleadora
code_assetStringCodigo interno del asset
cod_centerStringCodigo del centro
DelegadoStringNombre del delegado asignado
EncargadoStringNombre del encargado asignado
horas_objetivo_semanalesNumberHoras objetivo por semana
horas_objetivo_anual_jsonJSONHoras objetivo desglosadas por mes
estado_centroStringOperativo / No disponible / Incidencia / Otro
observaciones_centroStringObservaciones de texto libre
justificantes_centroJSONDocumentos justificantes por mes

Empresa Empleadora (Asset)

AtributoTipoDescripcion
Asset NameStringEj: "LIMCAMAR"
TipoEMPRESA_EMPLEADORATipo de asset
cod_empresaStringCodigo de 5 digitos (00001, 00003...)
nombreStringNombre corto
razon_socialStringRazon social completa
activoBooleanSi la empresa esta activa

Customer (Cliente / Contrato)

AtributoTipoDescripcion
titleStringNombre del contrato (ej: "SMS LIMCAMAR")
cod_clienteStringCodigo unico del cliente
cifStringCIF/NIF de la empresa receptora
telefonoStringTelefono de contacto
direccionStringDireccion

Tarjeta NFC (Device)

AtributoTipoDescripcion
Device NameStringCodigo hexadecimal de la tarjeta
TipoFICHAJESTipo de device
empresa_empleadoraString"00001 LIMCAMAR" (codigo + nombre)

Codigo Telefonico (Device)

AtributoTipoDescripcion
Device NameStringNumero de 9 digitos
empresa_empleadoraString"00001 LIMCAMAR" (codigo + nombre)

Fichaje (Alarm)

AtributoTipoDescripcion
typeString"Device_<DNI>" del trabajador
originatorEntity IDID del centro (Asset)
severityStringCRITICAL
startTsTimestamp (ms)Inicio del fichaje
endTsTimestamp (ms)Fin del fichaje
createdTimeTimestamp (ms)Cuando se creo (inmutable)
start_rawString (seg)Hora REAL de entrada (NFC)
end_rawString (seg)Hora REAL de salida
endBonusNumber (seg)Hora de salida CON bonus sumado
current_bonusStringValor del bonus en horas decimales
dniStringDNI del trabajador
nombreStringNombre del trabajador
readerStringID del lector (hex NFC o 9 dig. tel)
manualBooleanSi es fichaje manual

Usuario (User)

AtributoTipoDescripcion
emailStringEmail del usuario
provincias_permitidasArrayCodigos de provincia permitidos
empresas_permitidasArrayCodigos de empresa permitidos
clientes_permitidosArrayIDs de clientes permitidos
centros_excepciones_addArrayIDs de centros extra permitidos
centros_excepciones_removeArrayIDs de centros excluidos
T

Tickets y Peticiones

Crea peticiones, reporta dudas o solicita cambios en la estructura de entidades. Arrastra las tarjetas entre columnas para cambiar su estado.

Abierto0
En progreso0
Resuelto0
Cerrado0