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