Maquette · module « Pilotage » du socle · v3.38 (numéro provisoire) · données d'exemple · à valider jusque dans la disposition avant tout prompt
« Ma journée » v2 — l'écran qui s'ouvre sur le téléphone. Geste tâches d'abord : une seule tâche « en cours » à la fois ; à « Terminé » l'app propose les heures à pointer. Une tâche peut venir de la direction, d'un chef de projet ou du collaborateur lui-même : même écran, même geste — seule l'origine s'affiche. Un chef de projet voit en plus son bloc « Mon équipe ».
Maintenant — la seule tâche en cours, le chrono, deux boutons : Terminé ou Bloqué. Si la tâche vient d'un autre, un lien discret « Demander un report » ; si elle est à soi, « Déplacer ».
Aujourd'hui — les tâches dues aujourd'hui (et les retards), avec ▶ Commencer. Chaque ligne porte son origine : Direction, Hamza · chef CCIS-TTA, ou rien quand c'est à soi. Une tâche reçue reste « nouvelle » jusqu'au premier geste (Vu ou Commencer).
Ma semaine — ce qui est prévu jour par jour, quelle que soit l'origine. C'est ce qui répond à « ce qu'il fera ».
Mon équipe — chefs de marché seulement : ses collaborateurs sur ses marchés, leur « maintenant », et + Assigner une tâche (limité à ses marchés et à son équipe).
Mes heures — le total pointé du jour, inchangé ; la feuille de temps existante reste accessible.
+ Nouvelle tâche pour moi — titre, marché, échéance : le collaborateur se planifie lui-même. Le chef de marché la voit dans « Mon équipe », la direction dans le cockpit — sans notification.
Ma prime — la ligne sous la date (points du jour · série · niveau du mois) et, tout en bas, le bloc complet : montant projeté, jauge des niveaux, les 5 points du jour cochés ou non, la série, les badges, l'objectif d'équipe. Détail dans l'onglet Primes · gamifiées.
Mission renfort — quand un chef ou la direction a besoin de quelqu'un un soir, un week-end ou un jour férié, la demande apparaît comme une quête, avec sa récompense affichée avant d'accepter : majoration légale, prime renfort, points, badge, et le repos compensateur proposé. « Je prends » → le chef confirme.
Essaie : touche Vu ou ▶ Commencer sur la tâche « nouvelle » (reçue de Hamza) → le badge disparaît ; dans le cockpit, « non vue » disparaît aussi.
Touche Terminé → l'app propose 1,50 h sur CCIS-TTA, modifiable ou refusable. Touche Bloqué → motif obligatoire, chef de marché prévenu.
Passe en « Hamza E. · chef de projet » → + Assigner une tâche à Salma → reviens sur Salma : la tâche est là, « nouvelle », « par Hamza ».
Touche Terminé puis Pointer : un +3 s'envole vers la ligne « Ma prime », qui pulse. Touche Je prends sur la mission renfort : la quête se confirme, avec le repos compensateur proposé.
« Cockpit équipe » — la page direction (panneau admin). Une carte par personne, trois zones : Maintenant / Fait aujourd'hui / Ensuite. Le bandeau ne compte que les exceptions. Dans « Ensuite », chaque tâche dit qui l'a donnée et si elle a été vue. « + Nouvelle tâche » assigne à n'importe qui, sur n'importe quel marché.
Cockpit équipe
mer. 02/09/2026 · 15:50
Par marché — ce qui est ouvert, ce qui accroche, ce qui est dû cette semaine
Marché
Chef de marché
Ouvertes
En retard
Bloquées
Livrables sem.
Prochain livrable
Mis à jour en continu · aucune IA automatique · rapport PDF = même mécanique que la fiche AO
Le moteur derrière les deux écrans — ce qui entrera tel quel dans le prompt Claude Code : objets, états, qui assigne quoi, règles gravées, signaux, notifications, dispositions à respecter, recette.
le journal, écrit à chaque geste : task_id · user_id · de → vers · commentaire · heures_pointees · cree_le. L'affectation elle-même est un geste (« a reçu de Direction »). C'est lui qui répond à « ce qu'il a fait » — sans saisie supplémentaire.
Pont heures
« Terminé » ⇒ proposition d'heures (écart arrondi au ¼ h, modifiable, refusable) ⇒ si acceptée, une ligne timesheets (date, marché, heures, remarque = titre de la tâche). La répartition des coûts RH continue de fonctionner.
Existant réutilisé
employees, projects (chef de marché = lead_employee_id), project_assignments (= l'équipe d'un marché), push_subscriptions, panneau Employé (/espace), panneau Admin, vue imprimable → PDF.
États d'une tâche
À faire→En cours→Terminé
En cours→Bloqué→ reprise →En cours
En cours→ Commencer une autre →À reprendre
Nouvelle= reçue d'un autre, aucun geste encore (drapeau vu_le vide), quel que soit le statut
Phase 2 : En attente de validation pour les livrables vus par le client (modèle CCIS-TTA).
Signaux (seuils dans Réglages)
🔴 En retard
échéance dépassée et tâche non terminée
🟠 Bloqué
statut « Bloqué », avec son motif et depuis quand
⚪ Planning vide
aucune tâche prévue sur les 2 prochains jours ouvrés
⏱ Silence
aucun geste (journal) depuis 48 h ouvrées
✅ Terminées
compte du jour — le seul signal « positif », pour voir que ça avance
« non vue »
pas une tuile : une mention sur la tâche dans « Ensuite », tant que le collaborateur n'a fait aucun geste dessus
Qui assigne quoi — trois origines, un seul écran pour celui qui reçoit
push immédiat au collaborateur : « Nouvelle tâche de Direction : … — échéance jeu. »
Chef de marché (lead_employee_id)
« Mon équipe » sur son téléphone ou dans /espace
les collaborateurs affectés à ses marchés (project_assignments)
ses marchés seulement
oui, sur ses propres affectations ; la direction peut reprendre la main
push immédiat au collaborateur ; la direction ne reçoit rien (elle voit dans le cockpit)
Collaborateur
« + Nouvelle tâche pour moi »
lui-même seulement
ses marchés + interne
oui sur ses propres tâches ; sur une tâche reçue : « Demander un report » (motif) → l'assignant tranche
aucune ; visible dans « Mon équipe » du chef et dans le cockpit
Point de vigilance : un collaborateur ne peut ni supprimer ni réassigner une tâche reçue ; il la termine, la bloque (motif) ou demande un report. La suppression reste à l'assignant ou à la direction, toujours journalisée.
Règles gravées
Responsable unique + échéance obligatoires. Une tâche sans l'un des deux est refusée à l'enregistrement, quelle que soit l'origine.
Une seule tâche « en cours » par personne. Commencer une autre remet la précédente « à reprendre » — jamais deux chronos.
« Bloqué » exige un motif et notifie le chef de marché (et le gérant) immédiatement.
« Terminé » propose les heures, ne les impose pas. Refuser ne crée aucune ligne de temps.
Trois origines, mêmes gestes. L'écran du collaborateur ne change pas selon qui a donné la tâche ; seules l'origine et « nouvelle » s'affichent. Le chef de marché n'assigne que sur ses marchés, à son équipe.
Une tâche reçue ne se supprime pas et ne se réassigne pas par celui qui la reçoit. Il demande un report avec motif ; l'assignant tranche, rien ne bouge tout seul.
Rien ne se ferme ni ne se déplace tout seul. Le logiciel propose, le gérant tranche.
Silence sur la masse, alerte sur l'exception. Une tâche reçue vaut un push (elle s'adresse à quelqu'un) ; une tâche qu'on se donne n'en vaut aucun ; une tâche terminée non plus.
Multi-tenant, base vide. Aucun « IRADA » en dur ; sans tâche, le cockpit affiche « Aucune tâche — planifiez la semaine », zéro erreur.
Notifications (push existantes)
Collaborateur
tâche reçue : immédiat, avec l'origine et l'échéance. 08:30 « Ta journée : 3 tâches » (seulement si le planning n'est pas vide) ; rappel 17:30 si une tâche est encore « en cours ».
Chef de marché
blocage sur son marché : immédiat. Demande de report : immédiat (il tranche). Retard sur son marché : dans le récap du soir.
Gérant
18:00 un seul récap — retards, blocages, silences, tâches non vues depuis 24 h — uniquement s'il y a une exception. Vendredi 17:00 : rapport hebdo PDF + push.
WhatsApp
Phase 1 : bouton « Copier pour WhatsApp » (texte brut du récap). Pas d'API. Phase 3 : WhatsApp Cloud API si le besoin se confirme.
IA
À la demande seulement : « Rédiger le compte rendu hebdo » depuis le journal. Jamais automatique.
Disposition à respecter (le prompt l'épellera)
Téléphone
Colonne unique, ordre exact : navigation du jour → Maintenant (carte accentuée, 2 boutons pleine largeur, lien report/déplacer à droite) → Aujourd'hui (liste, origine sous le titre, ▶ à droite, ligne « nouvelle » surlignée) → Ma semaine (5 colonnes Lun→Ven, aujourd'hui accentué) → Mission renfort (seulement s'il y en a une ouverte ou prise, carte indigo) → Mon équipe (chefs de marché seulement, sinon absent) → Mes heures → Ma prime → bouton « + Nouvelle tâche pour moi » centré. Aucune section vide affichée, aucune 2ᵉ colonne.
Cockpit
Bandeau titre + filtre marché → 5 tuiles de signaux (cliquables = filtres) → grille de cartes 3 colonnes (2 en tablette, 1 en mobile), liseré de couleur = pire signal, « Ensuite » avec origine et « non vue » → panneau détail pleine largeur sous la grille (journal du jour · semaine · charge) → tableau « Par marché » → pied d'actions ; « + Nouvelle tâche » = formulaire en ligne (titre · responsable · marché · échéance · prévu le · livrable), jamais une page à part.
Hors phase 1
Espace client (livrables validés en ligne) · vue groupe IRADA + RUWAD (flux JSON par jeton, comme l'ingest) · WhatsApp API · sous-tâches · dépendances entre tâches · affectation à plusieurs (un responsable, toujours).
Recette exigée dans le prompt
Tâche sans responsable ou sans échéance ⇒ refusée, message clair (pour les 3 origines).
Commencer B alors que A est en cours ⇒ A « à reprendre », une seule « en cours » par personne (test sur 2 tâches, 2 personnes).
Bloqué sans motif ⇒ refusé ; bloqué avec motif ⇒ notification au chef de marché et au gérant, une seule.
Terminé ⇒ proposition d'heures = écart arrondi au ¼ h ; acceptée ⇒ 1 ligne timesheet ; ajustée ⇒ la valeur ajustée ; refusée ⇒ aucune ligne.
Direction assigne à X ⇒ origine = direction, push à X, « nouvelle » chez X et « non vue » au cockpit ; premier geste de X ⇒ vu_le rempli, les deux mentions disparaissent.
Chef de marché assigne : accepté pour un collaborateur affecté à son marché ; refusé (403 + message) hors de son marché ou hors de son équipe ; jamais de push à la direction.
Collaborateur : « pour moi » seulement (un employee_id ≠ le sien ⇒ refusé) ; sur une tâche reçue, supprimer/réassigner ⇒ refusé ; « Demander un report » ⇒ notification à l'assignant, échéance inchangée tant qu'il n'a pas tranché.
Signaux calculés sur un jeu témoin : 1 retard, 1 bloqué, 1 planning vide, 1 silence, N terminées — compte exact.
Cockpit et « Ma journée » sur base vide (RUWAD) ⇒ messages d'accueil, zéro erreur ; « Mon équipe » absent pour qui n'est chef d'aucun marché.
Rapport hebdo ⇒ PDF généré (instance dompdf fraîche par rendu), contenu = par personne + par marché + signaux.
Aucune chaîne « IRADA » en dur ; aucune dépendance composer ; migrations additives idempotentes ; pint, suite complète, npm run build, tag.
Primes gamifiées, journalières — chaque jour, le journal des tâches rapporte des points (barème fixe, 10 max) ; les points font une série, des badges et, en fin de mois, un niveau (Bronze · Argent · Or) qui donne un % de la prime cible fixée par collaborateur. Le moteur propose, tu valides, la paie ou le virement existants paient. Le collaborateur voit tout en direct sur son téléphone ; toi, la page « Primes du mois ».
IRADA · EspaceSalma B. · Chargée de com
↑ Le même bloc « Ma prime » qu'en bas de « Ma journée », vu ici en entier. Rien n'est saisi : tout vient des gestes de la journée.
Ce que le collaborateur voit
Le montant projeté et la cible : « 480 DH projetés si tu tiens ce rythme · cible 800 DH ». Pas une promesse : une projection, recalculée chaque soir.
La jauge des niveaux — où il en est dans le mois, et les trois seuils Bronze · Argent · Or à atteindre.
Les 5 points du jour — cochés ✓ (acquis), ✕ (perdus), … (encore à prendre), – (sans objet). Il sait à 15 h ce qu'il peut encore gagner avant 18 h.
La série — 14 cases, son joker du mois, et ce que la série rapporte (5 j = badge, 10 j = +20 pts).
Les badges du mois et l'objectif d'équipe de la semaine (fixé par le chef de marché) — la part collective, pour que chacun aide les autres.
Les moments de fête — un badge débloqué, un niveau franchi, une série de 10 jours : une carte plein écran, une seconde de confettis, et on revient au travail. Jamais de fête pour les autres, jamais de honte publique.
Simuler sur le téléphone :
Ce que ça change côté direction : tu ne calcules rien. Le 1ᵉʳ du mois, la page « Primes du mois » ci-dessous te propose une ligne par personne, avec le calcul en clair. Tu valides, tu ajustes (motif obligatoire) ou tu refuses — en bloc ou ligne par ligne. Le reste (bulletin, virement) existe déjà.
Essaie : dans le tableau, Ajuster Yassine à 350 DH avec un motif, puis Valider Salma : le total se recalcule, le message dit où part l'argent.
Primes du mois
août 2026 · clôturé le 01/09 · propositions du moteur
Proposée → Due (paie ou virement selon le régime) · Refusée → aucune ligne · tout est journalisé
Temps extra · week-end · fériés — 1) le dû légal — salariés, code du travail, pas une prime
Heure supplémentaire validée
Majoration
Jour de semaine, 6 h – 21 h
+25 %
Nuit, 21 h – 6 h
+50 %
Repos hebdomadaire ou jour férié, de jour
+50 %
Repos hebdomadaire ou jour férié, de nuit
+100 %
Taux horaire
salaire de base ÷ 191. Ex. 6 000 DH → 31,41 DH/h ; un dimanche de 6 h de jour = 6 × 31,41 × 150 % = 283 DH, même si un repos compensateur est accordé (art. 201, loi 65-99).
Sur le bulletin
nouvelle ligne overtime_total (+ détail heures jour / nuit / repos / férié) calculée depuis les renforts validés — jamais saisie à la main, jamais oubliée.
Auto-entrepreneur
hors code du travail : taux contractuel réglable (défaut : +50 % du tarif journalier le week-end et les fériés) → facture complémentaire. Stagiaire : pas de renfort (protégé) ; si exception, gratification.
Repos
24 h de repos hebdomadaire obligatoires : l'app propose le jour de repos compensateur dans la semaine qui suit, le chef confirme. Aucun contingent annuel légal, mais alerte direction au-delà de 2 renforts/mois.
À vérifier
avec ton comptable : modalités de paie des majorations et des jours fériés chômés payés. Je ne suis ni comptable ni avocat.
Temps extra — 2) la prime « renfort », gamifiée — par-dessus le dû légal, réglable
Le flux
un chef de marché ou la direction publie une mission renfort (date, marché, heures, pourquoi) → elle apparaît comme une quête sur les téléphones de l'équipe du marché, récompense affichée avant d'accepter → « Je prends » → le chef confirme → le jour J, les heures se pointent dans « Ma journée » (marquées renfort) → le chef valide le soir → paie (majoration) + prime renfort + points + badge, d'un coup.
Prime renfort
montant fixe par mission validée, réglable : soir (≥ 2 h après 19 h) 50 DH · week-end 200 DH/jour · jour férié 300 DH/jour. Payée avec la prime du mois (même circuit : proposée → validée → paie ou virement).
Points
soir +2 · week-end +5 · férié +5 (en plus des 10 du jour) ; une mission renfort accomplie ne casse jamais la série et compte comme journée à ≥ 7 pts.
Badges
« Pompier » (3 soirs dans le mois) · « Gardien du week-end » (un week-end validé) · « Toujours là » (un férié) · « Bras droit » (a pris une mission que personne ne voulait — publiée depuis plus de 48 h).
Gardes santé
2 missions week-end/férié max par mois comptées en points et prime (au-delà : le dû légal seulement + alerte direction « surcharge ») · repos compensateur proposé automatiquement · jamais deux week-ends de suite sans validation direction · rien pour un travail non demandé ni validé (un samedi passé au bureau sans mission = 0, et la direction en est informée).
Équité
la mission part à celui qui accepte en premier parmi l'équipe du marché ; le chef peut choisir quelqu'un d'autre avec un motif ; l'historique des renforts de chacun est visible du chef (pour tourner).
L'expérience gamifiée — cinq moments, une règle : célébrer, jamais humilier
08:30 · matin
Ta journée
Push unique : « 3 tâches · 10 pts à prendre · série 4 j ». L'écran s'ouvre sur Maintenant. Zéro réglage, zéro menu.
dans la journée
Chaque geste répond
Terminé → +3 qui s'envole vers la ligne prime, qui pulse ; livrable validé par le chef → carte « Badge débloqué » 1 s ; une vibration courte sur le téléphone. Jamais de son.
18:00 · soir
Récap du jour
« 9/10 pts · série 5 j 🔥 · il te manquait : blocage non signalé ». Un conseil, pas un reproche. Silence total si la journée est vide (congé, terrain).
vendredi 17:00
Ma semaine
Carte partageable (image) : 47 pts, badges, objectif d'équipe 3/3 → bouton « Partager sur WhatsApp ». C'est le collaborateur qui choisit de montrer, jamais l'app.
1ᵉʳ du mois
Révélation
Après ta validation : plein écran, la jauge monte jusqu'au niveau, le montant s'affiche, les badges du mois défilent. Puis la prime est sur le bulletin. Une fois par mois, c'est un vrai moment.
Une main, un pouce, 3 boutons. Cibles ≥ 48 px, tout l'important dans le premier écran, la prime en un geste vers le bas.
Instantané et hors ligne. PWA : Ma journée s'ouvre en moins d'une seconde et fonctionne sans réseau (Oued Amlil, Khémisset) ; les gestes se synchronisent au retour du réseau, avec l'heure réelle du geste.
La récompense avant l'effort. Chaque quête (tâche, mission renfort) montre ce qu'elle rapporte avant qu'on la prenne : points, prime, badge, repos.
Fêter, jamais humilier. Les fêtes sont privées ; pas de classement par argent ; le tableau d'équipe est une option, et il montre les séries, pas les primes.
Pas de piège. Aucune notification de points, aucune relance culpabilisante, aucune « perte » affichée en rouge : un point non pris est « à prendre », pas « perdu ».
Bilingue et sobre. Français / arabe (interface miroir RTL), mode sombre, animations < 1 s et coupées si « réduire les animations » est activé.
Le joker, un vrai droit. Un jour raté par mois ne casse rien — la vie existe. L'app le dit clairement : « joker utilisé, série sauvée ».
Tout est explicable. Chaque point, chaque dirham a sa ligne de journal ; le collaborateur peut la lire, le gérant peut l'annuler avec un motif.
Barème journalier — 10 points max par jour, réglable, aucun point négatif
Geste (calculé le soir à 18:00 depuis le journal)
Points
Planning tenu — toutes les tâches reçues dues aujourd'hui terminées, ou reportées avant l'échéance avec motif accepté
3
Livrable validé conforme et à l'heure par le chef de marché (1 seul compte par jour — découper ne rapporte rien)
3
Zéro tâche en retard ce soir
2
Journée à jour — aucune tâche « en cours » fantôme à 18:00, heures pointées
1
Blocage signalé à temps, motif validé par le chef (compte POUR, jamais contre)
1
Objectif d'équipe de la semaine atteint (fixé par le chef, ex. « 3 livrables CCIS-TTA rendus ») — à chaque membre, le vendredi
+5
Coup de pouce direction (motif obligatoire, journalisé, 2 par mois max)
+5
Mission renfort validée — soir / week-end / férié (hors des 10 du jour ; 2 week-ends-fériés max par mois)
+2 / +5 / +5
Un retard = 0 point de « planning tenu » ce jour-là et la série s'arrête — c'est toute la sanction. Jours de congé et fériés : ni points ni pénalité, retirés du maximum du mois.
Niveaux, séries, badges
Niveau du mois
points ÷ maximum du mois (jours ouvrés × 10) : < 60 % rien · 60–74 % Bronze = 25 % de la cible · 75–89 % Argent = 60 % · ≥ 90 % Or = 100 %. Seuils et pourcentages dans Réglages.
Prime cible
montant fixe par collaborateur, dans sa fiche (ex. 800 DH). Ni % du salaire, ni montant par livrable.
Série
jours ouvrés consécutifs à ≥ 7 points. 5 jours → badge ; 10 jours → +20 pts au mois ; 20 jours → +40 pts. 1 joker par mois : une journée ratée ne casse pas la série (Ramadan, urgence terrain).
Badges (mensuels)
« Livreur J-J » (100 % des livrables à l'heure) · « Zéro retard » · « Toujours à jour » (aucune journée sans geste) · « Bon coéquipier » (a débloqué un collègue ou rendu un livrable pour l'objectif d'équipe). Un badge = de la fierté, pas des dirhams — sauf « Livreur J-J » : +10 pts.
Classement
désactivé par défaut. Option « Tableau d'équipe » (séries et niveaux de chacun, visible par l'équipe) activable par la direction. Jamais de classement par montant.
Chef de marché
ses propres points + ponctualité de son équipe (poids réglable, défaut 20 % de sa cible) + les primes marché déjà existantes (marge, décompte encaissé).
Gardes anti-triche — gravées, non réglables
Seules les tâches reçues comptent pour « planning tenu » et « livrable » ; celles qu'on se donne ne comptent que dans « journée à jour ».
Un livrable par jour au maximum dans les points : découper un travail en dix tâches ne rapporte rien de plus.
Un blocage à motif validé suspend le chrono (attente client, attente gérant) : on ne perd rien pour un retard causé par d'autres.
Un report accordé déplace l'échéance sans pénalité ; 3 reports dans le mois ⇒ signal au chef, pas de points en moins.
Base insuffisante (moins de 5 tâches reçues échues dans le mois, ou arrivée en cours de mois) ⇒ pas de niveau automatique, prime manuelle seulement.
Le chef ne valide pas ses propres livrables ; la direction peut annuler toute validation (motif, journalisé).
Rien n'est versé sans validation : le moteur propose, le gérant tranche, ligne par ligne ou en bloc.
Objets & moteur — on réutilise BonusEngine, pas un second système
bonus_points
le grand livre journalier : employee_id · date · points · detail (json : quel geste a compté) · serie · joker_utilise. Calculé par le planificateur à 18:00, recalculable (idempotent) pour un jour donné.
bonus_rules
nouveau déclencheur cloture_mensuelle et base bareme_niveaux ; colonne params (json) = barème, seuils, joker, poids équipe du chef. Les règles marché existantes (soumission_retenue, decompte_encaisse, fin_de_marche) restent intactes.
bonuses
nouveau statut proposee avant due ; colonnes periode (2026-08) et details (json : points, niveau, cible, coups de pouce, ajustement + motif). Puis le circuit existant : pay_with_payroll → bonus_total du bulletin, ou virement par transaction.
les missions renfort : project_id · date · type (soir | week_end | ferie) · heures_prevues · motif · publiee_par · employee_id (qui l'a prise) · statut (publiee → prise → confirmee → validee) · heures_jour / heures_nuit pointées · repos_compensateur_le. Une mission validée alimente d'un coup : timesheets (marquées renfort), la ligne overtime_total de la paie, une prime renfort (bonuses) et bonus_points.
payrolls
overtime_total + overtime_detail (json : heures et taux par catégorie). Calcul : base ÷ 191 × heures × (1 + majoration).
Paiement par régime
salarié → avec la paie (imposable, CNSS/AMO) · auto-entrepreneur → virement sur facture complémentaire · stagiaire → gratification par virement · contractuel non déclaré → virement, à régulariser avec le comptable.
À vérifier avec le comptable
traitement fiscal/social de la prime de rendement ; risque de « droit acquis » si la prime devient fixe et régulière → règlement de primes écrit, variable et conditionnel, remis à chaque collaborateur. Je ne suis ni comptable ni avocat.
Disposition & recette
Téléphone
une ligne « Ma prime » sous la navigation du jour (points du jour · série · niveau) → touche = descend au bloc « Ma prime » placé après « Mes heures » : montant projeté + cible · jauge des niveaux · 5 points du jour cochés · série (14 cases) · badges · objectif d'équipe. Aucune notification de points ; un seul push à la validation mensuelle (« Prime d'août validée : 480 DH »).
Direction
page « Primes du mois » : bandeau (jours ouvrés, max, total proposé) → tableau 1 ligne par collaborateur (points, niveau, cible, proposé, détail du calcul en clair, décision Valider / Ajuster (montant + motif) / Refuser) → pied : valider tout, coup de pouce, règlement PDF. Accessible aussi depuis le cockpit (bouton « Primes du mois »).
Recette
1) journée témoin : 5 gestes → 10 pts exacts, recalcul idempotent ; 2) tâche auto-créée terminée ⇒ 0 pt planning/livrable ; 3) blocage validé ⇒ pas de retard compté ; 4) 2 livrables le même jour ⇒ 3 pts, pas 6 ; 5) série 5 jours ⇒ badge, joker consomme 1 jour raté, 2ᵉ jour raté ⇒ série rompue ; 6) mois témoin 21 jours : 182 pts ⇒ 87 % ⇒ Argent ⇒ 60 % × 800 = 480 ; 7) base insuffisante ⇒ aucune proposition automatique ; 8) Valider ⇒ due + bonus_total du bulletin (salarié) ou transaction (AE) ; Refuser ⇒ aucune ligne ; Ajuster sans motif ⇒ refusé ; 9) chef validant son propre livrable ⇒ refusé ; 10) base vide (RUWAD) ⇒ « Aucune prime proposée », zéro erreur ; 11) mission renfort dimanche 6 h de jour, base 6 000 ⇒ overtime_total = 283 DH, prime renfort 200, +5 pts, série intacte, repos compensateur proposé ; 12) 3ᵉ week-end du mois ⇒ majoration due, 0 pt, 0 prime, alerte direction ; 13) heures pointées un samedi sans mission ⇒ rien, direction informée ; 14) stagiaire ⇒ aucune mission proposable ; 15) « réduire les animations » activé ⇒ aucune animation, mêmes informations.