Attributions
Les attributions allouent le travail aux utilisateurs, définissent les cibles de ressources, et gèrent l'autorisation d'inventaire via les codes QR de retrait. Les attributions opèrent en temps réel (pas versionnées) pour une confirmation immédiate du travailleur.
Structure des Attributions
Page des attributions montrant les allocations de travail actives avec statut et codes QR
Champs de Base :
- Nom - Nom descriptif d'attribution
- Description - Instructions de travail ou contexte
- Assigné À - Tableau d'utilisateurs (prise en charge des attributions d'équipe)
- Statut - pending, in-progress, completed, cancelled
- Créé Par - Utilisateur qui a créé l'attribution
- Délai - Date de début, date d'échéance, heures estimées
Définition du Travail :
- Tâches Disponibles - Tableau d'IDs de tâches que le travailleur peut choisir (sur-allocation 10x commune)
- Cibles de Ressources - Objectifs à accomplir (pas de réservations dures)
Gestion d'Inventaire :
- Stock Planifié - Demande d'inventaire attendue (planification douce, pas de verrous)
- Code de Retrait - JWT pour transfert d'inventaire autorisé
- Expiration du Code de Retrait - Quand l'autorisation expire
- Retrait Restant - Ce qui reste à retirer (après retraits partiels)
Opération en Temps Réel
Les attributions contournent le flux de travail version/commit :
Pourquoi Temps Réel :
- Les travailleurs ont besoin de réponse immédiate : "Ai-je ce travail ?"
- Le calcul de paiement nécessite des données d'attribution validées
- Pas de valeur dans la rédaction hors ligne (les attributions sont exécution, pas planification)
- La visibilité du stock doit être actuelle pour la validation de retrait QR
API Direct :
- Créer/mettre à jour via le point de terminaison
/api/workorders/upsert - Les changements visibles immédiatement aux travailleurs assignés
- Pas d'attente pour les commits de version admin
- Permet la réallocation dynamique du travail
Cibles de Ressources (Pas Réservations)
Le tableau resourceTargets définit les objectifs de travail, PAS les verrous d'inventaire :
Exemple :
Attribution à John :
Cibles de Ressources : [
{ resource: "Câble Cat6", volume: 50, uom: "meters" },
{ resource: "Boîtes de Jonction", volume: 10, uom: "units" }
]
Points Clés :
- NE réserve PAS 50m de câble de l'inventaire
- D'autres travailleurs peuvent encore retirer les mêmes matériaux
- L'inventaire alloué au moment du scan QR (premier arrivé, premier servi)
- Permet la flexibilité lorsque les priorités changent en milieu de journée
Pourquoi Pas de Réservations Dures :
- Les priorités changent rapidement dans les opérations sur le terrain
- Le travailleur pourrait appeler malade (stock réservé devient indisponible)
- Plusieurs travailleurs pourraient partager le même pool d'inventaire
- L'entrepôt ne peut pas prédire le timing exact de retrait
Stock Planifié (Optionnel) : Prévoir la demande sans verrous :
Stock Planifié : [
{ stockItemId: warehouse_cable_id, resource: "Câble Cat6", volume: 50, uom: "meters" }
]
Aide le personnel d'entrepôt :
- Voir la demande totale attendue sur les attributions
- Prépare les matériaux pour le retrait (mettre de côté sans verrouiller)
- Si stock insuffisant, avertit avant l'arrivée du travailleur
Tâches Disponibles (Flexibilité 10x)
Le tableau availableTasks fournit le choix du travailleur :
Exemple :
Attribution :
Cibles de Ressources : 50m câble
Tâches Disponibles : [Tâche1, Tâche2, Tâche3, ... Tâche30]
Chaque tâche nécessite 2-10m câble
Le travailleur choisit quelles tâches terminer pour atteindre la cible de 50m
Avantages de la Sur-Allocation :
- Le travailleur choisit l'itinéraire optimal (tâches les plus proches d'abord)
- Contourner les obstacles (bâtiment verrouillé, retard météo)
- S'adapter à la disponibilité d'inventaire (certaines tâches ont besoin de matériaux pas en stock)
- Autonomie accrue (jugement du travailleur valorisé)
Ratio Typique :
- Sur-allocation 10x commune (10 unités de travail, 100 unités d'options)
- Assure que le travailleur ne manque jamais de tâches
- Les tâches incomplètes roulent à l'attribution suivante
Codes QR de Retrait
Détail d'attribution montrant l'allocation de ressources, code QR, et suivi en temps réel
Les attributions peuvent générer des codes QR basés JWT pour l'autorisation d'inventaire :
Génération :
- Créer une attribution avec cibles de ressources
- Le système génère
pickupCode(JWT) contenant :- IDs utilisateur autorisés (du tableau assignedTo)
- Cibles de ressources (ce qui peut être retiré)
- Timestamp d'expiration
- IDs d'élément de stock source (optionnel - stock spécifique)
Affichage QR :
- Affiché seulement aux destinataires autorisés (utilisateurs assignedTo)
- Backend applique : utilisateurs non autorisés voient
pickupCode: null - Image QR 200×200px dans la vue de détail d'attribution
- Montre la date d'expiration si
pickupCodeExpiresdéfini
Flux de Scan :
Flux de Retrait QR :
Attribution Créée → QR Généré (JWT) → Travailleur Scanne → Validation → Transaction de Transfert
↓ ↓ ↓ ↓ ↓
Cibles de Ressources Code de Retrait Caméra/Scanner Vérif Auth Stock Mis à Jour
Expiration Disponibilité GPS Enregistré
Signature
- Le travailleur ouvre le scanner (app mobile ou caméra)
- Scanne le code QR d'attribution
- Le système valide :
- Signature JWT et expiration
- Le scanner est le destinataire autorisé OU a la permission
canFacilitatePickups - Disponibilité du stock au site source
- Crée automatiquement la transaction de transfert
- Le site personnel du travailleur reçoit l'inventaire
Retraits Partiels :
Attribution demande : 100 unités
Seulement 60 disponibles → travailleur prend 60
pickupRemaining mis à jour : 40 unités
Même QR réutilisable lorsqu'il est réapprovisionné (JWT encore valide)
Retraits Assistés par le Personnel :
Personnel d'entrepôt avec permission canFacilitatePickups :
- Peut scanner QR au nom du travailleur autorisé
- Transaction enregistre : scanMethod = "staff", scannerUserId = staff_id
- Permet le modèle d'entrepôt sans surveillance (travailleur arrive, personnel facilite le transfert)
Statut d'Attribution
Cycle de Vie d'Attribution :
pending → in-progress → completed
↓ ↓ ↓
Créé Premier Rapport Toutes les Cibles Atteintes
↓ Soumis ou Mise à Jour Manuelle
└──────→ cancelled (travail redirigé/reporté)
pending - Créé, pas commencé
- État initial pour les nouvelles attributions
- Le travailleur n'a pas encore commencé le travail
in-progress - Travail en cours
- Au moins un rapport soumis
- Ou travailleur a mis à jour le statut manuellement
completed - Tout le travail terminé
- Toutes les cibles de ressources atteintes (ou dépassées)
- Travailleur marqué comme terminé
cancelled - Attribution plus nécessaire
- Travail redirigé vers quelqu'un d'autre
- Délai changé, travail reporté
- Encore visible dans l'historique (option de suppression logique)
Calcul du Progrès
Le progrès d'attribution basé sur les cibles de ressources, pas les tâches disponibles :
Formule :
Pour chaque cible de ressource :
Sommer tout le travail terminé des rapports
Diviser par le volume cible
Caper à 100% par ressource
Global = Moyenne sur toutes les cibles de ressources
Exemple :
Cibles de Ressources :
- 50m câble
- 10 boîtes de jonction
Rapports soumis :
- Rapport A : 30m câble, 6 boîtes de jonction
- Rapport B : 25m câble, 5 boîtes de jonction
Progrès :
Câble : (30 + 25) / 50 = 110% → capé à 100%
Boîtes : (6 + 5) / 10 = 110% → capé à 100%
Global : (100% + 100%) / 2 = 100%
Indicateurs Visuels :
- Barre de progrès : Vert ≥100%, Jaune ≥50%, Rouge <50%
- Utilisé dans : Rapports et validations référençant cette attribution
Création d'Attributions
Accès Requis : Droit d'administration assignmentsCreate
Flux de Travail :
- Naviguer vers Exécution → Attributions
- Cliquer sur "Ajouter une Attribution"
- Remplir les infos de base (nom, description)
- Glisser les utilisateurs dans le champ "Assigné À" (prise en charge du glisser-déposer)
- Définir le délai (date de début, date d'échéance)
- Ajouter les cibles de ressources (ce que le travailleur devrait accomplir)
- Glisser les tâches dans le champ "Tâches Disponibles" (depuis la page Tâches)
- Optionnellement définir le stock planifié (prévoir la demande)
- Générer le code de retrait si inventaire protégé nécessaire
- Enregistrer (immédiatement visible aux travailleurs assignés)
Prise en Charge du Glisser-Déposer :
- Glisser les utilisateurs de la page Utilisateurs → champ Assigné À
- Glisser les tâches de la page Tâches → champ Tâches Disponibles
- Fonctionne entre onglets navigateur (configuration multi-moniteur)
Filtrage des Attributions
Filtres Pré-Construits :
- Créé par moi - Attributions que vous avez créées
- Assigné à moi - Vos attributions de travail
Filtres Personnalisés :
- Statut (pending, in-progress, completed, cancelled)
- Plage de dates (date de début, date d'échéance)
- Assigné à un utilisateur spécifique
- Contient une tâche spécifique
Vue de Détail d'Attribution
Informations Affichées :
- Détails de base (nom, description, statut)
- Utilisateurs assignés (objets glissables)
- Liste des cibles de ressources
- Liste des tâches disponibles
- Barre de progrès et pourcentage
- Code QR (si autorisé et pickupCode existe)
- Retrait restant (après retraits partiels)
- Rapports soumis pour cette attribution
- Historique des transactions (retraits effectués)
Actions Disponibles :
- Mettre à jour le statut
- Éditer le délai
- Ajouter/supprimer des tâches
- Régénérer le code de retrait (si expiré)
- Créer un nouveau rapport (action rapide depuis l'attribution)
Création de Rapports depuis les Attributions
Flux rapide pour rapporter le travail :
- Ouvrir la vue de détail d'attribution
- Cliquer sur le bouton "Créer un Rapport" (dans l'emplacement actions)
- Formulaire de rapport pré-rempli apparaît :
- Assigné à : Même que l'attribution
- Tâches disponibles : Auto-remplies depuis l'attribution
- Consommation suggérée : Basée sur les cibles de ressources
- Le travailleur ajuste les réels (ce qui s'est vraiment passé)
- Soumettre le rapport
- Transactions de consommation créées automatiquement
- Progrès d'attribution mis à jour
Notifications
Notifications par lot pour éviter le spam : Traitement Intelligent :
- 10+ changements d'attribution en 1 heure → notification de résumé unique
- Notification individuelle pour les attributions urgentes/haute priorité
Programme de Digest :
- Digest horaire (configurable par utilisateur)
- Résumé de fin de journée
- Compteur de badge en temps réel dans l'app
Contenu de Notification :
- Nouvelles attributions créées pour vous
- Changements de statut sur vos attributions
- Approche des dates d'échéance
- Codes de retrait expirant bientôt
Meilleures Pratiques
Sur-Allouer les Tâches :
- Fournir 10x plus de tâches que nécessaire pour atteindre les cibles
- L'autonomie du travailleur améliore l'efficacité
- Réduit les temps d'arrêt "manque de travail"
Définir des Délais Réalistes :
- Considérer le temps de trajet entre tâches
- Compter les retards de retrait de matériaux
- Marge pour météo, trafic, sites verrouillés
Utiliser les Codes de Retrait pour l'Inventaire Protégé :
- Équipement de haute valeur
- Matériaux contrôlés nécessitant responsabilité
- Éléments avec exigences de suivi réglementaire
Surveiller les Retraits Partiels :
- Vérifier
pickupRemainingrégulièrement - Réapprovisionner pour que les travailleurs puissent terminer les retraits
- Communiquer les retards aux travailleurs assignés
Examiner les Attributions Terminées :
- Comparer les cibles de ressources à la consommation réelle (des rapports)
- Identifier les erreurs d'estimation (trop/peu alloué)
- Améliorer la planification future d'attribution