# Pilotage d'équipe et primes gamifiées — le module de A à Z

**Socle IRADA / RUWAD · document de conception · version du 2 septembre 2026 · maquette v4 (`docs/maquettes/pilotage-v3.38.html`, sha `2067d73c`)**

Ce document explique, du besoin jusqu'à la recette, comment fonctionne le module « Pilotage » du socle : ce que chacun fait, a fait et fera ; comment le travail enregistré devient des points, des niveaux et des primes ; comment le temps extra est payé ; ce qui est réglable et ce qui ne l'est pas ; et ce qu'il faut construire. Il sert de référence au gérant, à l'équipe (règlement), et à Claude Code (prompt).

---

## 0. En une page

**Le besoin.** Savoir à tout moment, simplement, ce que chaque personne **fait**, **a fait** et **fera** — pour IRADA, RUWAD et leurs marchés — sans surveiller les écrans et sans réunions de contrôle.

**La réponse.** Une couche **tâches** ajoutée au socle existant. Chaque tâche a un responsable unique, une échéance et une origine (direction, chef de marché, ou la personne elle‑même). Le collaborateur n'a que trois gestes par jour sur son téléphone : **Commencer**, **Terminé**, **Bloqué**. Tout le reste est déduit : le journal (« a fait »), la tâche en cours (« fait »), la semaine planifiée (« fera »).

**Le pilotage.** La direction regarde un **cockpit** : une carte par personne et seulement les exceptions — retard, bloqué, planning vide, silence. Deux minutes par jour.

**Les primes.** Chaque soir, le journal rapporte des **points** (barème fixe, 10 par jour au maximum) ; les points font une **série**, des **badges**, et en fin de mois un **niveau** (Bronze · Argent · Or) qui donne un pourcentage d'une **prime cible** fixée par collaborateur. Le moteur **propose**, le gérant valide, la paie ou le virement existants paient. Le collaborateur voit tout en direct.

**Le temps extra.** Deux couches jamais mélangées : le **dû légal** (heures supplémentaires majorées, sur le bulletin) et une **prime « renfort »** gamifiée (mission publiée, récompense affichée avant d'accepter, points, badges), avec des gardes de santé.

**Les principes.** Ce qui n'est pas dans l'app n'existe pas · le logiciel propose, le gérant tranche · silence sur la masse, alerte sur l'exception · fêter, jamais humilier · tout est explicable ligne par ligne.

---

## 1. Le point de départ : ce qui existe, ce qui manque

Le socle (`app.iradaventure.ma`, même code pour RUWAD) gère déjà les collaborateurs (`employees`, avec leur régime : salarié, auto‑entrepreneur, stagiaire, contractuel), les marchés (`projects`, avec un chef de marché `lead_employee_id`), les affectations (`project_assignments` = l'équipe d'un marché), les feuilles de temps (`timesheets`, heures par jour et par marché), l'écran téléphone « Ma journée » (saisie des heures), les notifications push, les jours fériés validés, la paie, et un moteur de primes (`BonusEngine`) qui récompense les résultats commerciaux (soumission retenue, décompte encaissé, fin de marché).

Ce que le socle sait aujourd'hui : *combien d'heures* chacun a passées sur quel marché. Ce qu'il ne sait pas : *quoi exactement*, *où ça en est*, *ce qui est prévu*. C'est la couche tâches qui manque — et elle s'appuie sur tout le reste au lieu de le remplacer.

**Décisions prises le 2 septembre 2026.** Le « super outil » est un module du socle (ni app séparée, ni abonnement). Le geste quotidien est « tâches + heures proposées » : les feuilles de temps restent la vérité comptable. Une maquette cliquable est validée avant tout prompt. Une tâche peut être affectée par la direction, un chef de marché ou le collaborateur lui‑même. La prime cible est un montant fixe par personne ; le rythme est journalier et gamifié ; les livrables sont validés par le chef de marché sous contrôle direction ; le collaborateur voit sa prime projetée en direct.

---

## 2. Les acteurs et leurs droits

| Qui | Ce qu'il fait | Ce qu'il voit | Ce qu'il ne peut pas |
|---|---|---|---|
| **Direction** (gérant, admin) | crée et affecte des tâches à n'importe qui sur n'importe quel marché ; publie des missions renfort ; valide les primes ; règle les paramètres | le cockpit complet, tous les journaux, « Primes du mois », les réglages | rien ne lui est interdit, mais tout ce qu'elle annule ou ajuste est journalisé avec motif |
| **Chef de marché** (`lead_employee_id` d'un marché) | affecte des tâches **à l'équipe de ses marchés** ; valide les livrables de son équipe ; publie des missions renfort sur ses marchés ; fixe l'objectif d'équipe de la semaine ; accorde ou refuse les reports | « Mon équipe » sur son téléphone ; son cockpit restreint à ses marchés | affecter hors de ses marchés ou hors de son équipe (refus 403) ; valider ses propres livrables ; retirer des points |
| **Collaborateur** | commence, termine, bloque ; se crée des tâches **pour lui seul** ; demande un report ; prend une mission renfort ; pointe ses heures | sa journée, sa semaine, sa prime en direct, son journal | supprimer ou réassigner une tâche reçue ; changer l'échéance d'une tâche reçue ; voir les primes des autres |
| **Externe / auto‑entrepreneur** | comme un collaborateur, sur les marchés où il est affecté | idem | pas de bulletin : prime et renfort passent par facture complémentaire |
| **Stagiaire** | comme un collaborateur | idem | aucune mission renfort ne lui est proposable |

---

## 3. La tâche

**Définition.** Une tâche = un titre, un **responsable unique**, une **échéance** (date, heure optionnelle), un marché (ou « fonctionnement interne »), un jour prévu, une priorité, une estimation en heures, un drapeau **livrable**, et une **origine** : `direction`, `chef_de_marche` ou `soi_meme`. Sans responsable ou sans échéance, elle est refusée à l'enregistrement, quelle que soit l'origine.

**États.** À faire → En cours → Terminé. Depuis En cours : Bloqué (motif obligatoire) puis reprise. Commencer une autre tâche remet la précédente « à reprendre » : **une seule tâche en cours par personne**, jamais deux chronos. Une tâche reçue d'un autre est « **nouvelle** » jusqu'au premier geste du collaborateur (Vu ou Commencer) ; la direction la voit « non vue » tant que ce geste n'a pas eu lieu.

**Le journal.** Chaque geste écrit une ligne : a reçu de…, a commencé, a terminé, a pointé N h, a déclaré bloqué (motif), a demandé un report, a été validé par…. L'affectation elle‑même est un geste. C'est ce journal qui répond à « ce qu'il a fait » — personne ne rédige de compte rendu.

**Le report.** Sur sa propre tâche, le collaborateur déplace l'échéance librement. Sur une tâche reçue, il **demande** un report avec motif ; l'assignant tranche ; l'échéance ne bouge pas tant qu'il n'a pas répondu. Un report accordé déplace l'échéance sans pénalité ; trois reports dans le mois font un signal au chef, pas une perte de points.

**Le blocage.** « Bloqué » exige un motif (attente client, attente interne, matière manquante, autre) et notifie immédiatement le chef de marché et le gérant. Un blocage dont le motif est validé **suspend le chrono** : on ne perd rien pour un retard causé par d'autres.

**Le livrable.** Une tâche marquée « livrable » passe, à « Terminé », en attente de validation du chef de marché : *conforme* ou *à reprendre*. Seuls les livrables validés conformes et à l'heure comptent dans les points. Le chef ne valide pas ses propres livrables ; la direction peut annuler toute validation avec motif.

**Les heures.** À « Terminé », l'app **propose** les heures à pointer sur le marché (l'écart entre Commencer et Terminé, arrondi au quart d'heure), modifiables ou refusables. Si elles sont acceptées, une ligne de feuille de temps est créée. La répartition des coûts par marché continue donc de fonctionner sans saisie supplémentaire.

---

## 4. Le quotidien du collaborateur — « Ma journée »

L'écran s'ouvre sur le téléphone, en colonne unique, dans cet ordre :

1. **La date**, et juste dessous la ligne « Ma prime » : points du jour · série · niveau du mois.
2. **Maintenant** — la seule tâche en cours, le chrono, deux boutons pleine largeur : **Terminé** ou **Bloqué**. Un lien discret : « Demander un report » (tâche reçue) ou « Déplacer » (tâche à soi).
3. **Aujourd'hui** — les tâches dues aujourd'hui et les retards, avec ▶ Commencer. Chaque ligne porte son origine (« par Direction », « par Hamza · chef CCIS‑TTA », rien si c'est à soi) et, le cas échéant, le badge « nouvelle » et un bouton « Vu ».
4. **Ma semaine** — cinq colonnes lundi → vendredi, ce qui est prévu jour par jour. Un jour vide se voit ici et remonte dans le cockpit.
5. **Mission renfort** — seulement s'il en existe une ouverte ou prise (carte indigo, voir §8).
6. **Mon équipe** — chefs de marché seulement : leurs collaborateurs, leur « maintenant », le bouton « Assigner une tâche ».
7. **Mes heures** — le total pointé du jour, la feuille de temps existante reste accessible.
8. **Ma prime** — le bloc complet (voir §7).
9. **＋ Nouvelle tâche pour moi** — titre, marché, échéance ; le chef la voit dans « Mon équipe » et la direction dans le cockpit, sans notification.

Aucune section vide n'est affichée ; aucune deuxième colonne. Les cibles tactiles font au moins 48 px. L'écran fonctionne hors ligne (terrain) : les gestes gardent leur heure réelle et se synchronisent au retour du réseau.

---

## 5. Le pilotage — le cockpit de la direction

**La page.** Un bandeau de titre avec un filtre par marché ; **cinq tuiles de signaux** cliquables (elles filtrent) ; une **grille de cartes, une par personne** (trois colonnes, deux en tablette, une en mobile), chacune avec trois zones — **Maintenant** (tâche en cours, depuis quand, par qui donnée, ou « rien en cours · dernier geste… »), **Fait aujourd'hui**, **Ensuite** (avec origine et mention « non vue ») — et un liseré de couleur pour le pire signal ; un **panneau de détail** pleine largeur au clic (journal du jour, semaine, charge) ; un tableau **par marché** (ouvertes, en retard, bloquées, livrables de la semaine, prochain livrable) ; un pied d'actions : ＋ Nouvelle tâche (formulaire en ligne : titre · responsable · marché · échéance · prévu le · livrable), Planifier la semaine, Rapport hebdo (PDF), Primes du mois, Copier pour WhatsApp.

**Les cinq signaux.**

| Signal | Définition | Seuil par défaut |
|---|---|---|
| 🔴 En retard | échéance dépassée, tâche non terminée | — |
| 🟠 Bloqué | statut « Bloqué », avec motif et depuis quand | — |
| ⚪ Planning vide | aucune tâche prévue sur les prochains jours ouvrés | 2 jours |
| ⏱ Silence | aucun geste dans le journal | 48 h ouvrées |
| ✅ Terminées aujourd'hui | le seul signal positif, pour voir que ça avance | — |

« Non vue » n'est pas une tuile : c'est une mention sur la tâche, tant que le collaborateur n'a fait aucun geste dessus.

**Le rapport hebdo.** Le vendredi à 17 h, un PDF se génère seul (même mécanique que les fiches AO : vue imprimable, instance dompdf fraîche par rendu) : par personne (terminées, retards, prévues, reçues / à soi), par marché (livrables dus et rendus), signaux à trancher. Un bouton « Rédiger le compte rendu » appelle l'IA **à la demande seulement** ; rien d'automatique.

---

## 6. Les notifications — silence sur la masse, alerte sur l'exception

| Destinataire | Quand | Quoi |
|---|---|---|
| Collaborateur | tâche reçue | immédiat, avec l'origine et l'échéance |
| Collaborateur | 08 h 30 | « Ta journée : 3 tâches · 10 pts à prendre · série 4 j » — seulement si le planning n'est pas vide |
| Collaborateur | 17 h 30 | rappel si une tâche est encore « en cours » |
| Collaborateur | 18 h 00 | récap du jour : points, série, ce qui a manqué — un conseil, pas un reproche ; silence total si la journée est vide (congé, terrain) |
| Chef de marché | immédiat | blocage sur son marché ; demande de report (il tranche) |
| Chef de marché | 18 h 00 | retards sur ses marchés, dans le récap |
| Gérant | 18 h 00 | un seul récap — retards, blocages, silences, tâches non vues depuis 24 h — **uniquement s'il y a une exception** |
| Gérant | vendredi 17 h | rapport hebdo PDF |
| Collaborateur | 1ᵉʳ du mois, après validation | « Prime d'août validée : 480 DH » |

Jamais de notification de points dans la journée. Une tâche qu'on se donne ne notifie personne. Une tâche terminée ne notifie personne. WhatsApp : en phase 1, un bouton « Copier pour WhatsApp » (texte brut du récap) ; pas d'API.

---

## 7. Les primes gamifiées

### 7.1 Le barème du jour (10 points au maximum)

Calculé chaque soir à 18 h, depuis le journal, pour chaque collaborateur. Aucun point négatif.

| Geste | Points |
|---|---|
| **Planning tenu** — toutes les tâches *reçues* dues aujourd'hui sont terminées, ou reportées avant l'échéance avec motif accepté | 3 |
| **Livrable validé** conforme et à l'heure par le chef de marché — un seul compte par jour | 3 |
| **Zéro retard** ce soir | 2 |
| **Journée à jour** — aucune tâche « en cours » fantôme à 18 h, heures pointées | 1 |
| **Blocage signalé à temps**, motif validé — compte *pour*, jamais contre | 1 |

### 7.2 Les bonus

| Bonus | Points |
|---|---|
| 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 au maximum | +5 |
| Série : 10 jours ouvrés consécutifs à ≥ 7 points / 20 jours | +20 / +40 |
| Badge « Livreur J‑J » (100 % des livrables du mois à l'heure) | +10 |
| Mission renfort validée — soir / week‑end / férié (hors des 10 du jour) | +2 / +5 / +5 |

**La série** compte les jours ouvrés consécutifs à 7 points ou plus. À 5 jours, un badge ; à 10 jours, +20 points ; à 20 jours, +40. **Un joker par mois** : une journée ratée ne casse pas la série. Une mission renfort accomplie ne casse jamais la série et compte comme une journée à 7 points.

**Les badges** du mois : Livreur J‑J (+10 pts), 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), et les badges renfort (Pompier, Gardien du week‑end, Toujours là, Bras droit). Un badge, c'est de la fierté, pas des dirhams — sauf Livreur J‑J.

### 7.3 Le niveau du mois

Le 1ᵉʳ du mois : **maximum = jours ouvrés × 10** (congés et fériés validés retirés) ; **taux = points ÷ maximum**.

| Taux | Niveau | Part de la prime cible |
|---|---|---|
| < 60 % | — | 0 % |
| 60 – 74 % | Bronze | 25 % |
| 75 – 89 % | Argent | 60 % |
| ≥ 90 % | Or | 100 % |

La **prime cible** est un montant fixe, dans la fiche de chaque collaborateur (ex. 800 DH). Ni pourcentage du salaire, ni montant par livrable.

**Base insuffisante** : moins de 5 tâches reçues échues dans le mois (arrivée en cours de mois, tout le mois sur site sans tâches reçues) ⇒ pas de niveau automatique ; la direction fixe à la main ou passe.

**Chef de marché** : ses propres points, plus une part liée à la **ponctualité de son équipe** (par défaut 20 % de sa cible × taux de ponctualité), plus les primes marché déjà existantes (marge, décompte encaissé), inchangées.

**Classement** : désactivé par défaut. Option « Tableau d'équipe » (séries et niveaux de chacun, visible par l'équipe), jamais de classement par montant.

### 7.4 Exemple chiffré — Salma, août 2026 (21 jours ouvrés, maximum 210 points)

- Gestes : planning tenu 18 jours × 3 = 54 · livrables validés 7 × 3 = 21 · zéro retard 20 × 2 = 40 · journée à jour 21 × 1 = 21 · blocage bien signalé 1 = 1 → **137 points**.
- Bonus : objectif d'équipe 3 semaines sur 4 = +15 · badge Livreur J‑J = +10 · une série de 10 jours = +20 → **182 points**.
- Taux : 182 ÷ 210 = **86,7 % → Argent → 60 % × 800 DH = 480 DH**.
- Elle a pris une mission renfort un dimanche (6 h de jour, salaire de base 6 000 DH) : dû légal 6 000 ÷ 191 = 31,41 DH/h × 6 h × 150 % = **283 DH** (bulletin, heures supplémentaires) ; prime renfort **200 DH** ; +5 points (187 — toujours Argent, à 2 points de l'Or, ce qu'elle voit sur son téléphone).
- Bulletin de septembre : salaire + 283 DH d'heures supplémentaires + 680 DH de prime (480 + 200), le tout imposable et soumis aux cotisations.

Les autres cas du mois : Hamza (chef de marché), 118 points = 56 % → aucun niveau, mais 20 % × 1 000 × 82 % de ponctualité d'équipe = **164 DH** ; Karim (auto‑entrepreneur), 196 points = 93 % → Or → **600 DH** sur facture complémentaire ; Omar, 3 tâches reçues seulement → base insuffisante, à la main de la direction.

### 7.5 Et si le collaborateur ne met pas à jour ?

La prime n'est calculée que sur ce qui est enregistré. Rien de négatif, mais chaque mise à jour manquée fait perdre les points concernés : tâche faite mais non marquée avant 18 h → les 3 points de planning tenu ; échéance passée sans « Terminé » → les 2 points de zéro retard et la série ; tâche laissée « en cours » la nuit ou heures non pointées → le point de journée à jour ; 48 h sans geste → zéro point ces jours‑là et le signal « silence » chez la direction. Sur le mois, moins de points = niveau plus bas = prime plus basse.

Ce qui empêche le piège : le rappel de 17 h 30 ; la **régularisation jusqu'au lendemain 8 h 30** (un « Terminé » posé le matin pour la veille compte, avec l'heure réelle et la mention « régularisé » ; au‑delà de 3 par mois, signal au chef, sans perte) ; le mode hors ligne qui garde l'heure réelle ; le blocage validé ; le report accordé ; le joker. Un mode strict existe en réglage (« journée non mise à jour à 18 h = 0 point sur toute la journée ») — déconseillé au départ.

### 7.6 Les gardes anti‑triche (gravées)

Seules les tâches reçues comptent pour planning et livrables ; 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 · un blocage à motif validé suspend le chrono · un report accordé déplace l'échéance sans pénalité · base insuffisante ⇒ prime manuelle seulement · le chef ne valide pas ses propres livrables · rien n'est versé sans validation du gérant.

---

## 8. Le temps extra, les week‑ends et les jours fériés

### 8.1 Première couche : le dû légal (salariés)

Ce n'est pas une prime : c'est le code du travail (loi 65‑99, articles 196 à 203). Une heure supplémentaire **validée** est majorée :

| Heure supplémentaire | 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**. Exemple : 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é. Sur le bulletin : une ligne « heures supplémentaires » (`overtime_total`, avec le détail jour / nuit / repos / férié), calculée depuis les renforts validés, jamais saisie à la main. Les 24 h de repos hebdomadaire restent obligatoires : l'app **propose** le jour de repos compensateur dans la semaine qui suit, le chef confirme. Aucun contingent annuel légal, mais alerte à la direction au‑delà de 2 renforts par mois.

Auto‑entrepreneur : hors code du travail — taux contractuel réglable (par défaut +50 % du tarif journalier le week‑end et les fériés), payé sur facture complémentaire. Stagiaire : pas de renfort ; en cas d'exception, gratification. Contractuel non déclaré : virement, à régulariser avec le comptable. **À vérifier avec le comptable** : modalités de paie des majorations et des jours fériés chômés payés.

### 8.2 Deuxième couche : la prime « renfort », gamifiée

**Le flux.** Un chef de marché ou la direction publie une **mission** (date, marché, heures prévues, pourquoi, type : soir ≥ 2 h après 19 h, week‑end, férié). Elle apparaît comme une **quête** sur les téléphones de l'équipe du marché, avec la récompense affichée **avant** d'accepter : majoration légale estimée, prime renfort, points, badge, repos compensateur proposé. « Je prends » → le chef confirme (premier arrivé dans l'équipe du marché ; le chef peut choisir quelqu'un d'autre avec motif) → le jour J, les heures se pointent dans « Ma journée », marquées renfort → le soir, le chef valide → d'un coup : ligne de paie (majoration), prime renfort, points, badge.

**Montants et points** (réglables) : soir 50 DH et +2 pts · week‑end 200 DH/jour et +5 pts · jour férié 300 DH/jour et +5 pts. Payés avec la prime du mois, même circuit.

**Badges renfort** : 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 publiée depuis plus de 48 h que personne ne voulait).

**Gardes de santé** (gravées) : **2 missions week‑end/férié au maximum par mois** comptées en points et prime — au‑delà, le dû légal seulement et alerte « surcharge » à la direction ; 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) ; l'historique des renforts de chacun est visible du chef, pour tourner.

---

## 9. Le circuit de paiement

1. Le 1ᵉʳ du mois, le moteur crée pour chaque collaborateur une prime **proposée** : points, niveau, cible, part chef, primes renfort, coups de pouce, avec le **détail du calcul en clair** et les paramètres utilisés.
2. La direction, sur « Primes du mois », **valide** (ligne par ligne ou en bloc), **ajuste** (montant + motif obligatoire) ou **refuse** (aucune ligne). Base insuffisante : « fixer manuellement » ou passer.
3. Une prime validée devient **due** et suit le circuit existant : salarié → bulletin (`bonus_total`), imposable et soumis CNSS/AMO ; auto‑entrepreneur → virement sur facture complémentaire ; stagiaire → gratification par virement. Les heures supplémentaires suivent, elles, la ligne `overtime_total` du bulletin.
4. Le collaborateur reçoit un seul push : « Prime d'août validée : 480 DH », puis l'écran « Révélation » (§11).

Point de vigilance juridique : une prime versée régulièrement au même montant peut devenir un droit acquis. D'où un **règlement des primes** écrit, variable et conditionnel, généré depuis les réglages et remis à chaque collaborateur. Ce document n'est pas un avis juridique ni comptable.

---

## 10. Ce qui est réglable, ce qui est gravé

Les réglages vivent dans **Réglages → Pilotage & primes**, par installation (IRADA et RUWAD ont chacun les leurs), avec journal des changements. **Un changement prend effet au 1ᵉʳ du mois suivant**, jamais en cours de mois, et chaque prime garde dans son détail les paramètres avec lesquels elle a été calculée : on peut rejouer un mois passé et retomber sur le même montant.

| Domaine | Paramètres | Défaut |
|---|---|---|
| Barème du jour | points des 5 gestes · maximum par jour · heure du calcul · fenêtre de régularisation · mode strict | 3·3·2·1·1 · 10 · 18 h · lendemain 8 h 30 · non |
| Bonus | objectif d'équipe · coup de pouce et plafond mensuel · badges actifs et leurs points | +5 · +5, 2/mois · Livreur J‑J +10 |
| Série | seuils · points · jokers par mois | 5 / 10 / 20 j · +20 / +40 · 1 |
| Niveaux | seuils · parts de la cible · minimum de tâches reçues | 60 / 75 / 90 % · 25 / 60 / 100 % · 5 |
| Collaborateur | prime cible · prime active · taux renfort (auto‑entrepreneur) | fiche |
| Chef de marché | poids de la ponctualité de l'équipe | 20 % de sa cible |
| Renfort | montants soir / week‑end / férié · points · plafond mensuel compté · heure de début « soir » · durée minimale | 50 / 200 / 300 · +2 / +5 / +5 · 2 · 19 h · 2 h |
| Signaux | silence · planning vide | 48 h · 2 jours ouvrés |
| Notifications | heures des pushs et du récap · rapport hebdo | 8 h 30 · 17 h 30 · 18 h · vendredi 17 h |
| Options | tableau d'équipe · partage WhatsApp · animations · langue | non · oui · oui · FR |
| Par marché (chef) | objectif d'équipe de la semaine | — |

**Gravé, non réglable** : les gardes anti‑triche (§7.6) et de santé (§8.2) ; aucun point négatif ; le chef ne valide pas ses propres livrables ; rien n'est versé sans validation ; pas de classement par montant ; les majorations légales — réglables *au‑dessus* de la loi, jamais en dessous.

---

## 11. L'expérience — cinq moments, une règle : fêter, jamais humilier

| Moment | Ce qui se passe |
|---|---|
| 08 h 30 | Push unique « Ta journée » ; l'écran s'ouvre sur **Maintenant**. Zéro réglage, zéro menu. |
| Dans la journée | Chaque geste répond : « Terminé » → un **+3** s'envole vers la ligne prime, qui pulse ; livrable validé → carte « Badge débloqué » une seconde ; une vibration courte. Jamais de son. |
| 18 h | Récap du jour : « 9/10 pts · série 5 j · il te manquait : blocage non signalé ». Un conseil, pas un reproche. |
| Vendredi 17 h | Carte « Ma semaine » partageable (image) : points, badges, objectif d'équipe — c'est le collaborateur qui choisit de la partager sur WhatsApp, jamais l'app. |
| 1ᵉʳ du mois | Après validation : « Révélation » plein écran, la jauge monte jusqu'au niveau, le montant s'affiche, les badges défilent. Une fois par mois, un vrai moment. |

**Principes** : une main, un pouce, trois boutons (cibles ≥ 48 px) · instantané et hors ligne (PWA ; les gestes gardent leur heure réelle) · la récompense avant l'effort (chaque quête montre ce qu'elle rapporte) · fêter, jamais humilier (fêtes privées ; pas de classement par argent) · pas de piège (aucune notification de points, un point non pris est « à prendre », pas « perdu ») · bilingue et sobre (français / arabe en miroir, mode sombre, animations de moins d'une seconde, coupées si « réduire les animations » est activé) · le joker est un vrai droit · tout est explicable (chaque point et chaque dirham a sa ligne de journal ; le collaborateur peut la lire, la direction peut l'annuler avec motif).

---

## 12. Les phases

| Phase | Contenu |
|---|---|
| **1 — Pilotage** | tâches, trois origines, journal, « Ma journée » v2, cockpit, signaux, notifications, rapport hebdo, pont heures → feuille de temps |
| **1b — Primes et renfort** | points journaliers, séries, badges, niveaux, « Primes du mois », missions renfort, ligne heures supplémentaires de la paie, réglages, règlement PDF |
| **2 — Espace client** | livrables validés en ligne par le client (modèle CCIS‑TTA), état « en attente de validation » côté client |
| **3 — Groupe** | vue IRADA + RUWAD (flux JSON par jeton, comme l'ingest de la veille), WhatsApp Cloud API si le besoin se confirme |
| Hors périmètre | sous‑tâches, dépendances entre tâches, affectation à plusieurs (un responsable, toujours), classement par montant |

---

## 13. Pour Claude Code — objets, services, contraintes, recette

**Tables (migrations additives, idempotentes).**

- `tasks` : project_id (nul = interne) · employee_id · titre · description · statut · priorite · echeance · prevu_le · estimation_h · commence_le · termine_le · motif_blocage · livrable · valide_par · valide_le · conformite · assigne_par · origine · vu_le · ordre.
- `task_updates` : task_id · user_id · de → vers · commentaire · heures_pointees · regularise (bool) · cree_le.
- `bonus_points` : employee_id · date · points · detail (json) · serie · joker_utilise — calculé à 18 h, recalculable pour un jour donné.
- `bonus_rules` : déclencheur `cloture_mensuelle`, base `bareme_niveaux`, colonne `params` (json). Les règles marché existantes restent intactes.
- `bonuses` : statut `proposee` avant `due` · periode · details (json : points, niveau, cible, part chef, renforts, ajustement + motif, paramètres figés).
- `employees` : prime_cible · prime_active · taux_renfort_ae.
- `extra_missions` : project_id · date · type (soir | week_end | ferie) · heures_prevues · motif · publiee_par · employee_id · statut (publiee → prise → confirmee → validee) · heures_jour · heures_nuit · repos_compensateur_le.
- `payrolls` : overtime_total · overtime_detail (json).
- Réglages : clés `pilotage.*` dans `settings`, page « Pilotage & primes », historique dans l'audit.

**Services et jobs.** `TaskService` (création, transitions, règles) · `TaskPointsService` (calcul du jour, idempotent) · `BonusEngine` étendu (clôture mensuelle → propositions) · `ExtraMissionService` (missions, validation, calcul de la majoration) · `PayrollService` (ligne heures supplémentaires) · planificateur : 08 h 30 « ta journée », 17 h 30 rappel, 18 h 00 points + récaps, vendredi 17 h rapport hebdo, 1ᵉʳ du mois clôture ; tout passe par la file existante (jamais d'appel IA synchrone).

**Contraintes du socle.** Aucun « IRADA » en dur (`Identite::nomCourt()`) ; le code tient sur une base vide (RUWAD) ; aucune dépendance composer ; assets compilés avant le tarball ; migrations additives et idempotentes ; `./vendor/bin/pint`, suite complète, `npm run build`, tag, CHANGELOG et rapport ; règle d'or dompdf ; ordre des délais en file. Une refonte d'écran suit la **maquette validée** jusque dans la disposition.

**Recette (à exiger dans le prompt).**

1. Tâche sans responsable ou sans échéance ⇒ refusée, pour les trois origines.
2. Commencer B alors que A est en cours ⇒ A « à reprendre » ; une seule « en cours » par personne.
3. Bloqué sans motif ⇒ refusé ; avec motif ⇒ une seule notification au chef et au gérant.
4. Terminé ⇒ proposition d'heures = écart arrondi au ¼ h ; acceptée ⇒ une ligne de feuille de temps ; ajustée ⇒ la valeur ajustée ; refusée ⇒ aucune ligne.
5. Direction assigne à X ⇒ origine direction, push à X, « nouvelle » chez X et « non vue » au cockpit ; premier geste ⇒ `vu_le` rempli, mentions disparues.
6. Chef de marché : accepté pour son équipe sur ses marchés ; refusé (403) hors périmètre ; jamais de push à la direction.
7. Collaborateur : « pour moi » seulement ; supprimer ou réassigner une tâche reçue ⇒ refusé ; « demander un report » ⇒ notification à l'assignant, échéance inchangée tant qu'il n'a pas tranché.
8. Signaux sur un jeu témoin : 1 retard, 1 bloqué, 1 planning vide, 1 silence, N terminées — compte exact.
9. Base vide (RUWAD) ⇒ messages d'accueil partout, zéro erreur ; « Mon équipe » absent pour qui n'est chef d'aucun marché.
10. Rapport hebdo ⇒ PDF généré, contenu par personne + par marché + signaux.
11. Journée témoin : 5 gestes ⇒ 10 points exacts, recalcul idempotent.
12. Tâche auto‑créée terminée ⇒ 0 point planning et livrable ; 2 livrables le même jour ⇒ 3 points, pas 6 ; blocage validé ⇒ pas de retard compté.
13. Série 5 jours ⇒ badge ; joker consomme une journée ratée ; deuxième journée ratée ⇒ série rompue.
14. Mois témoin 21 jours : 182 points ⇒ 86,7 % ⇒ Argent ⇒ 480 DH pour une cible de 800.
15. Base insuffisante ⇒ aucune proposition automatique.
16. Valider ⇒ `due` + `bonus_total` (salarié) ou transaction (auto‑entrepreneur) ; refuser ⇒ aucune ligne ; ajuster sans motif ⇒ refusé.
17. Chef validant son propre livrable ⇒ refusé.
18. Mission renfort dimanche 6 h de jour, base 6 000 ⇒ `overtime_total` 283 DH, prime 200, +5 points, série intacte, repos compensateur proposé.
19. Troisième week‑end du mois ⇒ majoration due, 0 point, 0 prime, alerte direction ; samedi sans mission ⇒ rien, direction informée ; stagiaire ⇒ aucune mission proposable.
20. Régularisation avant 8 h 30 ⇒ comptée avec mention ; changement de réglage ⇒ effet au 1ᵉʳ du mois suivant, mois passé rejoué à l'identique.
21. « Réduire les animations » ⇒ aucune animation, mêmes informations ; interface en miroir en arabe.
22. Aucune chaîne « IRADA » en dur ; aucune dépendance composer ; migrations additives ; pint, suite, build, tag.

---

## 14. Glossaire

**Tâche reçue** : tâche affectée par la direction ou un chef de marché (par opposition à celle qu'on se donne). **Livrable** : tâche dont le résultat est validé conforme ou à reprendre par le chef. **Journal** : la liste des gestes, écrite automatiquement. **Nouvelle / non vue** : tâche reçue sans aucun geste du collaborateur. **Série** : jours ouvrés consécutifs à 7 points ou plus. **Joker** : la journée ratée du mois qui ne casse pas la série. **Niveau** : Bronze, Argent ou Or, selon le taux de points du mois. **Prime cible** : le montant fixe de référence d'un collaborateur, atteint à 100 % au niveau Or. **Base insuffisante** : moins de 5 tâches reçues échues dans le mois. **Régularisation** : geste posé le lendemain matin pour la veille, compté avec mention. **Mission renfort** : travail demandé un soir, un week‑end ou un férié, publié à l'équipe d'un marché. **Dû légal** : la majoration des heures supplémentaires prévue par le code du travail.

---

## 15. Décisions encore ouvertes

1. Mode strict des mises à jour : non (défaut proposé) ou oui.
2. Montants renfort (50 / 200 / 300) et plafond mensuel (2) : à confirmer.
3. Un seul lot Claude Code (pilotage + primes + renfort) ou deux (pilotage, puis primes + renfort).
4. Numéro de version : après la v4.0.0 (veille / bons de commande) — probablement v4.1.0.
5. Validation de la maquette v4 jusque dans la disposition.
