Major updates: - December 2025 crisis documentation and separation agreement - Daily check system v2 with multiple card categories - Xiaozhu rental search tools and results - Exit plan documentation - Message drafts for family communication - Confluent moved to CONSTANT - Updated profiles and promises 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
422 lines
12 KiB
Markdown
422 lines
12 KiB
Markdown
# 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)
|