personal-hub/planning/daily_check_system_v2_plan.md
StillHammer 3c8162c990 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 07:04:02 +08:00

12 KiB

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

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

{
  "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é :

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é :

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é :

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 :

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

  1. life_rules.md : Life rules + Discipline

    • Priority: high
    • Frequency: daily
    • Critères: Sport, sommeil, routine respectés =
  2. learning.md : Apprentissage/Découverte (non-tech)

    • Priority: medium
    • Frequency: daily
    • Critères: Quelque chose de nouveau appris =

Catégorie TRAVAIL

  1. freelance.md : Freelance/Revenu (URGENT Bangkok)

    • Priority: critical
    • Frequency: daily
    • Critères: Prospection OU travail client OU setup Upwork/Fiverr =
  2. 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

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

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: trueenabled: 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)