Daily Check System avec TTS Windows configuré
Lead Conflicts documentation avec 7 stratégies
6 nouvelles cartes Anki (LEAD-001, LEAD-002, ACTION-003/004/005)
Shipping strategy + food recipes + topics
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
415 lines
8.9 KiB
Markdown
415 lines
8.9 KiB
Markdown
# Tingting Guardian - Daily Check System
|
|
|
|
**Créé** : 07/11/2025
|
|
**Raison** : Pattern d'oubli systémique identifié (3ème système oublié)
|
|
**Objectif** : Maintenir l'attention quotidienne sur Tingting via spaced repetition + TTS reminders
|
|
|
|
---
|
|
|
|
## 🎯 Concept
|
|
|
|
**Problème** : Alexis diagnostique, crée des plans, puis **oublie que les plans existent**.
|
|
|
|
**Solution** :
|
|
1. **Claude = Anki vivant** - Quiz quotidien via conversation
|
|
2. **TTS Service Windows** - T'interpelle vocalement plusieurs fois par jour
|
|
3. **Tracking rigoureux** - Impossible d'oublier sans que ce soit visible
|
|
|
|
---
|
|
|
|
## 📁 Structure
|
|
|
|
```
|
|
anki_tingting/
|
|
├── README.md # Ce fichier
|
|
├── card_database.md # Base de cartes Anki (questions/réponses)
|
|
├── daily_sessions.md # Log de toutes les sessions
|
|
├── prompts_database.md # Phrases TTS contextualisées
|
|
├── tingting_guardian_service.py # Service Windows TTS
|
|
└── .state.json # État du système (streak, skip, etc.)
|
|
```
|
|
|
|
---
|
|
|
|
## 🚀 Quick Start
|
|
|
|
### 1. Setup Python Dependencies
|
|
|
|
```bash
|
|
pip install pyttsx3 pywin32 schedule anthropic python-dotenv
|
|
```
|
|
|
|
### 2. Configuration (Optionnel)
|
|
|
|
Créer `.env` dans le repo root si tu veux l'intégration Claude API :
|
|
```
|
|
ANTHROPIC_API_KEY=your_key_here
|
|
```
|
|
|
|
**Note** : Sans API key, le système ouvre juste le browser Claude.ai
|
|
|
|
### 3. Test Immédiat
|
|
|
|
```bash
|
|
cd anki_tingting
|
|
python tingting_guardian_service.py test
|
|
```
|
|
|
|
Ça va :
|
|
- Afficher un popup avec TTS
|
|
- Te demander de faire le check
|
|
- Logger la session
|
|
|
|
### 4. Run en Background
|
|
|
|
```bash
|
|
python tingting_guardian_service.py
|
|
```
|
|
|
|
Ou mieux : **Installer comme service Windows** (voir [Installation Service](#installation-service) ci-dessous)
|
|
|
|
---
|
|
|
|
## 💡 Comment Ça Marche
|
|
|
|
### Daily Flow
|
|
|
|
**7h00, 14h00, 16h00** :
|
|
1. 🔍 Service check si tu es devant le PC (idle < 5min)
|
|
2. 🔊 TTS te parle : "Yo Alexis, daily check..."
|
|
3. 🪟 Popup apparaît avec 3 boutons :
|
|
- ✅ **Faire le Check** → Ouvre Claude
|
|
- ⏰ **Snooze 10min** → Retry
|
|
- ❌ **Skip** → Logged comme absence
|
|
|
|
**Si tu ignores** : Retry toutes les 10min (max 6x = 1 heure)
|
|
|
|
**Si tu cliques "Faire le Check"** :
|
|
1. Ouvre Claude.ai (ou Claude Code terminal)
|
|
2. Tu dis "daily check"
|
|
3. Je te quiz avec 3 questions depuis `card_database.md`
|
|
4. Je donne feedback + log dans `daily_sessions.md`
|
|
|
|
---
|
|
|
|
## 🎴 Card System
|
|
|
|
### Types de Cartes
|
|
|
|
Voir `card_database.md` pour la liste complète. Exemples :
|
|
|
|
**CORE-001** : Pourquoi Tingting dit que tu "think" pas ?
|
|
- **Difficulté** : Hard
|
|
- **Fréquence** : Daily (jusqu'à maîtrisé)
|
|
|
|
**ACTION-001** : Towel de Tingting
|
|
- **Difficulté** : Medium
|
|
- **Fréquence** : Every 2-3 days
|
|
|
|
**ACTION-002** : Feedback honnête quand elle fait des trucs wrong
|
|
- **Difficulté** : Hard (CRITICAL)
|
|
- **Fréquence** : Daily
|
|
|
|
### Ajouter Une Carte
|
|
|
|
Edit `card_database.md` et ajoute :
|
|
|
|
```markdown
|
|
### Card #X - [Nom]
|
|
**ID** : CATEGORY-XXX
|
|
**Question** : [Question]
|
|
**Answer** : [Réponse complète]
|
|
**Tags** : tags, séparés, par, virgule
|
|
**Difficulty** : Easy / Medium / Hard
|
|
**Frequency** : Daily / Every 2-3 days / Weekly
|
|
**Created** : [Date]
|
|
**Last Review** : Never
|
|
**Success Rate** : N/A
|
|
**Times Failed** : 0
|
|
**Notes** : [Pourquoi c'est important]
|
|
```
|
|
|
|
---
|
|
|
|
## 📊 Tracking & Stats
|
|
|
|
### Daily Reality Check
|
|
|
|
Chaque soir à **22h00**, alarm pour ouvrir `DAILY_REALITY_CHECK.md` et logger :
|
|
- Anki fait ? Oui/Non
|
|
- Alarm checkée ? Oui/Non
|
|
- Action concrète pour Tingting ?
|
|
- Streak actuelle
|
|
|
|
### Fichiers de Log
|
|
|
|
**`daily_sessions.md`** :
|
|
- Log de chaque session
|
|
- Score (X/3)
|
|
- Streak
|
|
- Notes
|
|
|
|
**`.state.json`** :
|
|
- Streak actuelle
|
|
- Last check date
|
|
- Days skipped
|
|
|
|
### Stats Hebdomadaires
|
|
|
|
Calculées automatiquement dans `daily_sessions.md` :
|
|
- Total sessions
|
|
- Average score
|
|
- Longest streak
|
|
- Most failed card
|
|
|
|
---
|
|
|
|
## 🔧 Installation Service
|
|
|
|
### Option A : NSSM (Recommandé)
|
|
|
|
1. **Download NSSM** : https://nssm.cc/download
|
|
2. **Install service** :
|
|
```cmd
|
|
nssm install TingtingGuardian
|
|
```
|
|
3. **Configure** :
|
|
- Path: `C:\Python3X\python.exe`
|
|
- Startup directory: `[chemin vers couple_matters]`
|
|
- Arguments: `anki_tingting\tingting_guardian_service.py`
|
|
- Startup type: **Automatic**
|
|
4. **Start** :
|
|
```cmd
|
|
nssm start TingtingGuardian
|
|
```
|
|
|
|
### Option B : Task Scheduler
|
|
|
|
1. Ouvrir **Task Scheduler**
|
|
2. **Create Task** :
|
|
- Name: `Tingting Guardian`
|
|
- Trigger: **At startup**
|
|
- Action: **Start program**
|
|
- Program: `python.exe`
|
|
- Arguments: `[full path to script]`
|
|
- Conditions: Uncheck "Start only if on AC power"
|
|
|
|
### Option C : Pyinstaller (Executable)
|
|
|
|
```bash
|
|
pip install pyinstaller
|
|
pyinstaller --onefile --noconsole tingting_guardian_service.py
|
|
```
|
|
|
|
Puis use NSSM avec le `.exe`
|
|
|
|
---
|
|
|
|
## 🎙️ TTS Customization
|
|
|
|
### Changer la Voix
|
|
|
|
Edit dans `tingting_guardian_service.py` :
|
|
|
|
```python
|
|
engine = pyttsx3.init()
|
|
voices = engine.getProperty('voices')
|
|
engine.setProperty('voice', voices[0].id) # 0 = Male, 1 = Female
|
|
```
|
|
|
|
### Changer les Heures de Check
|
|
|
|
Edit `CHECK_TIMES` dans le script :
|
|
|
|
```python
|
|
CHECK_TIMES = ["07:00", "14:00", "16:00"] # Modifie comme tu veux
|
|
```
|
|
|
|
### Désactiver le Weekend
|
|
|
|
```python
|
|
import datetime
|
|
|
|
def should_run_today():
|
|
return datetime.datetime.now().weekday() < 5 # Lundi-Vendredi only
|
|
|
|
# Dans main():
|
|
if should_run_today():
|
|
schedule_checks()
|
|
```
|
|
|
|
---
|
|
|
|
## 🧪 Testing
|
|
|
|
### Test Immédiat (sans attendre l'heure)
|
|
|
|
```bash
|
|
python tingting_guardian_service.py test
|
|
```
|
|
|
|
### Test d'une Carte Spécifique
|
|
|
|
Ouvre Claude et dis :
|
|
```
|
|
Test card CORE-001
|
|
```
|
|
|
|
Je vais te poser juste cette question.
|
|
|
|
### Vérifier l'État Actuel
|
|
|
|
```bash
|
|
python -c "from tingting_guardian_service import state; print(f'Streak: {state.streak}, Skipped: {state.days_skipped}')"
|
|
```
|
|
|
|
---
|
|
|
|
## 🔴 Red Flags & Alerts
|
|
|
|
Le système track automatiquement :
|
|
|
|
🚩 **Skip 2 jours** → Prompt de rappel gentle
|
|
🚩 **Skip 3+ jours** → Confrontation socratique
|
|
🚩 **Skip 5+ jours** → Nuclear option (screenshot à Tingting ?)
|
|
🚩 **Même carte ratée 3x** → Flagged pour attention spéciale
|
|
🚩 **Score déclinant** → Confrontation sur le pattern
|
|
|
|
---
|
|
|
|
## 📝 Daily Check Protocol
|
|
|
|
### Quand Tu Dis "daily check"
|
|
|
|
Je réponds **immédiatement** avec :
|
|
|
|
```markdown
|
|
🎯 **Daily Tingting Check - [DATE]**
|
|
|
|
**Question 1/3** : [Question from card database]
|
|
→ [Attend ta réponse]
|
|
|
|
**Question 2/3** : [Question contextualisée]
|
|
→ [Attend ta réponse]
|
|
|
|
**Question 3/3** : [Question sur action concrète]
|
|
→ [Attend ta réponse]
|
|
|
|
---
|
|
|
|
**Feedback** :
|
|
- Q1 : ✅/⚠️/❌ + Explication
|
|
- Q2 : ✅/⚠️/❌ + Explication
|
|
- Q3 : ✅/⚠️/❌ + Explication
|
|
|
|
**Score aujourd'hui** : X/3
|
|
**Streak** : X jours
|
|
**Observation** : [Pattern / Encouragement / Confrontation]
|
|
```
|
|
|
|
### Spaced Repetition
|
|
|
|
**Si réponse correcte** :
|
|
- Easy card : +7 jours
|
|
- Medium card : +3 jours
|
|
- Hard card : +1 jour
|
|
|
|
**Si réponse incorrecte** :
|
|
- Review demain (reset)
|
|
|
|
---
|
|
|
|
## ⚙️ Configuration Avancée
|
|
|
|
### Intégration Claude API (Optionnel)
|
|
|
|
Pour avoir le quiz **directement dans le popup** au lieu d'ouvrir le browser :
|
|
|
|
1. Get API key : https://console.anthropic.com/
|
|
2. Créer `.env` :
|
|
```
|
|
ANTHROPIC_API_KEY=sk-ant-...
|
|
```
|
|
3. Uncomment dans le script la partie API integration
|
|
|
|
### Notification Tingting (Nuclear Option)
|
|
|
|
Si skip 5+ jours, envoyer screenshot à Tingting :
|
|
|
|
```python
|
|
def send_to_tingting():
|
|
# Option 1: Email
|
|
# Option 2: WeChat API (si disponible)
|
|
# Option 3: Screenshot + clipboard (manuel)
|
|
pass
|
|
```
|
|
|
|
---
|
|
|
|
## 🐛 Troubleshooting
|
|
|
|
### "Module not found: pyttsx3"
|
|
|
|
```bash
|
|
pip install pyttsx3
|
|
```
|
|
|
|
### TTS ne parle pas
|
|
|
|
- Vérifie que les speakers sont pas muted
|
|
- Test : `python -c "import pyttsx3; e = pyttsx3.init(); e.say('test'); e.runAndWait()"`
|
|
|
|
### Popup n'apparaît pas
|
|
|
|
- Vérifie que Python a les permissions
|
|
- Run en admin si nécessaire
|
|
|
|
### Service ne démarre pas au boot
|
|
|
|
- Vérifie le Task Scheduler / NSSM config
|
|
- Check les logs Windows Event Viewer
|
|
|
|
### "Can't detect user presence"
|
|
|
|
- Vérifie que `pywin32` est installé
|
|
- Teste : `python -c "import win32api; print(win32api.GetLastInputInfo())"`
|
|
|
|
---
|
|
|
|
## 📚 Resources
|
|
|
|
- **CLAUDE.md** : Protocol complet pour Claude
|
|
- **couple_backlog/07_novembre_2025.md** : Origine de ce système
|
|
- **DAILY_REALITY_CHECK.md** : Tracking manuel backup
|
|
|
|
---
|
|
|
|
## ⚠️ CRITIQUE
|
|
|
|
**Ce système est un test de la capacité d'Alexis à tenir ses engagements.**
|
|
|
|
Si ce système ne tient pas :
|
|
- ❌ C'est un red flag majeur pour la relation
|
|
- ❌ Ça prouve que le pattern d'oubli est structurel
|
|
- ❌ Ça questionne la viabilité long-terme du couple
|
|
|
|
**Donc : Prends ce système au sérieux. C'est pas juste un gadget.**
|
|
|
|
---
|
|
|
|
## 🎯 Next Steps
|
|
|
|
1. [ ] Setup le service (test mode d'abord)
|
|
2. [ ] Run pendant 1 semaine
|
|
3. [ ] Analyser les stats (success rate, cards difficiles)
|
|
4. [ ] Ajuster les prompts/heures si nécessaire
|
|
5. [ ] Montrer les logs à Tingting (transparency)
|
|
|
|
**Prochaine session prévue** : 08/11/2025 à 07:00
|
|
|
|
---
|
|
|
|
**"On sait tous les deux ce qui va arriver."**
|
|
|
|
Prouve que cette fois c'est différent.
|