couple-repo/anki_tingting
StillHammer f1a2528a98 Add daily check session 2025-11-17 + food guide remaining categories
- Daily check: 2.5/3 score, initiative on business project
- Food guide: Track remaining categories to create (spices, oils, grains, etc.)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 09:31:47 +08:00
..
.state.json Add game design concepts + VPS tunnel project 2025-11-15 14:06:50 +08:00
card_database.md Add Daily Check System + Lead Conflicts + 6 Anki cards 2025-11-13 19:43:48 +08:00
CLAUDE.md Add Daily Check System + Lead Conflicts + 6 Anki cards 2025-11-13 19:43:48 +08:00
daily_sessions.md Add daily check session 2025-11-17 + food guide remaining categories 2025-11-17 09:31:47 +08:00
prompts_database.md Add Daily Check System + Lead Conflicts + 6 Anki cards 2025-11-13 19:43:48 +08:00
README.md Add Daily Check System + Lead Conflicts + 6 Anki cards 2025-11-13 19:43:48 +08:00
start_service.bat Add Daily Check System + Lead Conflicts + 6 Anki cards 2025-11-13 19:43:48 +08:00
test_popup.py Add Daily Check System + Lead Conflicts + 6 Anki cards 2025-11-13 19:43:48 +08:00
test_voices_winrt.py Add Daily Check System + Lead Conflicts + 6 Anki cards 2025-11-13 19:43:48 +08:00
test_voices.py Add Daily Check System + Lead Conflicts + 6 Anki cards 2025-11-13 19:43:48 +08:00
tingting_guardian_service.py Add Daily Check System + Lead Conflicts + 6 Anki cards 2025-11-13 19:43:48 +08:00

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

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

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

python tingting_guardian_service.py

Ou mieux : Installer comme service Windows (voir 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 :

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

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 :

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 :

CHECK_TIMES = ["07:00", "14:00", "16:00"]  # Modifie comme tu veux

Désactiver le Weekend

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)

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

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 :

🎯 **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 :

def send_to_tingting():
    # Option 1: Email
    # Option 2: WeChat API (si disponible)
    # Option 3: Screenshot + clipboard (manuel)
    pass

🐛 Troubleshooting

"Module not found: pyttsx3"

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.