# 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)