Aptli

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 :

  1. Créer une attribution avec cibles de ressources
  2. 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 pickupCodeExpires dé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
  1. Le travailleur ouvre le scanner (app mobile ou caméra)
  2. Scanne le code QR d'attribution
  3. 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
  4. Crée automatiquement la transaction de transfert
  5. 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 :

  1. Naviguer vers Exécution → Attributions
  2. Cliquer sur "Ajouter une Attribution"
  3. Remplir les infos de base (nom, description)
  4. Glisser les utilisateurs dans le champ "Assigné À" (prise en charge du glisser-déposer)
  5. Définir le délai (date de début, date d'échéance)
  6. Ajouter les cibles de ressources (ce que le travailleur devrait accomplir)
  7. Glisser les tâches dans le champ "Tâches Disponibles" (depuis la page Tâches)
  8. Optionnellement définir le stock planifié (prévoir la demande)
  9. Générer le code de retrait si inventaire protégé nécessaire
  10. 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 :

  1. Ouvrir la vue de détail d'attribution
  2. Cliquer sur le bouton "Créer un Rapport" (dans l'emplacement actions)
  3. 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
  4. Le travailleur ajuste les réels (ce qui s'est vraiment passé)
  5. Soumettre le rapport
  6. Transactions de consommation créées automatiquement
  7. 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 pickupRemaining ré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