Tareas
Las tareas definen trabajo planificado con requisitos específicos de recursos y ubicaciones geográficas. Las tareas usan el flujo de trabajo version/commit para planificación colaborativa offline y capacidad de rollback.
Estructura de Tarea
Página de tareas mostrando trabajo planificado con seguimiento de progreso y requisitos multi-recurso
Campos Básicos:**
- Nombre - Nombre descriptivo de tarea
- Descripción - Instrucciones detalladas de trabajo
- Geometría - Punto, línea, o polígono mostrando ubicación de trabajo
- Orden - Orden de trabajo padre agrupando tareas relacionadas
- Recursos - Array de materiales/labor requeridos (soporte multi-recurso)
Requisitos de Recursos: Cada entrada de recurso incluye:
resource- Referencia a definición de recursovolume- Cantidad/amount requeridouom- Unidad de medidaassignedTo- Persona responsable de recoger esta línea de recurso específica (opcional)
Ejemplo:
Tarea: "Instalar caja de conexión de red en Edificio 42"
Geometría: Punto (lat: 40.7128, lng: -74.0060)
Recursos: [
{ resource: "Caja de Conexión", volume: 1, uom: "unidades" },
{ resource: "Cable Cat6", volume: 15, uom: "metros" },
{ resource: "Tornillos de Montaje", volume: 8, uom: "unidades" },
{ resource: "Electricista", volume: 2, uom: "horas" }
]
Tareas Multi-Recurso
Sistema anterior: Un recurso por tarea
- Problema: Trabajo complejo crea marcadores de mapa excesivos
- Ejemplo: 100 instalaciones × 4 recursos = 400 puntos de mapa
Sistema actual: Múltiples recursos por tarea
- Solución: Un marcador de mapa único representa trabajo completo
- Mismo ejemplo: 100 puntos de mapa (uno por instalación)
- Mapa más limpio, planificación espacial más fácil
Beneficios:
- Clutter de mapa reducido
- Materiales relacionados agrupados (puerta + tornillos + adhesivo = una tarea)
- Progreso rastreado a través de todos los recursos
Asignación por Recurso
Cada línea de recurso en una tarea puede asignarse a una persona específica. Esto permite a los planificadores designar quién es responsable de recoger cada material o completar cada componente de labor, a nivel de línea, no únicamente a nivel de orden de trabajo.
Funcionamiento de la asignación:
- En el detalle de la tarea, cada fila de recurso cuenta con una columna Asignado a
- La columna aparece automáticamente cuando alguna fila de la tarea lleva una asignación; permanece oculta en tipos de registro como reportes donde la asignación no aplica
- Asignar a alguien una línea de recurso no reserva inventario — registra quién tiene previsto recoger y entregar ese artículo
- El estado real de recogida (quién recogió, cuánto, cuándo) se registra en el libro de transacciones, no en la tarea en sí
¿Por qué hacer el seguimiento a nivel de recurso?
Las órdenes de trabajo agrupan muchas tareas y las asignan a personas, pero una sola orden puede cubrir decenas de líneas de recurso distribuidas entre múltiples tareas. La asignación por recurso llena ese vacío: el planificador puede indicar "Alicia recoge los 50 m de conducto para esta tarea, Roberto se encarga de las cajas de empalme." Cada persona recibe una vista delimitada exactamente a lo que debe recoger, sin ambigüedad sobre quién es responsable de qué artículo.
Acción Enviar Asignaciones:
Una vez establecidas las asignaciones de recursos, la acción Enviar Asignaciones en la página de tareas despacha notificaciones a todos los asignados. Cada persona recibe un único mensaje consolidado con sus órdenes de trabajo (nombre, fecha límite, enlace) y un código QR por cada línea de recurso asignada. El código QR es la autorización de recogida: el trabajador lo escanea en el almacén para retirar su artículo específico. La recogida queda registrada como transacción automáticamente al escanear.
La acción Enviar Asignaciones está disponible tanto como acción de fila sobre tareas individuales como en forma de operación masiva cuando se seleccionan varias tareas en la tabla.
Las Tareas Son Versionadas
A diferencia de asignaciones/reportes, las tareas usan flujo de trabajo version/commit:
Por qué Versionadas:
- Admins diseñan áreas de trabajo offline (túneles de metro, sitios remotos)
- Detección de conflicto espacial necesaria (geografía superpuesta)
- Operaciones batch comunes (rediseñar campaña completa)
- Rollback valioso (deshacer cambio de planificación completo)
Flujo de Trabajo:
- Crear versión (modo borrador)
- Agregar/editar tareas en borrador
- Validación espacial (verificar superposiciones)
- Commit versión → tareas se vuelven "oficiales"
- Trabajadores ven tareas committed en asignaciones
Colaboración Offline: Múltiples admins pueden crear versiones separadas:
- Admin A: Planificar tareas de región norte
- Admin B: Planificar tareas de región sur
- Ambos trabajan offline, commitean después
- Resolución de conflicto si geografía superpuesta
Tipos de Geometría de Tarea
Tareas de Punto
Trabajo de ubicación única (instalación de equipo, inspección).
Ejemplo: Instalar caja de conexión
Geometría: { type: "Point", coordinates: [lng, lat] }
Tareas de Línea
Trabajo lineal (corridas de cable, instalación de tubería).
Ejemplo: Correr 500m de cable de fibra óptica
Geometría: { type: "LineString", coordinates: [[lng1,lat1], [lng2,lat2], ...] }
Tareas de Polígono
Trabajo basado en área (zonas de cobertura, áreas de servicio).
Ejemplo: Alcance puerta a puerta en vecindario
Geometría: { type: "Polygon", coordinates: [[[lng1,lat1], ...]] }
Filtrado por Proximidad
Encontrar tareas cerca de ubicaciones específicas:
Caso de Uso: Trabajador en almacén quiere tareas cercanas
- Abrir página Tareas
- Hacer clic en botón "Filtrar Cercano"
- Arrastrar marcador de mapa a ubicación de almacén
- Establecer distancia (ej. 5 km)
- Tabla muestra solo tareas dentro del radio
Acción de Fila: Hacer clic "Filtrar Cercano" en fila de tarea → auto-establece proximidad a la ubicación de esa tarea
Uso de Tarea en Asignaciones
Las tareas aparecen en asignaciones como opciones de trabajo disponibles:
Asignación Flexible:
- Asignación podría tener 10 tareas disponibles
- Objetivos de recursos requieren completar 1-2 de esas tareas
- Trabajador elige qué tareas completar (flexibilidad)
- Sobre-asignación por 10x común (más opciones que objetivos)
Ejemplo:
Asignación a John:
Objetivos de Recursos: 50m cable, 20 cajas de conexión
Tareas Disponibles: [Tarea1, Tarea2, Tarea3, ... Tarea30]
John completa:
Tarea 5: 30m cable, 12 cajas de conexión
Tarea 12: 20m cable, 8 cajas de conexión
Total: Cumplió objetivo cable, cumplió objetivo cajas de conexión
Trabajador tuvo 30 opciones de tarea para cumplir objetivos - alta flexibilidad.
Seguimiento de Progreso de Tarea
Cálculo: Progreso = Promedio de completación a través de todos los recursos
Ejemplo:
Tarea con 3 recursos:
- Cable Cat6: 10m requerido, 5m completado = 50%
- Tornillos: 8 requerido, 8 completado = 100%
- Labor: 2 horas requerido, 0 horas reportado = 0%
Progreso general = (50% + 100% + 0%) / 3 = 50%
Indicadores Visuales:
- Barra de progreso: Verde ≥100%, Amarillo ≥50%, Rojo <50%
- Indicador de geometría: Marca verde si punto/línea/polígono válido
- Usado en: Muestra qué asignaciones/reportes referencian esta tarea
Creando Tareas
Acceso Requerido: derecho admin tasksCreate
Flujo de Trabajo:
- Navegar a Cumplimiento → Tareas
- Crear nueva versión (o editar borrador existente)
- Hacer clic "Agregar Tarea" en versión
- Llenar info básica (nombre, descripción)
- Seleccionar orden (agrupamiento padre)
- Hacer clic en mapa para establecer geometría
- Agregar recursos (puede agregar múltiples)
- Guardar tarea en borrador
- Commit versión cuando planificación completa
Mejores Prácticas:
- Agrupar materiales relacionados en tarea única (reduce clutter de mapa)
- Usar nomenclatura consistente (ej. "Instalar - Caja de Conexión - Edificio 42")
- Establecer volúmenes de recursos realistas (informa planificación de inventario)
- Incluir recursos de labor (ayuda cálculos de personal)
Generación Bulk de Tareas
Crear muchas tareas similares eficientemente:
Escenario: Instalar 100 cajas de conexión en diferentes edificios
Método 1: Importar desde GeoJSON
- Crear GeoJSON con 100 puntos
- Cada feature tiene propiedades: nombre, descripción, recursos
- Importar → crea 100 tareas en una versión
Método 2: Generar desde Selección de Mapa
- Seleccionar 100 features de edificio existentes en mapa
- Hacer clic "Generar Tareas"
- Elegir template de tarea (requisitos de recursos)
- Crea tarea en cada ubicación de edificio
Método 3: Copiar Tarea Existente
- Seleccionar tarea con configuración correcta de recursos
- Hacer clic "Duplicar Tarea"
- Editar geometría a nueva ubicación
- Repetir para instalaciones similares
Impresión en Lote de Tareas
Un proyecto puede contener decenas o cientos de tareas. En lugar de imprimir cada una desde su página de detalle, usa la acción Imprimir todas las tareas a nivel de proyecto:
- Abre la página de detalle del proyecto padre (
/fulfillment/projects/:id) - Haz clic en Imprimir todas las tareas en el encabezado
- La vista de impresión en lote se abre en
/fulfillment/tasks/batch/[ids]— una lista de IDs de tareas separada por comas en la URL - La pantalla muestra 10 tareas por página (paginado con CSS — todos los registros están en el DOM, por lo que al imprimir se emite todo)
- Imprime la página — cada tarea está separada por un salto de página forzado, por lo que obtienes una tarea por página impresa
Notas:
- Límite de seguridad: la vista en lote está limitada a 200 tareas por ejecución de impresión. Si el proyecto supera este número, un aviso te lo indica y las tareas más allá de 200 se truncan — divide la impresión en lotes más pequeños si es necesario.
- No se requiere trabajo nuevo en el servidor — la vista en lote lee el endpoint existente
/api/tasks/get?_id=csvy renderiza cada tarea usando los mismos componentesRecordDetail*que la página de tarea individual, por lo que el contenido impreso coincide con lo que obtendrías al imprimir las tareas una a una.
Validación de Tarea
Antes de commit de versión, sistema valida:
Conflictos Espaciales:
- Polígonos superpuestos (dos tareas cubriendo misma área)
- Tareas de punto demasiado cerca (umbral configurable)
- Tareas de línea cruzando zonas restringidas
Disponibilidad de Recursos:
- Advertencia si recursos requeridos no en inventario
- No bloquea commit (tareas pueden ser futuras)
- Ayuda planificación de procurement
Validez de Geometría:
- Puntos deben tener coordenadas válidas
- Líneas deben tener al menos 2 puntos
- Polígonos deben cerrar (primer punto = último punto)
Ciclo de Vida de Asignación de Tarea
Flujo Típico:
- Planificación - Admin crea tareas en versión borrador
- Commit - Versión committed, tareas se vuelven oficiales
- Asignación - Tareas agregadas a asignaciones de trabajador (array availableTasks)
- Ejecución - Trabajador completa algunas de las tareas disponibles
- Reporte - Trabajador referencia taskRef en reporte workCompleted
- Progreso - Progreso de tarea actualizado basado en trabajo completado
- Completación - Cuando todos los recursos en 100%, tarea marcada completa
Reuso de Tarea: Las tareas pueden aparecer en múltiples asignaciones:
- Misma tarea asignada a múltiples trabajadores (trabajo dividido)
- Tarea parcialmente completada por un trabajador, terminada por otro
- Progreso agregado a través de todos los reportes
Viendo Detalles de Tarea
Página de Detalle de Tarea Muestra:
- Información básica y geometría
- Lista de requisitos de recursos
- Barra de progreso y porcentaje
- Usado en: Asignaciones y reportes referenciando esta tarea
- Historial de versiones (qué versiones modificaron esta tarea)
- Relación espacial con tareas cercanas
Vista de Mapa:
- Color-coded por progreso (rojo = no iniciado, amarillo = parcial, verde = completo)
- Indicadores de tipo de geometría (ícono para punto, estilo de línea, relleno de polígono)
- Clickable para popup de detalle rápido
- Filtrable por orden, progreso, proximidad