# Plan : Daily Check System v2 - Modulaire & Windows Startup

**Date** : 21 décembre 2025
**Objectif** : Remplacer anki_tingting/ par un système modulaire ultra-fiable qui se lance au boot Windows
**Contexte** : Ancien système (centré Tingting) est obsolète suite divorce. Besoin d'un système holistique (chinois, personal life, travail)

---

## 🎯 Objectifs Clés

1. **Modulaire** : Un fichier = une carte, facile d'ajouter de nouvelles questions
2. **Fiabilité spawn** : Windows startup garantit le lancement (résout le problème de crash du service Python)
3. **3 catégories** : Chinois (2Q), Personal Life (2Q), Travail (2Q)
4. **Auto-spawn terminal** : Se lance automatiquement à l'ouverture d'un terminal WSL
5. **Simple** : Pas de dépendances lourdes (pygame, edge_tts, etc.)

---

## 📁 Structure du Système

```
daily_check/
├── cards/                           # Cartes modulaires (une carte = un fichier)
│   ├── chinese_vocab.md             # Catégorie: chinois
│   ├── chinese_practice.md          # Catégorie: chinois
│   ├── life_rules.md                # Catégorie: personal
│   ├── learning.md                  # Catégorie: personal
│   ├── freelance.md                 # Catégorie: travail
│   └── projects.md                  # Catégorie: travail
│
├── .state.json                      # État du système (streak, last check)
├── daily_sessions.md                # Log de toutes les sessions
├── trigger_check.sh                 # Script WSL appelé par Task Scheduler
├── start_daily_check.bat            # Batch file pour Startup folder (alternative)
├── setup_task_scheduler.md          # Instructions complètes Task Scheduler
└── README.md                        # Documentation système
```

---

## 🃏 Format des Cartes (Markdown + Frontmatter)

**Exemple : `cards/chinese_vocab.md`**

```markdown
---
category: chinois
priority: high
frequency: daily
enabled: true
---

# Question
Quel nouveau vocabulaire/grammaire as-tu appris aujourd'hui en chinois ?

# Answer Guide
- Si 0 nouveau mot = ❌
- Si 1-5 mots = ⚠️ (insuffisant pour progression HSK)
- Si 5+ mots OU 1 point grammaire important = ✅

# Notes
HSK doit progresser régulièrement. Pas de jour sans apprendre au moins quelques mots.
Le chinois est critique pour ton avenir en Asie.
```

**Champs frontmatter** :
- `category` : chinois | personal | travail
- `priority` : low | medium | high | critical
- `frequency` : daily | every_2_days | weekly
- `enabled` : true | false (permet de désactiver temporairement)

**Sections Markdown** :
- `# Question` : La question posée à l'utilisateur
- `# Answer Guide` : Critères d'évaluation (✅/⚠️/❌)
- `# Notes` : Contexte, pourquoi c'est important, rappels

---

## 🔄 Flow du Système

### **1. Déclenchement automatique (Windows)**

**Option A : Task Scheduler (Recommandé - Plus flexible)**
```
07:00, 14:00, 21:00 (3x par jour)
    ↓
Task Scheduler exécute trigger_check.sh (WSL)
    ↓
Script vérifie si déjà fait aujourd'hui (.state.json)
    ↓
Si non fait → Crée flag file (~/.daily_check_pending)
    ↓
Flag contient la période (morning/afternoon/evening)
```

**Option B : Startup Folder (Alternative - Plus simple)**
```
Windows Boot
    ↓
start_daily_check.bat démarre en arrière-plan
    ↓
Boucle infinie : check toutes les heures
    ↓
Même logique que Task Scheduler
```

### **2. Auto-spawn à l'ouverture terminal**

```
Alexis ouvre Windows Terminal (WSL)
    ↓
~/.bashrc détecte ~/.daily_check_pending
    ↓
Affiche : "🔔 DAILY CHECK EN ATTENTE (morning)"
    ↓
Compte à rebours 3 secondes (Ctrl+C pour annuler)
    ↓
Auto-lance : claude "daily check"
    ↓
Flag file supprimé après exécution
```

### **3. Exécution du quiz (Claude Code)**

```
Claude lit tous les fichiers dans cards/
    ↓
Parse frontmatter (category, priority, enabled)
    ↓
Filtre : enabled=true uniquement
    ↓
Sélectionne 6 cartes (2 par catégorie si possible)
    ↓
Si pas assez dans une catégorie, prend les plus prioritaires
    ↓
Pose les 6 questions une par une
    ↓
Donne feedback (✅/⚠️/❌) selon Answer Guide
    ↓
Calcule score total
    ↓
Log session dans daily_sessions.md
    ↓
Met à jour .state.json (streak, last_check_date)
```

---

## 🛠️ Composants Techniques

### **1. `.state.json` (État du système)**

```json
{
  "streak": 0,
  "last_check_date": null,
  "total_sessions": 0,
  "best_streak": 0,
  "days_skipped_current": 0
}
```

### **2. `trigger_check.sh` (Script WSL)**

**Responsabilités** :
- Vérifier si daily check déjà fait aujourd'hui
- Déterminer période du jour (morning/afternoon/evening)
- Créer flag file si nécessaire
- Logger dans daily_check.log
- Si terminal WSL déjà ouvert → lancer immédiatement

**Logique clé** :
```bash
LAST_CHECK=$(jq -r '.last_check_date' .state.json)
TODAY=$(date +%Y-%m-%d)

if [ "$LAST_CHECK" == "$TODAY" ]; then
    exit 0  # Déjà fait
fi

# Créer flag
echo "morning" > ~/.daily_check_pending
```

### **3. Hook ~/.bashrc (Auto-spawn)**

**Responsabilités** :
- Détecter flag file au démarrage terminal
- Afficher notification + countdown
- Auto-lancer Claude Code
- Supprimer flag après exécution

**Code clé** :
```bash
if [ -f "$HOME/.daily_check_pending" ]; then
    PERIOD=$(cat "$HOME/.daily_check_pending")
    echo "🔔 DAILY CHECK EN ATTENTE ($PERIOD)"
    sleep 3
    claude "daily check"
    rm "$HOME/.daily_check_pending"
fi
```

### **4. start_daily_check.bat (Windows Batch)**

**Responsabilités** :
- Attendre 2 minutes après boot (stabilisation système)
- Boucle infinie : trigger toutes les heures
- Appeler trigger_check.sh via WSL

**Code clé** :
```batch
timeout /t 120 /nobreak > nul
:loop
wt.exe -w -1 wsl -e bash -c "cd /path/to/daily_check && ./trigger_check.sh"
timeout /t 3600 /nobreak > nul
goto loop
```

### **5. Claude Code Logic (Parsing + Quiz)**

**Algorithme sélection cartes** :
1. Lire tous `cards/*.md`
2. Parser frontmatter YAML
3. Filtrer `enabled: true`
4. Grouper par `category`
5. Pour chaque catégorie, trier par `priority` (critical > high > medium > low)
6. Sélectionner 2 cartes par catégorie (ou moins si pas assez)
7. Si < 6 cartes total, prendre les plus prioritaires tous confondus

**Format session log** :
```markdown
### 2025-12-21 07:30

**Triggered by** : Auto (morning check)
**Duration** : ~5 minutes

**Questions Asked** :
1. [chinese_vocab] Quel nouveau vocab as-tu appris ? → ✅
   - Réponse : "5 mots HSK4 + structure 不但...而且"
   - Feedback : Bon travail, progression HSK continue

2. [freelance] As-tu avancé sur freelance/clients ? → ❌
   - Réponse : "Non rien fait"
   - Feedback : Bangkok dans 32 jours. Tu dois avoir des clients AVANT d'arriver.

[...]

**Total Score** : 4/6
**Streak** : 1 jour
**Observation** : Bon démarrage. Focus sur freelance urgent.
```

---

## 📋 6 Cartes Initiales

### **Catégorie CHINOIS**

1. **chinese_vocab.md** : Vocabulaire/Grammaire appris aujourd'hui
   - Priority: high
   - Frequency: daily
   - Critères: 5+ mots OU 1 point grammaire = ✅

2. **chinese_practice.md** : Utilisation pratique du chinois
   - Priority: medium
   - Frequency: daily
   - Critères: WeChat/projet/conversation réelle = ✅

### **Catégorie PERSONAL**

3. **life_rules.md** : Life rules + Discipline
   - Priority: high
   - Frequency: daily
   - Critères: Sport, sommeil, routine respectés = ✅

4. **learning.md** : Apprentissage/Découverte (non-tech)
   - Priority: medium
   - Frequency: daily
   - Critères: Quelque chose de nouveau appris = ✅

### **Catégorie TRAVAIL**

5. **freelance.md** : Freelance/Revenu (URGENT Bangkok)
   - Priority: critical
   - Frequency: daily
   - Critères: Prospection OU travail client OU setup Upwork/Fiverr = ✅

6. **projects.md** : Projets perso + Nouvelles compétences
   - Priority: high
   - Frequency: daily
   - Critères: Commit sur projet OU nouvelle tech apprise = ✅

---

## 🚀 Setup Instructions (Une seule fois)

### **1. Créer la structure**
```bash
cd /mnt/e/Users/Alexis\ Trouvé/Documents/Projets/couple_matters/
mkdir -p daily_check/cards
```

### **2. Copier les cartes initiales**
- 6 fichiers `.md` dans `cards/`

### **3. Initialiser .state.json**
```bash
echo '{"streak":0,"last_check_date":null,"total_sessions":0,"best_streak":0,"days_skipped_current":0}' > daily_check/.state.json
```

### **4. Créer trigger_check.sh**
- Rendre exécutable : `chmod +x trigger_check.sh`

### **5. Ajouter hook dans ~/.bashrc**
- Ajouter le code de détection flag file

### **6. Setup Windows Startup**

**Option A : Task Scheduler**
- Créer tâche avec triggers 07:00, 14:00, 21:00
- Action : Exécuter trigger_check.sh via WSL
- Voir `setup_task_scheduler.md` pour instructions détaillées

**Option B : Startup Folder**
- Copier `start_daily_check.bat` dans Startup folder
- Chemin : `C:\Users\[User]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup`

---

## ✅ Avantages vs Ancien Système

| Aspect | Ancien (anki_tingting) | Nouveau (daily_check) |
|--------|------------------------|----------------------|
| **Modulaire** | ❌ Cartes hardcodées | ✅ Un fichier = une carte |
| **Spawn fiabilité** | ❌ Python service crash | ✅ Task Scheduler + flag file |
| **Dépendances** | ❌ pygame, edge_tts, pyttsx3 | ✅ Juste bash + jq |
| **Impossible ignorer** | ❌ Skip popup facile | ✅ Auto-spawn terminal |
| **Scope** | ❌ Centré Tingting only | ✅ Holistique (3 domaines vie) |
| **Maintenance** | ❌ Modifier code Python | ✅ Ajouter/modifier fichier .md |
| **Windows boot** | ❌ Service compliqué | ✅ Task Scheduler OU Startup |
| **Logs** | ✅ daily_sessions.md | ✅ daily_sessions.md |

---

## 🔧 Maintenance & Extension

### **Ajouter une nouvelle carte**
1. Créer `cards/nouvelle_carte.md`
2. Remplir frontmatter (category, priority, frequency, enabled)
3. Écrire Question, Answer Guide, Notes
4. C'est tout ! Sera automatiquement détectée au prochain check

### **Désactiver temporairement une carte**
- Changer `enabled: true` → `enabled: false` dans le frontmatter

### **Modifier priorité/fréquence**
- Éditer le frontmatter directement

### **Voir stats**
- Consulter `daily_sessions.md`
- `.state.json` pour streak actuelle

---

## 📊 Métriques de Succès

**Semaine 1** :
- [ ] Streak de 5+ jours
- [ ] Aucun skip
- [ ] Spawn fiable (pas de problème technique)

**Mois 1** :
- [ ] Streak de 20+ jours
- [ ] Amélioration visible sur catégories critiques (freelance, chinois)
- [ ] Au moins 2 cartes personnalisées ajoutées

**Long terme** :
- [ ] Système devient habitude quotidienne (5 min/jour)
- [ ] Visible impact sur discipline et productivité
- [ ] Backup avant Bangkok (22 jan) = clients freelance actifs

---

## 🐛 Troubleshooting

**Flag file pas créé** :
- Vérifier Task Scheduler tourne bien
- Vérifier chemin dans trigger_check.sh
- Check logs : `daily_check/daily_check.log`

**Hook bashrc ne se déclenche pas** :
- Vérifier que ~/.bashrc contient le hook
- Vérifier flag file existe : `ls -la ~/.daily_check_pending`
- Tester manuellement : `bash -l`

**Claude ne trouve pas les cartes** :
- Vérifier chemin : `daily_check/cards/*.md`
- Vérifier frontmatter YAML valide
- Vérifier `enabled: true`

---

## 🎯 Next Steps (Implémentation)

1. Créer structure `daily_check/` + sous-dossiers
2. Écrire les 6 cartes initiales
3. Coder `trigger_check.sh`
4. Coder hook `~/.bashrc`
5. Créer `start_daily_check.bat`
6. Écrire `setup_task_scheduler.md` (instructions détaillées)
7. Écrire `README.md` du système
8. Tester le flow complet
9. Setup Task Scheduler
10. Premier daily check de test

---

**Status** : PLAN APPROUVÉ - Prêt pour implémentation
**Timeline** : 1-2 heures d'implémentation + setup
**Priorité** : HIGH (besoin discipline pour Bangkok prep)
