# Setup Task Scheduler (Windows) - Instructions Détaillées

**Option recommandée** pour lancer le daily check automatiquement au boot Windows et 3x par jour.

---

## Prérequis

- Windows 10/11
- WSL installé et configuré
- jq installé dans WSL : `sudo apt install jq`

---

## Étape 1 : Ouvrir Task Scheduler

1. Appuie sur `Win + R`
2. Tape `taskschd.msc`
3. Appuie sur `Enter`

OU

1. Recherche "Task Scheduler" dans le menu démarrer
2. Ouvre l'application

---

## Étape 2 : Créer une Nouvelle Tâche

1. Dans le panneau de droite, clique sur **"Create Task..."** (pas "Create Basic Task")
2. Cela ouvre une fenêtre avec plusieurs onglets

---

## Étape 3 : Onglet "General"

**Name** : `Daily Check Trigger`

**Description** : `Système de daily check automatique - Lance trigger 3x par jour`

**Security options** :
- ✅ Coche "Run whether user is logged on or not"
- ✅ Coche "Run with highest privileges"

**Configure for** : `Windows 10` (ou ta version Windows)

---

## Étape 4 : Onglet "Triggers"

Clique sur **"New..."** et configure **3 triggers** (un par période de la journée) :

### Trigger 1 : Morning (07:00)
- **Begin the task** : `On a schedule`
- **Settings** : `Daily`
- **Start** : Aujourd'hui à `07:00:00`
- **Recur every** : `1 days`
- ✅ **Enabled**

Clique **OK**

### Trigger 2 : Afternoon (14:00)
- Clique à nouveau sur **"New..."**
- **Begin the task** : `On a schedule`
- **Settings** : `Daily`
- **Start** : Aujourd'hui à `14:00:00`
- **Recur every** : `1 days`
- ✅ **Enabled**

Clique **OK**

### Trigger 3 : Evening (21:00)
- Clique à nouveau sur **"New..."**
- **Begin the task** : `On a schedule`
- **Settings** : `Daily`
- **Start** : Aujourd'hui à `21:00:00`
- **Recur every** : `1 days`
- ✅ **Enabled**

Clique **OK**

---

## Étape 5 : Onglet "Actions"

Clique sur **"New..."**

**Action** : `Start a program`

**Program/script** :
```
wsl
```

**Add arguments** :
```
-e bash -c "cd '/mnt/e/Users/Alexis Trouvé/Documents/Projets/couple_matters/daily_check' && ./trigger_check.sh"
```

**Note** : Assure-toi que le chemin est correct pour ton système.

Clique **OK**

---

## Étape 6 : Onglet "Conditions"

**Power** :
- ❌ **Décoche** "Start the task only if the computer is on AC power"
- ✅ **Coche** "Wake the computer to run this task" (si tu veux que ça réveille le PC)

**Network** :
- Laisse par défaut (pas nécessaire pour ce task)

---

## Étape 7 : Onglet "Settings"

- ✅ **Coche** "Allow task to be run on demand"
- ✅ **Coche** "Run task as soon as possible after a scheduled start is missed"
- ✅ **Coche** "If the task fails, restart every:" `10 minutes` (pour robustesse)
- **Stop the task if it runs longer than** : `30 minutes`

---

## Étape 8 : Sauvegarder

1. Clique **OK** en bas de la fenêtre
2. Windows va te demander ton mot de passe utilisateur → Entre-le
3. La tâche est maintenant créée !

---

## Étape 9 : Tester Immédiatement

1. Dans Task Scheduler, trouve ta tâche "Daily Check Trigger" dans la liste
2. Clique-droit dessus
3. Clique **"Run"**

Cela devrait :
- Exécuter `trigger_check.sh`
- Créer le flag file `~/.daily_check_pending`
- Logger dans `daily_check/daily_check.log`

Vérifie :
```bash
cat ~/daily_check/daily_check.log
ls -la ~/.daily_check_pending
```

---

## Troubleshooting

### La tâche n'apparaît pas dans "Task Scheduler Library"

- Va dans **Task Scheduler Library** (panneau gauche)
- Rafraîchis la vue (F5)

### La tâche échoue avec "The system cannot find the file specified"

- Vérifie que WSL est bien installé : ouvre cmd et tape `wsl --version`
- Vérifie que le chemin dans "Arguments" est correct

### Le script ne se lance pas

- Vérifie que `trigger_check.sh` est exécutable : `chmod +x trigger_check.sh`
- Vérifie que jq est installé : `jq --version`
- Regarde les logs : `cat daily_check/daily_check.log`

### La tâche ne se lance pas au bon moment

- Vérifie les triggers dans Task Scheduler
- Assure-toi que "Enabled" est coché pour chaque trigger
- Vérifie que l'heure système Windows est correcte

### Permission denied

- Assure-toi que la tâche est configurée avec "Run with highest privileges"

---

## Désactiver Temporairement

Si tu veux désactiver le système sans supprimer la tâche :

1. Ouvre Task Scheduler
2. Trouve "Daily Check Trigger"
3. Clique-droit → **Disable**

Pour réactiver : Clique-droit → **Enable**

---

## Supprimer la Tâche

1. Ouvre Task Scheduler
2. Trouve "Daily Check Trigger"
3. Clique-droit → **Delete**

---

## Notes Importantes

- Cette tâche va créer un flag file `~/.daily_check_pending`
- Le flag file déclenche l'auto-spawn quand tu ouvres un terminal WSL
- Le système ne te spam PAS si tu ignores → Il attend juste que tu ouvres un terminal
- Si tu fais déjà le daily check manuellement, le trigger ne créera pas de flag (détecte via `.state.json`)

---

**Setup terminé !** Le système est maintenant actif et se lancera automatiquement 3x par jour.
