couple_matters/planning/daily_check_system_v2_plan.md
StillHammer 92c2a9f022 Sync couple_matters: December crisis, separation agreement, daily check v2, xiaozhu search
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>
2025-12-23 06:54:08 +08:00

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)