---
suivi: 1058
date: 2026-07-29
sujet: Case « Inclure les tâches de mes programmes »
chantier: taches_suivi
type: feature
statut: poussé
hash: 10e49227
fichiers:
  - app/Models/TacheSuivi.php
  - app/Models/User.php
  - app/Http/Controllers/MesTachesController.php
  - database/migrations/2026_07_29_150000_add_preferences_to_users_table.php
  - resources/js/Pages/MesTaches/Index.vue
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - tests/Unit/TacheSuiviVisibilityScopeTest.php
  - public/build/
---

## PROMPT ENVOYÉ

SUIVI #1058 — case à cocher décochée par défaut « Inclure les tâches de mes programmes »
sur Mes tâches. Ne pas restreindre la règle de visibilité globale ; filtrage SQL sur la
liste uniquement ; préférence mémorisée par utilisateur ; DG inchangé si coché.

## SYNTHÈSE

### Approche scope
Argument `bool $inclurePerimetreProgramme = true` sur `TacheSuivi::scopeVisiblePourUtilisateur`.
Défaut **true** = comportement historique pour tous les appelants hors Mes tâches.
MesTachesController passe la préférence (défaut **false**). `estVisiblePar` / policies inchangés.

### Préférence
Aucune table de prefs Mes tâches n’existait (seul localStorage vue/groupe, insuffisant pour
le filtre SQL). Ajout de `users.preferences` JSON + helpers `preference` / `setPreference`.
Clé `mes_taches_inclure_perimetre_programme`. Persistance à chaque requête avec le query param.

### TYPE
Pas de redondance : TYPE (suivi_role) filtre créateur/associé **dans** le set déjà visible,
uniquement sur l’onglet Suivi. La case contrôle l’entrée du chemin programme dans le set
(surtout visible sur onglet Tous). Les deux coexistent.

### Opérationnelles
Non affectées (`Task::visiblePourUtilisateur` distinct).

### Compteurs en-tête
Inchangés : `MesTachesResumeService` compte créateur / pivot, pas le chemin programme.

## DÉPLOIEMENT-TEST

```bash
git pull origin main
php artisan migrate --force
php artisan journal:sync
php artisan view:clear
find app/ -name "*.php" -exec touch {} +
```

Pas de route:clear (aucune route nouvelle).

## LEÇON
La visibilité des tâches de suivi repose sur QUATRE chemins (créateur, associé, accès
programme via étiquette, membre de projet Option A), et le troisième est SANS LIMITE pour
GS_DIRECTION_GENERALE. Une vue « Mes tâches » qui applique la visibilité maximale devient
inutilisable pour un utilisateur à large périmètre : il faut distinguer « ce que j’ai le
DROIT de voir » de « ce que je VEUX voir par défaut ».
