From c408959fdf2a4de0a27bb6da0c8a4ca05aa268d0 Mon Sep 17 00:00:00 2001 From: StillHammer Date: Sun, 30 Nov 2025 17:41:24 +0800 Subject: [PATCH] Major repo update: First DONE project + execution patterns validated MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Projects - ✅ videotoMP3Transcriptor → DONE (first shipped project! 🎉) - GroveEngine → WIP (reference doc with 46 commits/3 weeks) - WeChat Homework Bot → WIP (comprehensive mini program plan) - ocr_pdf_service → CONCEPT (from PAUSE) - SecondVoice → PAUSE (failed attempt, will restart) ## Execution Patterns (Nov 2025) - 102 commits in 3 weeks (aissia: 33, groveengine: 46, confluent: 23) - 71% active time (15/21 days) - VERDICT: Alexis EXECUTES, not "plan only" - Balance: Big architectural projects + Fast shipping (videotoMP3 in 2 days) ## Couple - Hospital incident 29 nov documented (successful deescalation) - Pattern confirmed: Physical needs > Emotional management - Pattern confirmed: Retreat > Insist when tension ## Updated files - Status_Projets.md: Full project status with execution data - Alexis.md: Profile update with execution proof + hospital incident - CLAUDE.md: Current project state (5 WIP, 6 PAUSE, 1 DONE, 4 CONSTANT, 6 CONCEPT) - New: Projects/DONE/ folder structure - New: wechat_miniapp_homework.md (880 lines) - New: couple_backlog/29_novembre_2025_hopital.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- CLAUDE.md | 14 +- .../{PAUSE => CONCEPT}/ocr_pdf_service.md | 3 +- Projects/DONE/videotoMP3Transcriptor.md | 361 +++ Projects/{WIP => PAUSE}/SecondVoice.md | 4 +- Projects/Status_Projets.md | 169 +- Projects/WIP/GroveEngine.md | 12 +- Projects/WIP/wechat_miniapp_homework.md | 2209 +++++++++++++++++ couple_backlog/29_novembre_2025_hopital.md | 147 ++ personnalités/Alexis.md | 13 +- 9 files changed, 2871 insertions(+), 61 deletions(-) rename Projects/{PAUSE => CONCEPT}/ocr_pdf_service.md (98%) create mode 100644 Projects/DONE/videotoMP3Transcriptor.md rename Projects/{WIP => PAUSE}/SecondVoice.md (98%) create mode 100644 Projects/WIP/wechat_miniapp_homework.md create mode 100644 couple_backlog/29_novembre_2025_hopital.md diff --git a/CLAUDE.md b/CLAUDE.md index 576de35..6dc4052 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -11,6 +11,8 @@ **Alexis** : Introspection++, confiance--, peut être défensif, besoin de vérité directe → Détails : `personnalités/Alexis.md` +→ **Pattern exec** : 102 commits/3 semaines (nov 2025) - Il EXÉCUTE, pas "plan only" +→ **Balance** : Gros projets architecturaux (GroveEngine) + Fast shipping (videotoMP3 - 2j) **Tingting** : Professeure Grade 7 (Class 7-3, 41 élèves), leadership socratique → Détails : `personnalités/Tingting.md` @@ -73,7 +75,10 @@ Appliquer systématiquement pour tout problème : ### 💬 Couple -- `couple_backlog/` : Historique conflits (16-22 octobre 2025 = crise majeure) +- `couple_backlog/` : Historique conflits + - `16-22_octobre_2025.md` : Crise majeure (stabilisation après) + - `29_novembre_2025_hopital.md` : Incident hôpital (désamorcé avec succès) + - **Patterns clés** : Se retirer > Insister, Besoins physiques first, Contagion émotionnelle - `conversation_topics/` : Système de suivi des sujets actifs - `README.md` : Explications du système - `_template.md` : Template pour nouveaux sujets @@ -83,10 +88,13 @@ Appliquer systématiquement pour tout problème : ### 🔧 Travail & Projets -- `Projects/` : Projets organisés par statut (WIP/PAUSE/CONSTANT/CONCEPT/ARCHIVE) +- `Projects/` : Projets organisés par statut (WIP/PAUSE/DONE/CONSTANT/CONCEPT/ARCHIVE) - **Pour voir l'arborescence** : `tree Projects/` ou consulter `Projects/Status_Projets.md` - **Liste complète par statut** : `planning/TODO_data.md` - - Structure : 4 WIP, 6 PAUSE, 3 CONSTANT, 5 CONCEPT + - **Structure actuelle (30 nov 2025)** : 5 WIP, 6 PAUSE, 1 DONE, 4 CONSTANT, 6 CONCEPT + - **DONE** : videotoMP3Transcriptor (premier projet shipped! 🎉) + - **WIP actifs** : GroveEngine (46 commits/3sem), AISSIA (33 commits/3sem), Confluent (23 commits/3sem), WeChat Homework Bot + - **Projets externes** : aissia, groveengine, confluent dans `C:\Users\alexi\Documents\projects\` - `personnalités/TingtingWork.md` : Guide complet style PowerPoint - `.claude/skills/pptx/` : Skill PowerPoint officiel Anthropic (html2pptx) diff --git a/Projects/PAUSE/ocr_pdf_service.md b/Projects/CONCEPT/ocr_pdf_service.md similarity index 98% rename from Projects/PAUSE/ocr_pdf_service.md rename to Projects/CONCEPT/ocr_pdf_service.md index 8ddfce3..05604bb 100644 --- a/Projects/PAUSE/ocr_pdf_service.md +++ b/Projects/CONCEPT/ocr_pdf_service.md @@ -1,7 +1,8 @@ # OCR PDF Service - Service OCR en Ligne +**Status**: CONCEPT **Created**: 19/11/2025 -**Status**: Conception +**Moved to CONCEPT**: 30/11/2025 (depuis PAUSE) **Stack**: À définir (probablement Node.js + PaddleOCR Python backend) --- diff --git a/Projects/DONE/videotoMP3Transcriptor.md b/Projects/DONE/videotoMP3Transcriptor.md new file mode 100644 index 0000000..6d82036 --- /dev/null +++ b/Projects/DONE/videotoMP3Transcriptor.md @@ -0,0 +1,361 @@ +# VideoToMP3Transcriptor - YouTube Download & Transcription Service + +**Status**: DONE +**Type**: Utility Service (Node.js) +**Location**: `C:\Users\alexi\Documents\projects\videotoMP3Transcriptor` +**Created**: 24 novembre 2025 +**Shipped**: 25 novembre 2025 +**Moved to DONE**: 30 novembre 2025 + +--- + +## Vue d'ensemble + +**Service complet pour télécharger vidéos YouTube en MP3, transcrire, traduire et résumer.** + +### Use Cases +- Télécharger cours vidéo en MP3 +- Transcrire automatiquement (chinois, français, anglais, etc.) +- Traduire transcriptions +- Générer résumés AI + +--- + +## Stack Technique + +**Backend**: +- Node.js 18+ +- Express (REST API + SSE streaming) +- OpenAI API (Whisper + GPT-4o-mini + GPT-5.1) + +**CLI Tools**: +- yt-dlp (YouTube download) +- ffmpeg (audio conversion) + +**Port**: 8888 (par défaut) + +--- + +## Features + +### Download +- ✅ Single YouTube video → MP3 +- ✅ Playlist complète → MP3 batch +- ✅ Custom output directory + +### Transcription +- ✅ 3 modèles dispo : + - `gpt-4o-mini-transcribe` (défaut) - Rapide, économique + - `gpt-4o-transcribe` - Qualité supérieure + - `whisper-1` - Legacy (supports SRT/VTT) +- ✅ Multi-langue (auto-detect ou spécifié) +- ✅ Formats : txt, json, srt, vtt + +### Traduction +- ✅ GPT-4o-mini +- ✅ Multi-langue support + +### Résumé +- ✅ GPT-5.1 +- ✅ Résumé intelligent contextuel + +### Interfaces +- ✅ CLI (commands via npm run) +- ✅ REST API (endpoints POST/GET) +- ✅ SSE Streaming (progress en temps réel) +- ✅ Interface Web (public/) + +--- + +## API Endpoints + +### Core Endpoints + +**POST /download** - Télécharge vidéo/playlist en MP3 +```bash +curl -X POST http://localhost:8888/download \ + -H "Content-Type: application/json" \ + -d '{"url": "https://youtube.com/watch?v=VIDEO_ID"}' +``` + +**POST /transcribe** - Transcrit fichier audio existant +```bash +curl -X POST http://localhost:8888/transcribe \ + -H "Content-Type: application/json" \ + -d '{"filePath": "./output/video.mp3", "language": "en"}' +``` + +**POST /process** - Download + Transcribe en un appel +```bash +curl -X POST http://localhost:8888/process \ + -H "Content-Type: application/json" \ + -d '{"url": "URL", "language": "zh", "format": "txt"}' +``` + +### SSE Streaming Endpoints + +**POST /download-stream** - Download avec progress temps réel +**POST /process-stream** - Process avec updates streaming +**POST /summarize-stream** - Résumé avec streaming + +### Utility Endpoints + +**GET /health** - Health check +**GET /info?url=URL** - Info vidéo/playlist +**GET /files-list** - Liste fichiers téléchargés +**GET /files/:filename** - Download fichier spécifique + +--- + +## Configuration + +**Environment Variables** (`.env`): +```env +OPENAI_API_KEY=sk-... +PORT=8888 +OUTPUT_DIR=./output +``` + +**Modèles par défaut**: +- Transcription : `gpt-4o-mini-transcribe` +- Résumé : `gpt-5.1` +- Traduction : `gpt-4o-mini` + +--- + +## Usage + +### CLI + +```bash +# Download vidéo +npm run cli download "https://youtube.com/watch?v=VIDEO_ID" + +# Transcrire fichier +npm run cli transcribe ./output/video.mp3 -l fr + +# Download + Transcribe +npm run cli process "URL" -l en + +# Info vidéo +npm run cli info "URL" +``` + +### Linux Scripts (shortcuts) + +```bash +# Make executable (first time) +chmod +x scripts/*.sh + +# Download +./scripts/download.sh "URL" + +# Transcribe +./scripts/transcribe.sh ./output/file.mp3 zh + +# Process all-in-one +./scripts/process.sh "URL" fr + +# Start server +./scripts/server.sh +``` + +### API Server + +```bash +# Start server +npm run server + +# Server runs on http://localhost:8888 +``` + +--- + +## Structure Projet + +``` +videotoMP3Transcriptor/ +├── docs/ +│ └── API.md # Documentation API complète +├── src/ +│ ├── server.js # Express server + routes +│ ├── cli.js # CLI interface +│ └── services/ +│ ├── youtube.js # YouTube download +│ ├── transcription.js # OpenAI Whisper +│ ├── translation.js # GPT translation +│ └── summarize.js # GPT-5.1 summarization +├── scripts/ # Linux convenience scripts +│ ├── download.sh +│ ├── transcribe.sh +│ ├── process.sh +│ ├── server.sh +│ └── info.sh +├── public/ # Web interface +├── output/ # Downloaded files (default) +├── .env # Configuration +└── package.json +``` + +--- + +## Git Activity + +**Commits**: 2 (24-25 nov 2025) + +**Timeline**: +- 24 nov : Initial commit (download + transcription) +- 25 nov : Add AI summarization (GPT-5.1) + +**Status**: Shipped et fonctionnel + +--- + +## Use Cases Actuels + +### 1. Cours Chinois +- Download cours vidéo YouTube +- Transcription automatique chinois +- Révision texte pour Anki + +### 2. Contenu Éducatif +- Vidéos diverses langues +- Génération transcriptions +- Traduction si besoin + +### 3. Prototype pour Homework Bot +- **Code réutilisable** : + - `services/transcription.js` → Whisper integration + - `services/youtube.js` → Video download + - Pattern SSE streaming → Feedback temps réel +- **Overlap** : 50% du code homework bot déjà écrit ici + +--- + +## Relation avec Autres Projets + +### Chinese Audio TTS Pipeline (PAUSE) +**Verdict** : OBSOLÈTE +- videotoMP3 fait déjà exactement ça +- Pas besoin de projet séparé +- **Action** : ARCHIVE chinese_audio_tts_pipeline + +### WeChat Homework Bot (WIP) +**Synergies** : +- Whisper API transcription ✅ +- GPT-4 API correction (similaire résumé) ✅ +- File upload/processing ✅ +- Node.js/Express backend ✅ + +**Réutilisation** : Copy/paste `services/transcription.js` dans homework bot + +--- + +## Pourquoi DONE + +**Critères "DONE"**: +- ✅ Shipped et fonctionnel +- ✅ Utilisé en production (cours chinois) +- ✅ Pas de développement actif prévu +- ✅ Maintenance seulement si bugs + +**Pas un projet "abandonné"** : C'est un **service terminé et opérationnel**. + +**Différence avec WIP** : +- WIP = Développement actif en cours +- DONE = Shipped, maintenance uniquement + +--- + +## Installation & Démarrage Rapide + +### Prerequisites + +```bash +# Windows +winget install yt-dlp +winget install ffmpeg + +# macOS +brew install yt-dlp ffmpeg + +# Linux +sudo apt install yt-dlp ffmpeg +``` + +### Setup + +```bash +cd C:\Users\alexi\Documents\projects\videotoMP3Transcriptor + +# Install dependencies +npm install + +# Configure +cp .env.example .env +# Edit .env: Add OPENAI_API_KEY + +# Start server +npm run server + +# Or use CLI +npm run cli download "https://youtube.com/watch?v=..." +``` + +--- + +## Documentation + +**API complète** : `docs/API.md` dans le repo + +**Maintenance** : Documentation toujours à jour avec le code + +--- + +## Performance + +**Transcription** : +- 2min audio → ~10-15s (gpt-4o-mini-transcribe) +- Dépend latence API OpenAI + +**Download** : +- Dépend vitesse YouTube + taille fichier +- Progress visible via SSE streaming + +--- + +## Coûts + +**OpenAI API** (estimation 20 vidéos/mois, 10min moy) : +- Transcription : 20 × 10min × $0.006/min = **$1.20/mois** +- Résumé : 20 × $0.02 = **$0.40/mois** +- **Total** : ~**$1.60/mois** + +**Infrastructure** : 0€ (local) + +--- + +## Liens + +**Repo Git**: `C:\Users\alexi\Documents\projects\videotoMP3Transcriptor` + +**Documentation API**: `docs/API.md` + +**CLAUDE.md**: Instructions développement et maintenance + +--- + +## Notes + +**Créé** : 24 novembre 2025 +**Shipped** : 25 novembre 2025 +**Moved to DONE** : 30 novembre 2025 +**Auteur** : Alexis Trouvé + +**Pattern de travail** : Fast shipping (2 jours conception → shipped) + +**Lesson learned** : Service utilitaire bien scopé = 2 jours de dev = Utilisable immédiatement + +--- + +**Tags** : `#nodejs` `#youtube` `#whisper` `#transcription` `#openai` `#gpt` `#done` diff --git a/Projects/WIP/SecondVoice.md b/Projects/PAUSE/SecondVoice.md similarity index 98% rename from Projects/WIP/SecondVoice.md rename to Projects/PAUSE/SecondVoice.md index 6dd1a50..0e3a83e 100644 --- a/Projects/WIP/SecondVoice.md +++ b/Projects/PAUSE/SecondVoice.md @@ -1,8 +1,10 @@ # SecondVoice - Meeting Translation System -**Statut** : 🔥 URGENT - En conception +**Status** : PAUSE **Créé** : 17 novembre 2025 +**Moved to PAUSE** : 30 novembre 2025 **Type** : Projet support multivecteur +**Tentative** : Échec initial, relance prévue (besoin réel identifié) --- diff --git a/Projects/Status_Projets.md b/Projects/Status_Projets.md index 1d111ca..a512da1 100644 --- a/Projects/Status_Projets.md +++ b/Projects/Status_Projets.md @@ -1,6 +1,6 @@ # Status Global des Projets - Novembre 2025 -**Dernière mise à jour** : 20 novembre 2025 +**Dernière mise à jour** : 30 novembre 2025 --- @@ -12,32 +12,44 @@ --- -## 🚧 WIP (Work In Progress) - 4 projets +## 🚧 WIP (Work In Progress) - 6 projets ### 1. GroveEngine -**Fiche** : `WIP/GroveEngine.md` -**Description** : Runtime engine conçu pour développement par IA -**Stack** : À définir -**Status** : Développement actif +**Fiche** : `WIP/groveengine.md` (référence vers `C:\Users\alexi\Documents\projects\groveengine`) +**Description** : Game Engine C++ modulaire avec hot-reload (0.4ms) +**Stack** : C++17, bgfx, SDL2, nlohmann_json, spdlog +**Status** : Développement actif - 46 commits en 3 semaines (nov 2025) +**Relation** : Infrastructure pour Warfactory + AISSIA -### 2. SEO Article Generator +### 2. AISSIA +**Fiche** : `WIP/AISSIA.md` (référence vers `C:\Users\alexi\Documents\projects\aissia`) +**Description** : AI Voice Assistant basé sur GroveEngine +**Stack** : C++, GroveEngine, MCP, Whisper, STT/TTS engines +**Status** : Développement actif - 33 commits en 3 semaines (nov 2025) +**Highlights** : 120 tests passing, Phase 7 STT complete, Windows build + +### 3. Confluent +**Fiche** : À créer (référence vers `C:\Users\alexi\Documents\projects\confluent`) +**Description** : Constructed language (conlang) complète avec translator +**Stack** : Linguistique, JavaScript (translator) +**Status** : Développement actif - 23 commits en 3 semaines (nov 2025) +**Highlights** : Système émotionnel, Base 12, radical lookup 92% coverage + +### 4. WeChat Mini Program - Homework Bot +**Fiche** : `WIP/wechat_miniapp_homework.md` +**Description** : Mini Program WeChat pour devoirs audio/vidéo avec auto-correction AI +**Stack** : WeChat Mini Program (frontend), Node.js/Express (backend), Whisper, GPT-4 +**Status** : CONCEPT → WIP (30 nov 2025) +**Horizon** : Plusieurs années (usage long terme enseignement) +**Timeline** : 15 jours dev complet estimé + +### 5. SEO Article Generator **Fiche** : `WIP/SEO_Article_Generator.md` **Description** : Génération d'articles SEO avec anti-détection IA **Stack** : Node.js **Status** : En repurpose pour gérer du Fiverr **Historique** : Voir archives pour status octobre 2025 -### 3. AISSIA -**Fiche** : `WIP/AISSIA.md` -**Description** : AI assistant basé sur GroveEngine -**Stack** : Basé sur GroveEngine -**Status** : Développement actif - -### 4. SecondVoice -**Fiche** : `WIP/SecondVoice.md` -**Description** : Système de traduction en direct pour meetings chinois -**Stack** : À définir -**Status** : Développement actif --- @@ -45,42 +57,54 @@ ### 1. Warfactory **Fiche** : `PAUSE/Warfactory.md` -**Description** : Jeu (engine en développement) +**Description** : Simulation militaire industrielle (Factorio + stratégie) **Stack** : C++ -**Raison pause** : Focus sur GroveEngine +**Status** : Avance INDIRECTEMENT via GroveEngine +**Note** : Pas abandonné - GroveEngine = infrastructure pour Warfactory **Historique** : Voir archives pour worldgen design oct 2025 ### 2. chinese_audio_tts_pipeline **Fiche** : `PAUSE/chinese_audio_tts_pipeline.md` **Description** : Pipeline TTS pour génération audio chinois **Stack** : Python -**Status** : Utilisé pour Database chinois mais développement en pause +**Status** : OBSOLÈTE - Remplacé par videotoMP3Transcriptor +**Action suggérée** : ARCHIVE (doublon fonctionnel) ### 3. MCP_Game_Asset_Pipeline **Fiche** : `PAUSE/MCP_Game_Asset_Pipeline.md` -**Description** : Pipeline créatif AI pour génération assets de jeu +**Description** : Pipeline créatif AI pour génération assets de jeu (DALL-E, Suno, etc.) **Stack** : MCP + AI **Target** : Warfactory -**Status** : Concept/Vision pas encore implémenté +**Status** : Concept/Vision - Dépend de Warfactory (trop tôt) -### 4. ocr_pdf_service -**Fiche** : `PAUSE/ocr_pdf_service.md` -**Description** : Service OCR en ligne pour PDFs (extraction texte + PDF searchable) -**Stack** : Node.js + PaddleOCR Python -**Créé** : 19 nov 2025 -**Status** : Conception - -### 5. Essay_Writing_Tingting +### 4. Essay_Writing_Tingting **Fiche** : `PAUSE/Essay_Writing_Tingting.md` **Description** : Accompagnement Tingting pour écriture essais **Status** : Promesse faite, détails à clarifier +**Action requise** : Demander à Tingting cette semaine ou KILL **Note** : Card créée dans daily check system (ACTION-008) +### 5. shipping_strategy +**Fiche** : `PAUSE/shipping_strategy/` (dossier) +**Description** : Meta-projet organisation shipping (dual-track père/perso) +**Status** : Documentation organisationnelle +**Action suggérée** : ARCHIVE (tu shippes déjà sans ce système - 102 commits/3 semaines) + +### 6. SecondVoice +**Fiche** : `PAUSE/SecondVoice.md` (moved from WIP 30 nov 2025) +**Description** : Système traduction temps réel pour meetings chinois +**Stack** : À définir +**Status** : Tentative initiale échouée, relance prévue +**Note** : Besoin réel identifié (support Tingting + confort personnel meetings) + --- -## ♾️ CONSTANT (Projets perpétuels) - 3 projets +## ♾️ CONSTANT (Projets perpétuels) - 4 projets -### 1. civjdr - Civilisation de la Confluence +### 1. videotoMP3Transcriptor → MOVED TO DONE ✅ +**Voir** : `DONE/videotoMP3Transcriptor.md` + +### 2. civjdr - Civilisation de la Confluence **Fiche** : `CONSTANT/civjdr.md` **Description** : JDR 4X construction de civilisation sur Discord **Players** : GM (Arthur Ignatus) + Joueur (Rubanc/Alexis) @@ -88,15 +112,15 @@ **Workflow** : Tours GM → Analyse → Réponse → Cycle **Status** : Actif, cycles continus -### 2. Database Cours Chinois +### 3. Database Cours Chinois **Fiche** : `CONSTANT/Database_Cours_Chinois.md` **Description** : Base de données apprentissage chinois **Objectif** : Atteindre niveau Zhongyi (intermédiaire) **Niveau actuel** : En dessous de Zhongyi -**Outils** : PDF, exercices, gestion IA +**Outils** : PDF, exercices, gestion IA, videotoMP3Transcriptor **Historique** : Pipeline OCR validé oct 2025 (99.97% précision avec PaddleOCR) -### 3. Class Generator 2.0 +### 4. Class Generator 2.0 **Fiche** : `CONSTANT/ClassGen_Analysis.md` + `Class_Generator_2.0.md` **Description** : Plateforme éducative interactive (anglais/chinois, enfants 8-9 ans) **Stack** : Vanilla JS, Node.js @@ -108,78 +132,123 @@ --- -## 💡 CONCEPT - 5 projets +## 💡 CONCEPT - 6 projets -### 1. pokrovsk_last_day +### 1. ocr_pdf_service +**Fiche** : `CONCEPT/ocr_pdf_service.md` (moved from PAUSE 30 nov 2025) +**Description** : Service OCR en ligne pour PDFs (extraction texte + PDF searchable) +**Stack** : Node.js + PaddleOCR Python backend +**Modes** : Extraction texte brut OU PDF searchable avec texte intégré +**Status** : Conception - Pas de besoin immédiat identifié + +### 2. pokrovsk_last_day **Fiche** : `CONCEPT/pokrovsk_last_day.md` **Description** : Survival horror réaliste (guerre moderne Ukraine) **Genre** : FPS/Survival horror, drones comme ennemi principal **Status** : Concept complet (41KB de design doc) **Note** : Version gestion à discuter -### 2. social_network_manager +### 3. social_network_manager **Fiche** : `CONCEPT/social_network_manager.md` **Description** : Gestionnaire IA multi-plateformes sociales (6 plateformes) **Stack** : Browser-Use (Playwright + LLM vision) **Status** : Conception suspendue - Problèmes ToS/légaux **Créé** : 27 oct 2025 -### 3. vps_tunnel_china +### 4. vps_tunnel_china **Fiche** : `CONCEPT/vps_tunnel_china.md` **Description** : Setup VPN anti-GFW (contourner Great Firewall) **Stack** : V2Ray/WireGuard + obfuscation + Cloudflare **Contexte** : Shanghai **Status** : Doc complète (400 lignes, roadmap, scripts) mais pas déployé -### 4. Claude_Workflow_Optimization +### 5. Claude_Workflow_Optimization **Fiche** : `CONCEPT/Claude_Workflow_Optimization.md` **Description** : Optimiser workflow multi-instances Claude **Idées** : Hooks, slash commands, coordination multi-instances **Status** : Idée initiale, besoins à préciser -### 5. LeBonCoup (dossier) +### 6. LeBonCoup (dossier) **Status** : À examiner --- +## ✅ DONE (Projets shipped et terminés) - 1 projet + +### 1. videotoMP3Transcriptor +**Fiche** : `DONE/videotoMP3Transcriptor.md` +**Description** : Service YouTube → MP3 → Transcription → Traduction → Résumé +**Stack** : Node.js, Express, OpenAI (Whisper, GPT-4o-mini, GPT-5.1), yt-dlp, ffmpeg +**Shipped** : 25 novembre 2025 (2 jours de dev) +**Status** : En production, utilisé régulièrement pour cours chinois +**Note** : PREMIER PROJET DONE 🎉 +**Code réutilisable** : 50% overlap avec homework bot (Whisper, Express, file processing) + +--- + ## 📦 ARCHIVE ### Docs archivées - `MCP_Creative_Amplification.md` - Guide MCP (14 oct 2025, 927 lignes) - `Backlog_9-10_Octobre_2025.md` - Log incident git + reconstruction +### Projets candidats ARCHIVE (action suggérée) +- `chinese_audio_tts_pipeline` - Obsolète (remplacé par videotoMP3) +- `shipping_strategy` - Meta-projet (tu shippes déjà sans) + --- ## 📊 Statistiques -**Total projets actifs** : 12 (4 WIP + 5 PAUSE + 3 CONSTANT) -**Projets concepts** : 5 -**Archivés** : 2 docs +**Total projets actifs** : 16 (5 WIP + 6 PAUSE + 4 CONSTANT) +**Projets concepts** : 6 +**Projets DONE** : 1 (videotoMP3Transcriptor) 🎉 +**Archivés** : 2 docs + 2 candidats **Par domaine** : - Couple/Tingting : 1 (Essay Writing) - Apprentissage : 2 (Database Chinois, Class Generator) -- Tech/IA : 4 (GroveEngine, AISSIA, SecondVoice, SEO) +- Tech/IA : 5 (GroveEngine, AISSIA, Confluent, SecondVoice, SEO) - Gaming : 3 (Warfactory, MCP Assets, Pokrovsk) - Créatif : 1 (civjdr) -- Services : 2 (OCR PDF, VPS Tunnel) +- Services : 3 (videotoMP3 DONE, OCR PDF, VPS Tunnel) - Workflow : 2 (Social Network, Claude Workflow) +- Education : 1 (WeChat Homework Bot) --- -## 🎯 Patterns Observés (Historique Oct 2025) +## 🎯 Patterns Observés -### Zone de Confort : C++ (Warfactory) +### Pattern Exécution (Validé Nov 2025) + +**Données objectives (24 nov - 30 nov 2025)** : +- **102 commits** en 3 semaines (aissia: 33, groveengine: 46, confluent: 23) +- **71% temps actif** (15 jours actifs / 21 jours) +- **Premier projet DONE** (videotoMP3 - 2 jours conception → shipped) + +**Verdict** : **TU EXÉCUTES.** Pas "plan only", pas "paralysie perfectionnisme". + +**Pattern identifié** : +- ✅ Exécution massive quand projet activé +- ✅ Ship features complètes (tests, debug, validation) +- ✅ Progression logique (phases, milestones) +- ✅ Balance : Gros projets architecturaux (GroveEngine) + Fast shipping (videotoMP3) + +**Le seul "problème"** : Multi-threading 3 gros projets simultanés → Dilution focus → Aucun "fini" rapidement MAIS tous 3 progressent vraiment. + +### Zone de Confort : C++ (Warfactory, GroveEngine, AISSIA) - ✅ Design rapide et efficace - ✅ Pas de perfectionnisme paralysant - ✅ Confiance dans les choix - **Raison** : Se sent légitime → Pas de menace identitaire +- **Preuve** : 46 commits GroveEngine + 33 commits AISSIA en 3 semaines ### Hors Zone : Node.js (SEO, ClassGen) -- ❌ Syndrome de l'imposteur +- ❌ Syndrome de l'imposteur (diminué avec expérience) - ❌ Over-engineering compensatoire - ❌ Refactor en boucle - **Raison** : Se sent imposteur → Sur-compensation +- **Contre-exemple** : videotoMP3 shipped en 2 jours (Node.js) → Pattern s'améliore ### Solution qui Marche **Claude Code** : Compense difficulté d'exécution, garde partie conception (fun), délègue implémentation (chiante) diff --git a/Projects/WIP/GroveEngine.md b/Projects/WIP/GroveEngine.md index bb81881..45bbbd9 100644 --- a/Projects/WIP/GroveEngine.md +++ b/Projects/WIP/GroveEngine.md @@ -1,10 +1,12 @@ # GroveEngine - Framework C++ Modulaire -**Type** : Game Engine Framework -**Stack** : C++17, bgfx, SDL2, nlohmann_json, spdlog -**Repo** : `../GroveEngine/` -**Status** : Core validé, Rendering en développement -**Dernière mise à jour** : 27 novembre 2025 +**Status**: WIP +**Type**: Game Engine Framework +**Stack**: C++17, bgfx, SDL2, nlohmann_json, spdlog +**Location**: `C:\Users\alexi\Documents\projects\groveengine` +**Core Status**: Validé, Rendering en développement +**Moved to WIP**: 30 novembre 2025 +**Dernière activité**: 29 novembre 2025 (46 commits sur 3 semaines) --- diff --git a/Projects/WIP/wechat_miniapp_homework.md b/Projects/WIP/wechat_miniapp_homework.md new file mode 100644 index 0000000..dc20d9d --- /dev/null +++ b/Projects/WIP/wechat_miniapp_homework.md @@ -0,0 +1,2209 @@ +# WeChat Mini Program - Auto-Correction Homework System + +**Status**: WIP +**Created**: 2025-11-30 +**Moved to WIP**: 2025-11-30 +**Horizon**: Plusieurs années (usage long terme) +**Use Case**: Mini Program WeChat pour soumettre devoirs audio/vidéo et recevoir corrections automatiques AI +**Target**: Cours particuliers d'Alexis (2 classes, usage éducatif privé) +**Alternative**: Bot Wechaty (voir `wechat_homework_bot.md`) + +--- + +## 📋 Table des matières + +1. [Vue d'ensemble](#vue-densemble) +2. [Pourquoi Mini Program > Bot](#pourquoi-mini-program--bot) +3. [Faisabilité technique](#faisabilité-technique) +4. [Architecture système](#architecture-système) +5. [Stack technique](#stack-technique) +6. [Features détaillées](#features-détaillées) +7. [Design & UX](#design--ux) +8. [Backend API](#backend-api) +9. [Workflow utilisateur](#workflow-utilisateur) +10. [Risques et mitigations](#risques-et-mitigations) +11. [Plan d'implémentation](#plan-dimplémentation) +12. [Coûts](#coûts) +13. [Requirements WeChat](#requirements-wechat) +14. [Process Setup Compte WeChat Developer](#process-setup-compte-wechat-developer) +15. [Ressources](#ressources) + +--- + +## 🎯 Vue d'ensemble + +### Problème +- Étudiants envoient devoirs audio/vidéo de manière désorganisée +- Collecte manuelle chronophage +- Correction manuelle répétitive +- Pas de tracking automatique +- Feedback non standardisé + +### Solution : WeChat Mini Program + +Application native WeChat permettant de : +1. **Soumettre** devoirs audio/vidéo avec interface dédiée +2. **Transcrire** automatiquement (Whisper API) +3. **Corriger** avec AI (GPT-4) +4. **Afficher** feedback structuré en temps réel +5. **Tracker** progression individuelle +6. **Consulter** historique et statistiques + +### Bénéfices vs Bot Wechaty + +| Avantage | Impact | +|----------|--------| +| **Zéro risque ban** | Stabilité long terme garantie | +| **UX native** | Adoption étudiants +50% | +| **Features riches** | Historique, stats, notifications | +| **Scalabilité** | Illimitée (vs bot limité) | +| **Professionnalisme** | Crédibilité auprès parents/école | + +--- + +## ✅ Pourquoi Mini Program > Bot + +### Comparaison directe + +| Critère | Bot Wechaty | Mini Program ⭐ | +|---------|-------------|----------------| +| **Risque ban** | 5-15% ❌ | 0% ✅ | +| **Setup initial** | 2 jours ✅ | 5-7 jours ⚠️ | +| **Stabilité** | Moyenne | Excellente ✅ | +| **UX étudiant** | Messages WeChat | App dédiée ✅ | +| **Features** | Limitées | Illimitées ✅ | +| **Coût mensuel** | $23-51 | $10-30 ✅ | +| **Scalabilité** | ~50 users | Illimitée ✅ | +| **Pérennité** | Risquée | Garantie ✅ | + +### Cas d'usage recommandés + +**Mini Program** si : +- ✅ Usage >3 mois +- ✅ Classes stables +- ✅ Volonté investir 1 semaine dev +- ✅ Besoin crédibilité/professionnalisme + +**Bot Wechaty** si : +- ✅ Test <2 mois +- ✅ POC rapide +- ✅ Pas sûr de continuer + +--- + +## 🔧 Faisabilité technique + +### Verdict : **100% FAISABLE** + +### Capacités WeChat Mini Program confirmées + +**API natives disponibles** : +- ✅ `wx.chooseMedia()` - Sélection audio/vidéo/image +- ✅ `wx.getRecorderManager()` - Enregistrement audio natif +- ✅ `wx.uploadFile()` - Upload fichiers vers serveur +- ✅ `wx.request()` - API REST calls +- ✅ `wx.showToast()` / `wx.showModal()` - Notifications +- ✅ `wx.navigateTo()` - Navigation pages +- ✅ Template Messages - Notifications push + +**Limitations techniques** : +- Upload fichier : Max 100MB (largement suffisant pour audio/vidéo courts) +- Durée enregistrement : Illimitée (gérer côté app) +- Formats supportés : mp3, mp4, m4a, wav (tous compatibles Whisper) + +### Proof of concept + +```javascript +// Exemple minimal fonctionnel +Page({ + uploadHomework() { + wx.chooseMedia({ + count: 1, + mediaType: ['video', 'audio'], + success: (res) => { + wx.uploadFile({ + url: 'https://api.example.com/homework', + filePath: res.tempFiles[0].tempFilePath, + name: 'file', + success: (uploadRes) => { + wx.showToast({ title: 'Envoyé !' }) + } + }) + } + }) + } +}) +``` + +--- + +## 🏗️ Architecture système + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ ÉTUDIANT (WeChat App) │ +│ │ +│ ┌──────────────────────────────────────────────────────────┐ │ +│ │ WeChat Mini Program Frontend │ │ +│ │ - Upload audio/vidéo │ │ +│ │ - Enregistrement natif │ │ +│ │ - Historique devoirs │ │ +│ │ - Stats progression │ │ +│ └──────────────────────┬───────────────────────────────────┘ │ +└─────────────────────────┼───────────────────────────────────────┘ + │ + │ HTTPS (wx.uploadFile / wx.request) + │ + ▼ +┌─────────────────────────────────────────────────────────────────┐ +│ BACKEND SERVER (VPS) │ +│ │ +│ ┌──────────────────────────────────────────────────────────┐ │ +│ │ REST API (Express.js) │ │ +│ │ POST /api/homework - Upload devoir │ │ +│ │ GET /api/homework/:id - Status correction │ │ +│ │ GET /api/student/stats - Statistiques │ │ +│ │ GET /api/student/history - Historique │ │ +│ └──────────────────────┬───────────────────────────────────┘ │ +│ │ │ +│ ┌──────────────────────▼───────────────────────────────────┐ │ +│ │ JOB QUEUE (Bull + Redis) │ │ +│ │ - process-homework (async) │ │ +│ │ - send-notification │ │ +│ └──────────────────────┬───────────────────────────────────┘ │ +│ │ │ +│ ┌──────────────────────▼───────────────────────────────────┐ │ +│ │ FILE STORAGE (./uploads/) │ │ +│ │ timestamp_studentId_filename.mp3/mp4 │ │ +│ └──────────────────────────────────────────────────────────┘ │ +│ │ +│ ┌──────────────────────────────────────────────────────────┐ │ +│ │ DATABASE (PostgreSQL/SQLite) │ │ +│ │ - students │ │ +│ │ - assignments │ │ +│ │ - submissions │ │ +│ │ - corrections │ │ +│ └──────────────────────────────────────────────────────────┘ │ +└─────────────────────────┬───────────────────────────────────────┘ + │ + │ API Calls + │ + ┌─────────────────┼─────────────────┐ + │ │ │ + ▼ ▼ ▼ +┌──────────────┐ ┌──────────────┐ ┌──────────────┐ +│ Whisper │ │ GPT-4 │ │ WeChat │ +│ API │ │ API │ │ Notify API │ +│ │ │ │ │ │ +│ Transcription│ │ Correction │ │ Template │ +│ Audio→Text │ │ + Feedback │ │ Message │ +└──────────────┘ └──────────────┘ └──────────────┘ +``` + +--- + +## 🛠️ Stack technique + +### 1. Frontend (WeChat Mini Program) + +**Langage** : JavaScript (WXML/WXSS, similaire HTML/CSS mais propriétaire) + +**Structure fichiers** : +``` +miniprogram/ +├── pages/ +│ ├── index/ # Page accueil +│ ├── upload/ # Upload devoir +│ ├── history/ # Historique +│ ├── detail/ # Détail correction +│ └── stats/ # Statistiques +├── components/ +│ ├── recorder/ # Enregistreur audio custom +│ └── progress/ # Barre progression +├── utils/ +│ ├── api.js # Helper API calls +│ └── auth.js # WeChat login +├── app.js # Entry point +├── app.json # Config app +└── app.wxss # Styles globaux +``` + +**Frameworks/Libs** : +- **WeChat DevTools** (IDE officiel) - Obligatoire +- **Vant Weapp** (UI components) - Optionnel mais recommandé +- **WeUI** (style guide WeChat) - Recommandé + +### 2. Backend + +**Langage** : Node.js 18+ (TypeScript optionnel) + +**Framework** : Express.js + +**Structure** : +``` +server/ +├── src/ +│ ├── routes/ +│ │ ├── homework.js +│ │ ├── student.js +│ │ └── auth.js +│ ├── controllers/ +│ │ ├── homeworkController.js +│ │ └── studentController.js +│ ├── services/ +│ │ ├── whisperService.js # Transcription +│ │ ├── gptService.js # Correction +│ │ └── wechatService.js # Notifications +│ ├── jobs/ +│ │ └── processHomework.js # Worker async +│ ├── models/ +│ │ ├── Student.js +│ │ ├── Submission.js +│ │ └── Correction.js +│ ├── middleware/ +│ │ ├── auth.js # JWT validation +│ │ └── upload.js # Multer config +│ └── utils/ +│ ├── db.js +│ └── logger.js +├── uploads/ # Fichiers temporaires +├── .env # Variables env +└── server.js # Entry point +``` + +**Key dependencies** : +```json +{ + "express": "^4.18.0", + "multer": "^1.4.5-lts.1", + "bull": "^4.12.0", + "redis": "^4.6.0", + "pg": "^8.11.0", // PostgreSQL + "openai": "^4.20.0", // Whisper + GPT-4 + "dotenv": "^16.3.0", + "jsonwebtoken": "^9.0.0", + "axios": "^1.6.0" +} +``` + +### 3. Database + +**PostgreSQL** (recommandé) ou SQLite (POC) + +**Schema** : +```sql +-- Students (liaison WeChat OpenID) +CREATE TABLE students ( + id SERIAL PRIMARY KEY, + wechat_openid VARCHAR(100) UNIQUE NOT NULL, + nickname VARCHAR(100), + class_name VARCHAR(50), + created_at TIMESTAMP DEFAULT NOW() +); + +-- Assignments (devoirs à faire) +CREATE TABLE assignments ( + id SERIAL PRIMARY KEY, + title VARCHAR(200) NOT NULL, + description TEXT, + due_date TIMESTAMP, + created_at TIMESTAMP DEFAULT NOW() +); + +-- Submissions (devoirs rendus) +CREATE TABLE submissions ( + id SERIAL PRIMARY KEY, + student_id INTEGER REFERENCES students(id), + assignment_id INTEGER REFERENCES assignments(id), + file_path VARCHAR(500) NOT NULL, + file_type VARCHAR(20), -- 'audio' | 'video' + file_size INTEGER, + status VARCHAR(20) DEFAULT 'pending', -- pending | processing | completed | error + submitted_at TIMESTAMP DEFAULT NOW() +); + +-- Corrections +CREATE TABLE corrections ( + id SERIAL PRIMARY KEY, + submission_id INTEGER REFERENCES submissions(id) UNIQUE, + transcription TEXT, + score INTEGER, -- 0-100 + feedback_json JSONB, -- Structure feedback détaillé + corrected_at TIMESTAMP DEFAULT NOW() +); + +-- Stats cache (pour performance) +CREATE TABLE student_stats ( + student_id INTEGER PRIMARY KEY REFERENCES students(id), + total_submissions INTEGER DEFAULT 0, + average_score REAL, + last_submission TIMESTAMP, + updated_at TIMESTAMP DEFAULT NOW() +); + +-- Indexes pour performance +CREATE INDEX idx_submissions_student ON submissions(student_id); +CREATE INDEX idx_submissions_status ON submissions(status); +CREATE INDEX idx_corrections_submission ON corrections(submission_id); +``` + +### 4. Job Queue + +**Bull** (Redis-based) pour traitement asynchrone + +**Pourquoi** : +- Upload fichier = retour immédiat +- Transcription + Correction = traitement async (peut prendre 30-60s) +- Retry automatique si échec +- Monitoring jobs + +```javascript +// jobs/processHomework.js +const Queue = require('bull'); +const homeworkQueue = new Queue('homework', process.env.REDIS_URL); + +homeworkQueue.process(async (job) => { + const { submissionId, filePath } = job.data; + + // 1. Transcription + job.progress(30); + const transcription = await whisperService.transcribe(filePath); + + // 2. Correction + job.progress(60); + const correction = await gptService.correct(transcription); + + // 3. Save DB + job.progress(90); + await db.saveCorrection(submissionId, correction); + + // 4. Notify student + await wechatService.sendTemplateMessage(submissionId); + + return { success: true }; +}); +``` + +### 5. AI Services + +#### Whisper API (Transcription) +```javascript +// services/whisperService.js +const OpenAI = require('openai'); +const fs = require('fs'); + +const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY }); + +async function transcribe(audioPath) { + const transcription = await openai.audio.transcriptions.create({ + file: fs.createReadStream(audioPath), + model: "whisper-1", + language: "fr", // ou "zh", "en" + response_format: "verbose_json" // Inclut timestamps, confidence + }); + + return { + text: transcription.text, + duration: transcription.duration, + confidence: transcription.segments[0]?.confidence || 0 + }; +} +``` + +#### GPT-4 API (Correction) +```javascript +// services/gptService.js +async function correct(transcription, assignmentCriteria) { + const prompt = ` +Tu es un professeur de français expérimenté. Corrige ce devoir oral selon ces critères : + +**Critères d'évaluation** : +1. Grammaire (0-25 points) +2. Vocabulaire (0-25 points) +3. Fluidité (0-25 points) +4. Prononciation (0-25 points) + +**Transcription** : +${transcription.text} + +**Format de réponse** (JSON strict) : +{ + "score_total": 0-100, + "scores_details": { + "grammaire": 0-25, + "vocabulaire": 0-25, + "fluidite": 0-25, + "prononciation": 0-25 + }, + "points_positifs": ["...", "..."], + "points_ameliorer": ["...", "..."], + "recommandations": "...", + "erreurs_principales": [ + {"texte": "...", "correction": "...", "explication": "..."} + ] +} +`; + + const response = await openai.chat.completions.create({ + model: "gpt-4", + messages: [ + { role: "system", content: "Tu es un correcteur expert. Réponds UNIQUEMENT en JSON valide." }, + { role: "user", content: prompt } + ], + temperature: 0.3, + response_format: { type: "json_object" } + }); + + return JSON.parse(response.choices[0].message.content); +} +``` + +### 6. Infrastructure + +**Hébergement** : +- **VPS Chine** : Aliyun, Tencent Cloud (si besoin ICP license pour publication) +- **VPS International** : Hetzner, DigitalOcean, Vultr (+ VPN si blocages) +- **Serverless** : Vercel/Railway (backend) + Cloudflare R2 (storage) + +**Requirements minimaux** : +- 2GB RAM +- 2 vCPU +- 30GB SSD +- Ubuntu 22.04 LTS + +**Stack deployment** : +- **PM2** : Process manager + auto-restart +- **Nginx** : Reverse proxy + SSL +- **Let's Encrypt** : Certificats SSL gratuits +- **Redis** : Job queue + cache + +--- + +## 🎨 Features détaillées + +### MVP (Phase 1) + +#### 1. Authentification +- Login WeChat automatique (`wx.login()`) +- Récupération OpenID (identifiant unique anonyme) +- Stockage JWT pour API calls + +#### 2. Soumission devoir +- **Upload fichier existant** : + - Bouton "Choisir fichier" → `wx.chooseMedia()` + - Preview audio/vidéo avant envoi + - Indication taille fichier +- **Enregistrement direct** : + - Bouton "Enregistrer" → `wx.getRecorderManager()` + - Timer temps réel + - Bouton pause/reprendre + - Écoute playback avant envoi +- **Métadonnées** : + - Sélection assignment (si multiple devoirs) + - Commentaire optionnel étudiant +- **Upload** : + - Progress bar temps réel + - Retry automatique si échec réseau + - Notification succès + +#### 3. Status correction +- **Page status temps réel** : + - "⏳ En cours de traitement..." + - "🎧 Transcription audio..." (30%) + - "🤖 Correction en cours..." (60%) + - "✅ Terminé !" (100%) +- **Notifications push** : + - Template Message WeChat quand correction prête + +#### 4. Affichage feedback +- **Score global** : Grande card avec score/100 +- **Scores détaillés** : + - Grammaire : 18/25 + - Vocabulaire : 20/25 + - Fluidité : 15/25 + - Prononciation : 17/25 +- **Points positifs** : Liste avec icônes ✅ +- **Points à améliorer** : Liste avec icônes ⚠️ +- **Erreurs principales** : + - Texte original + - Correction suggérée + - Explication courte +- **Recommandations** : Paragraphe synthèse + +#### 5. Historique +- **Liste devoirs** : + - Tri par date (récent → ancien) + - Card par devoir : Date, titre, score, status + - Filtre par status (tous, corrigés, en attente) +- **Navigation** : Tap card → Page détail correction + +#### 6. Statistiques basiques +- **Nombre devoirs rendus** +- **Score moyen** +- **Dernier devoir** +- **Graphique progression** (scores au fil du temps) + +### Phase 2 (Features avancées) + +#### 7. Gestion assignments professeur +- Interface admin (web ou mini program séparé) +- Création devoirs avec : + - Titre, description, deadline + - Critères correction custom + - Durée audio min/max +- Suivi temps réel (qui a rendu, qui manque) + +#### 8. Notifications intelligentes +- Rappels deadline (J-3, J-1, J-day) +- Encouragements progression +- Alerts baisse performance + +#### 9. Gamification +- Badges (3 devoirs d'affilée, score >90, etc.) +- Leaderboard classe (optionnel, opt-in) +- Streaks (jours consécutifs) + +#### 10. Export données +- Export Excel stats élève +- PDF rapport individuel +- Partage parents (QR code) + +#### 11. Multi-langue +- Switch FR/EN/CN +- Détection langue audio automatique +- Feedback dans langue de l'étudiant + +#### 12. Voice feedback +- Option TTS (Text-to-Speech) pour lire feedback +- Audio correction prononciation + +--- + +## 🎨 Design & UX + +### Thème visuel + +**Identité** : +- Clean, éducatif, encourageant +- Couleurs : Bleu primary (#1989FA WeChat), Vert success (#07C160), Rouge error (#EE0A24) +- Icons : WeUI icons standard + +### Pages principales + +#### Page 1 : Home +``` +┌─────────────────────────────┐ +│ 👋 Bonjour, [Nickname] │ +│ │ +│ 📊 Tes statistiques │ +│ ┌─────────────────────┐ │ +│ │ Devoirs : 12 │ │ +│ │ Moyenne : 78/100 │ │ +│ │ Dernier : Il y a 2j │ │ +│ └─────────────────────┘ │ +│ │ +│ [📤 Nouveau devoir] │ +│ │ +│ 📝 Devoirs récents │ +│ ┌─────────────────────┐ │ +│ │ 28 Nov - Devoir 5 │ │ +│ │ ✅ 82/100 │ │ +│ └─────────────────────┘ │ +│ ┌─────────────────────┐ │ +│ │ 26 Nov - Devoir 4 │ │ +│ │ ⏳ En cours... │ │ +│ └─────────────────────┘ │ +│ │ +│ [Historique complet] │ +└─────────────────────────────┘ + Home Upload Stats +``` + +#### Page 2 : Upload +``` +┌─────────────────────────────┐ +│ 📤 Soumettre un devoir │ +│ │ +│ Devoir : [Dropdown v] │ +│ Devoir 5 - Présentation │ +│ │ +│ ┌─────────────────────┐ │ +│ │ 🎙️ Enregistrer │ │ +│ │ audio │ │ +│ └─────────────────────┘ │ +│ │ +│ ┌─────────────────────┐ │ +│ │ 📁 Choisir │ │ +│ │ fichier │ │ +│ └─────────────────────┘ │ +│ │ +│ Commentaire (optionnel): │ +│ ┌─────────────────────┐ │ +│ │ │ │ +│ └─────────────────────┘ │ +│ │ +│ [Envoyer] │ +└─────────────────────────────┘ +``` + +#### Page 3 : Feedback détail +``` +┌─────────────────────────────┐ +│ Devoir 5 - 28 Nov 2025 │ +│ │ +│ ┌─────────────────────┐ │ +│ │ 82/100 │ │ +│ │ ⭐⭐⭐⭐ │ │ +│ └─────────────────────┘ │ +│ │ +│ Détails : │ +│ Grammaire ███████ 18/25 │ +│ Vocabulaire ████████ 20/25│ +│ Fluidité ██████ 15/25 │ +│ Prononciation ███████ 17/25│ +│ │ +│ ✅ Points positifs : │ +│ • Bon vocabulaire varié │ +│ • Structure claire │ +│ │ +│ ⚠️ À améliorer : │ +│ • Accord verbes │ +│ • Prononciation 'u' │ +│ │ +│ 💡 Recommandations : │ +│ Revise les accords... │ +│ │ +│ [Voir transcription] │ +└─────────────────────────────┘ +``` + +### Composants réutilisables + +#### ScoreCard Component +```javascript +// components/score-card/score-card.js +Component({ + properties: { + score: Number, + maxScore: { type: Number, value: 100 } + }, + data: { + percentage: 0, + stars: 0 + }, + lifetimes: { + attached() { + const percentage = (this.data.score / this.data.maxScore) * 100; + const stars = Math.round(percentage / 20); // 0-5 étoiles + this.setData({ percentage, stars }); + } + } +}) +``` + +--- + +## 🔌 Backend API + +### Endpoints complets + +#### 1. Authentication + +**POST `/api/auth/login`** +```javascript +// Request +{ + "code": "WeChat login code" +} + +// Response +{ + "token": "JWT_TOKEN", + "student": { + "id": 123, + "nickname": "张三", + "class": "Class A" + } +} +``` + +#### 2. Assignments + +**GET `/api/assignments`** +```javascript +// Response +[ + { + "id": 1, + "title": "Devoir 5 - Présentation famille", + "description": "Présente ta famille en 2 minutes", + "due_date": "2025-12-05T23:59:59Z", + "status": "active" + } +] +``` + +#### 3. Submissions + +**POST `/api/homework`** +```javascript +// Request (multipart/form-data) +{ + "file": File, + "assignment_id": 1, + "comment": "Voici mon devoir" +} + +// Response +{ + "submission_id": 456, + "status": "pending", + "message": "Devoir reçu ! Traitement en cours..." +} +``` + +**GET `/api/homework/:id`** +```javascript +// Response +{ + "id": 456, + "status": "completed", // pending | processing | completed | error + "progress": 100, + "submitted_at": "2025-11-30T10:30:00Z", + "corrected_at": "2025-11-30T10:32:15Z", + "file_type": "audio", + "correction": { + "score_total": 82, + "scores_details": { + "grammaire": 18, + "vocabulaire": 20, + "fluidite": 15, + "prononciation": 17 + }, + "points_positifs": ["Vocabulaire varié", "Structure claire"], + "points_ameliorer": ["Accords verbes", "Prononciation 'u'"], + "recommandations": "...", + "transcription": "Bonjour je m'appelle..." + } +} +``` + +#### 4. Student Stats + +**GET `/api/student/stats`** +```javascript +// Response +{ + "total_submissions": 12, + "average_score": 78.5, + "last_submission": "2025-11-30T10:30:00Z", + "scores_history": [ + { "date": "2025-11-15", "score": 75 }, + { "date": "2025-11-20", "score": 80 }, + { "date": "2025-11-25", "score": 82 } + ] +} +``` + +**GET `/api/student/history`** +```javascript +// Query params: ?limit=20&offset=0&status=all +// Response +{ + "submissions": [ + { + "id": 456, + "assignment_title": "Devoir 5", + "submitted_at": "2025-11-30T10:30:00Z", + "status": "completed", + "score": 82 + } + ], + "total": 12 +} +``` + +### Implementation complète + +```javascript +// routes/homework.js +const express = require('express'); +const multer = require('multer'); +const router = express.Router(); +const homeworkController = require('../controllers/homeworkController'); +const authMiddleware = require('../middleware/auth'); + +const upload = multer({ + dest: 'uploads/', + limits: { fileSize: 100 * 1024 * 1024 }, // 100MB + fileFilter: (req, file, cb) => { + const allowedTypes = ['audio/mpeg', 'audio/mp4', 'video/mp4']; + if (allowedTypes.includes(file.mimetype)) { + cb(null, true); + } else { + cb(new Error('Type fichier non supporté')); + } + } +}); + +router.post( + '/homework', + authMiddleware.verifyToken, + upload.single('file'), + homeworkController.submit +); + +router.get( + '/homework/:id', + authMiddleware.verifyToken, + homeworkController.getStatus +); + +module.exports = router; +``` + +```javascript +// controllers/homeworkController.js +const homeworkQueue = require('../jobs/processHomework'); +const db = require('../utils/db'); + +exports.submit = async (req, res) => { + try { + const { assignment_id, comment } = req.body; + const file = req.file; + const studentId = req.user.id; // From JWT + + // Save submission DB + const submission = await db.query(` + INSERT INTO submissions (student_id, assignment_id, file_path, file_type, file_size) + VALUES ($1, $2, $3, $4, $5) + RETURNING id + `, [studentId, assignment_id, file.path, file.mimetype.split('/')[0], file.size]); + + const submissionId = submission.rows[0].id; + + // Add to job queue (async processing) + await homeworkQueue.add('process-homework', { + submissionId, + filePath: file.path, + fileType: file.mimetype + }); + + res.json({ + submission_id: submissionId, + status: 'pending', + message: 'Devoir reçu ! Traitement en cours...' + }); + + } catch (error) { + console.error('Submit error:', error); + res.status(500).json({ error: 'Erreur serveur' }); + } +}; + +exports.getStatus = async (req, res) => { + try { + const { id } = req.params; + const studentId = req.user.id; + + // Get submission + correction + const result = await db.query(` + SELECT + s.*, + c.transcription, + c.score, + c.feedback_json, + c.corrected_at + FROM submissions s + LEFT JOIN corrections c ON s.id = c.submission_id + WHERE s.id = $1 AND s.student_id = $2 + `, [id, studentId]); + + if (result.rows.length === 0) { + return res.status(404).json({ error: 'Devoir non trouvé' }); + } + + const submission = result.rows[0]; + + res.json({ + id: submission.id, + status: submission.status, + submitted_at: submission.submitted_at, + corrected_at: submission.corrected_at, + correction: submission.feedback_json ? { + score_total: submission.score, + ...submission.feedback_json, + transcription: submission.transcription + } : null + }); + + } catch (error) { + console.error('GetStatus error:', error); + res.status(500).json({ error: 'Erreur serveur' }); + } +}; +``` + +--- + +## 🔄 Workflow utilisateur + +### Scénario complet + +**1. Première connexion (one-time)** +``` +Étudiant ouvre Mini Program +→ wx.login() automatique +→ Backend crée compte avec OpenID +→ Demande nickname (optionnel) +→ Assign à classe (via code invitation ou manual) +``` + +**2. Soumission devoir** +``` +Étudiant clique "Nouveau devoir" +→ Sélectionne assignment (dropdown) +→ Choix : Enregistrer OU Upload fichier + +[Enregistrement] +→ Clique bouton micro +→ Enregistre (timer visible) +→ Arrête enregistrement +→ Écoute playback (bouton play) +→ Valide ou recommence + +[Upload] +→ Clique "Choisir fichier" +→ Sélectionne depuis galerie/fichiers +→ Preview fichier + +→ (Optionnel) Ajoute commentaire +→ Clique "Envoyer" +→ Progress bar upload (0-100%) +→ Notification "Devoir envoyé !" +→ Redirection page status +``` + +**3. Traitement backend (invisible pour user)** +``` +[Backend reçoit fichier] +→ Save DB (status: pending) +→ Return submission_id +→ Add job queue + +[Worker async] +→ Update status: processing +→ Extract audio si vidéo (ffmpeg) +→ Whisper API transcription (30s) +→ GPT-4 correction (15s) +→ Save correction DB +→ Update status: completed +→ Send WeChat Template Message notification +``` + +**4. Consultation résultat** +``` +[Temps réel] +Étudiant voit page status auto-refresh +→ "⏳ En cours..." → "🎧 Transcription..." → "✅ Terminé !" + +[Notification push] +Reçoit Template Message WeChat +→ "Ton devoir a été corrigé ! Score: 82/100" +→ Clique notification → Ouvre Mini Program page détail + +[Page détail] +→ Score global 82/100 +→ Graphique scores détaillés +→ Points positifs / à améliorer +→ Erreurs avec corrections suggérées +→ Recommandations +→ Bouton "Voir transcription" (expand) +``` + +**5. Historique** +``` +Étudiant clique tab "Historique" +→ Liste tous devoirs (scroll infini) +→ Filtre par status +→ Clique card → Page détail correction +``` + +**6. Stats** +``` +Étudiant clique tab "Stats" +→ Cards stats (total, moyenne, dernier) +→ Graphique progression (line chart) +→ (Future) Badges, streaks, etc. +``` + +--- + +## ⚠️ Risques et mitigations + +### 1. Review WeChat rejetée + +**Risque** : Mini Program refusée lors du review initial + +**Probabilité** : 15-25% (première soumission) + +**Causes communes** : +- Contenu sensible (politique, pornographie) +- Fonctionnalités non déclarées +- Bugs critiques +- Manque documentation + +**Mitigations** : +- ✅ **Review checklist officielle** avant submit +- ✅ **Tests exhaustifs** (zero crash) +- ✅ **Description claire** du use case éducatif +- ✅ **Screenshots** représentatifs +- ✅ **Privacy policy** si collect données +- ✅ **Soumettre en chinois** (description, textes) + +**Plan B si rejet** : +- Lire raison rejet (WeChat donne feedback) +- Corriger et re-soumettre (généralement accepté round 2) +- Support WeChat développeur (réactif) + +### 2. Coûts API explosent + +**Risque** : Volume inattendu → facture OpenAI élevée + +**Probabilité** : 10% (si pas de quotas) + +**Mitigations** : +- ✅ **Hard limits** OpenAI dashboard (ex: $50/mois max) +- ✅ **Rate limiting** app : Max 3 devoirs/étudiant/semaine +- ✅ **Alertes** si coûts >$30/mois (email notification) +- ✅ **Caching** : Ne pas re-transcrire si déjà fait +- ✅ **Fallback** : Baidu STT gratuit si quota dépassé + +### 3. Performance backend dégradée + +**Risque** : Trop de requests simultanées → serveur crash + +**Probabilité** : 20% (si traffic spike) + +**Mitigations** : +- ✅ **Job queue** (Bull) : Traitement async, pas de surcharge +- ✅ **Rate limiting** API : Max 10 req/min/user +- ✅ **Auto-scaling** : VPS upgrade automatique (si cloud) +- ✅ **Monitoring** : Uptime Kuma + alerts +- ✅ **CDN** : Cloudflare pour fichiers statiques + +### 4. Qualité transcription insuffisante + +**Risque** : Audio bruyant/mauvaise qualité → transcription incorrecte + +**Probabilité** : 15-25% + +**Mitigations** : +- ✅ **Consignes claires** étudiant : Environnement calme, micro proche +- ✅ **Validation confidence** Whisper : Flag si <0.7 +- ✅ **Human review** échantillon aléatoire (10%) +- ✅ **Bouton "Contester"** : Étudiant peut signaler erreur +- ✅ **Fallback** : Si très mauvais, demander re-soumission + +### 5. Privacy / RGPD + +**Risque** : Stockage données sensibles (voix mineurs) + +**Mitigations** : +- ✅ **Consentement explicite** parents (popup première connexion) +- ✅ **Anonymisation** : OpenID only, pas de noms réels stockés +- ✅ **Encryption** fichiers sensibles (at rest + transit) +- ✅ **Rétention** : Auto-delete fichiers après 90 jours +- ✅ **Privacy policy** claire (page dédiée dans app) +- ✅ **Export données** : User peut télécharger ses données + +### 6. Dépendance OpenAI + +**Risque** : API OpenAI down → app inutilisable + +**Probabilité** : 2-5% (rare mais possible) + +**Mitigations** : +- ✅ **Retry logic** : 3 tentatives avec backoff exponentiel +- ✅ **Fallback API** : Baidu STT + Claude API (Anthropic) pour correction +- ✅ **Queue persistence** : Redis persiste jobs si serveur redémarre +- ✅ **Status page** : Afficher "Maintenance" si API down + +### 7. WeChat API changes + +**Risque** : WeChat modifie API → app casse + +**Probabilité** : 5-10% sur 12 mois + +**Mitigations** : +- ✅ **Version pinning** : Utiliser version stable SDK +- ✅ **Monitoring** WeChat changelog +- ✅ **Community** : Suivre forums développeurs WeChat +- ✅ **Testing** : CI/CD avec tests automatisés + +--- + +## 🚀 Plan d'implémentation + +### Phase 0 : Setup & Requirements (Jour 1-2) + +**Objectif** : Compte développeur + environnement prêt + +**Tasks** : +- [ ] Créer compte WeChat Developer (mp.weixin.qq.com) + - Upload ID card (verification 1-3 jours) + - Type compte : "个人" (Personnel) - Gratuit +- [ ] Télécharger WeChat DevTools (IDE officiel) +- [ ] Lire documentation officielle : + - Mini Program guide : https://developers.weixin.qq.com/miniprogram/dev/framework/ + - API reference : https://developers.weixin.qq.com/miniprogram/dev/api/ +- [ ] Setup backend : + - VPS (Hetzner $5/mois ou Aliyun) + - Install Node.js 18+, PostgreSQL, Redis, Nginx + - SSL certificate (Let's Encrypt) +- [ ] Créer comptes API : + - OpenAI account + $10 credits + - WeChat Official Account (pour Template Messages) + +**Critère succès** : +- Compte WeChat Developer vérifié +- DevTools installé + Hello World compilé +- Backend VPS accessible HTTPS + +--- + +### Phase 1 : POC Frontend (Jour 3-4) + +**Objectif** : Mini Program basique qui upload fichier + +**Tasks** : +- [ ] Créer projet Mini Program (DevTools) +- [ ] Implémenter pages : + - `index` : Home avec bouton upload + - `upload` : Sélection fichier + upload +- [ ] Implémenter `wx.chooseMedia()` + `wx.uploadFile()` +- [ ] Mock backend (retourne success) +- [ ] Test sur simulateur + vrai device (scan QR code) + +**Code minimal** : +```javascript +// pages/upload/upload.js +Page({ + uploadFile() { + wx.chooseMedia({ + count: 1, + mediaType: ['audio', 'video'], + success: (res) => { + wx.uploadFile({ + url: 'https://yourserver.com/api/homework', + filePath: res.tempFiles[0].tempFilePath, + name: 'file', + success: () => { + wx.showToast({ title: 'Envoyé !' }) + } + }) + } + }) + } +}) +``` + +**Critère succès** : Upload fichier fonctionne sur vrai device + +--- + +### Phase 2 : POC Backend (Jour 5-6) + +**Objectif** : API qui reçoit fichier + transcription Whisper + +**Tasks** : +- [ ] Setup Express.js + Multer (file upload) +- [ ] Endpoint `POST /api/homework` +- [ ] Intégrer Whisper API +- [ ] Return transcription au frontend +- [ ] Test end-to-end (Mini Program → Backend → Whisper) + +**Code minimal** : +```javascript +// server.js +const express = require('express'); +const multer = require('multer'); +const whisperService = require('./services/whisper'); + +const app = express(); +const upload = multer({ dest: 'uploads/' }); + +app.post('/api/homework', upload.single('file'), async (req, res) => { + const transcription = await whisperService.transcribe(req.file.path); + res.json({ transcription: transcription.text }); +}); + +app.listen(3000); +``` + +**Critère succès** : +- Upload audio → Backend → Whisper → Return transcription +- Latence <60s + +--- + +### Phase 3 : MVP Complet (Jour 7-10) + +**Objectif** : App fonctionnelle avec correction complète + +**Tasks Backend** : +- [ ] Database PostgreSQL setup (schema complet) +- [ ] JWT authentication (WeChat login) +- [ ] Job queue (Bull + Redis) +- [ ] GPT-4 correction service +- [ ] Endpoints complets (homework, stats, history) +- [ ] Template Messages WeChat (notifications) + +**Tasks Frontend** : +- [ ] Page login (wx.login) +- [ ] Page upload améliorée (enregistrement natif) +- [ ] Page status (polling temps réel) +- [ ] Page détail correction (score, feedback) +- [ ] Page historique (liste devoirs) +- [ ] Page stats (graphiques basiques) + +**Critère succès** : +- 1 cycle complet : Upload → Transcription → Correction → Feedback +- 5 étudiants tests utilisent pendant 3 jours +- 0 crash critique + +--- + +### Phase 4 : Testing & Review (Jour 11-13) + +**Objectif** : Tests exhaustifs + soumission WeChat review + +**Tasks** : +- [ ] Tests fonctionnels : + - Upload audio mp3 ✅ + - Upload vidéo mp4 ✅ + - Enregistrement natif ✅ + - Correction précision >80% ✅ + - Notifications push ✅ +- [ ] Tests edge cases : + - Fichier 100MB (limite) + - Audio bruyant + - Réseau lent/instable + - Backend offline (error handling) +- [ ] Tests devices : + - iPhone (iOS 14+) + - Android (version récente) + - WeChat versions (latest + N-1) +- [ ] Optimisations : + - Code minification + - Image compression + - Lazy loading +- [ ] Documentation : + - Privacy policy (page dédiée) + - User guide (FAQ) + - Screenshots app (pour review) +- [ ] Soumission WeChat review : + - Remplir formulaire + - Upload screenshots + - Description claire (chinois) + - Submit + +**Critère succès** : Review passée (ou feedback reçu si rejet) + +--- + +### Phase 5 : Production Deploy (Jour 14-15) + +**Objectif** : Déploiement production stable + +**Tasks** : +- [ ] Backend production : + - PM2 setup (auto-restart) + - Nginx reverse proxy + - SSL certificate + - Environment variables sécurisées + - Logging (Winston) + - Monitoring (Uptime Kuma) +- [ ] Database : + - Backups automatiques (daily, S3/OSS) + - Indexes optimisés +- [ ] Frontend : + - Version production uploadée WeChat + - QR code génération (pour partage étudiants) +- [ ] Documentation : + - README technique (pour maintenance) + - Runbook (procédures incidents) + +**Critère succès** : +- App publiée WeChat (accessible via QR code) +- 95% uptime sur 48h +- 10+ étudiants utilisent sans problème + +--- + +### Phase 6 : Onboarding Users (Jour 16+) + +**Objectif** : Adoption massive étudiants + +**Tasks** : +- [ ] Communication étudiants : + - Message WeChat avec QR code + - Video tutorial (1min) + - FAQ (questions communes) +- [ ] Monitoring adoption : + - Track inscriptions + - Support réactif (questions) +- [ ] Itérations : + - Collect feedback étudiants + - Fix bugs critiques + - Ajustements UX + +**Critère succès** : 80%+ étudiants utilisent dans 1 semaine + +--- + +### Timeline récapitulatif + +| Phase | Durée | Cumul | Livrables | +|-------|-------|-------|-----------| +| **Phase 0** | 2j | J2 | Compte dev vérifié, VPS setup | +| **Phase 1** | 2j | J4 | Mini Program upload fichier | +| **Phase 2** | 2j | J6 | Backend + Whisper | +| **Phase 3** | 4j | J10 | MVP complet fonctionnel | +| **Phase 4** | 3j | J13 | Tests + Review soumise | +| **Phase 5** | 2j | J15 | Production déployée | +| **Phase 6** | Ongoing | J16+ | Adoption users | + +**TOTAL** : **15 jours** (temps plein) ou **3-4 semaines** (part-time) + +--- + +## 💰 Coûts + +### Setup initial (one-time) + +| Poste | Coût | Note | +|-------|------|------| +| **Compte WeChat Developer** | 0€ | Gratuit (type Personnel) | +| **Développement** | 0€ | DIY | +| **VPS setup** | 0€ | DIY | +| **Domaine** | 10€/an | Optionnel (peut utiliser IP) | +| **TOTAL** | **0-10€** | | + +### Récurrent mensuel + +| Poste | Coût mensuel | Note | +|-------|--------------|------| +| **VPS** | $5-15 | Hetzner/DigitalOcean/Aliyun | +| **Whisper API** | $3-10 | 20-50 étudiants, 2min audio moy | +| **GPT-4 API** | $5-15 | Dépend longueur feedbacks | +| **Redis Cloud** | $0-5 | Free tier OK pour <100 users | +| **Backup storage** | $1-2 | S3/R2 pour DB backups | +| **SSL certificate** | $0 | Let's Encrypt gratuit | +| **TOTAL** | **$14-47/mois** | **~12-40€/mois** | + +### Scaling costs + +**50 étudiants** (3 devoirs/semaine) : +- Whisper : ~$10/mois +- GPT-4 : ~$20/mois +- VPS : $15/mois (upgrade 4GB RAM) +- **Total** : ~$50/mois + +**100 étudiants** : +- Whisper : ~$20/mois +- GPT-4 : ~$40/mois +- VPS : $20/mois (8GB RAM) +- **Total** : ~$85/mois + +### Comparaison Bot vs Mini Program + +| Coût | Bot Wechaty | Mini Program | +|------|-------------|--------------| +| **Setup** | $0 | $0 | +| **Mensuel** | $23-51 | $14-47 ✅ | +| **Puppet** | $8/mois | N/A ✅ | +| **VPS** | $5-15 | $5-15 | +| **APIs** | $10-25 | $10-25 | + +→ **Mini Program ~$10/mois moins cher** (pas de Padlocal puppet) + +### ROI (Return on Investment) + +**Temps gagné** (20 étudiants, 3 devoirs/semaine) : +- Correction manuelle : 5min/devoir +- Correction auto : 30s/devoir +- **Gain** : 4.5min × 60 devoirs = **18h/mois** + +**Coût horaire** : $30/mois ÷ 18h = **$1.67/h** + +→ Rentable si ton temps vaut >$2/h (spoiler : largement) + +--- + +## 📋 Requirements WeChat + +### 1. Compte développeur + +**Type recommandé** : 个人 (Personnel) + +**Avantages** : +- ✅ Gratuit +- ✅ Review rapide (1-7 jours) +- ✅ Suffisant pour usage éducatif privé + +**Limitations** : +- ⚠️ Max 10 Template Messages/jour (suffisant pour <100 users) +- ⚠️ Pas de paiement WeChat Pay +- ⚠️ Pas de géolocalisation avancée + +**Alternative** : 企业 (Entreprise) +- Nécessite business license chinoise +- Coût : 300 RMB/an (~40€) +- Features illimitées +→ Overkill pour ton use case + +### 2. Vérification identité + +**Documents requis** : +- Carte d'identité (scan recto/verso) +- Photo selfie avec ID card +- Numéro téléphone chinois (SMS verification) + +**Process** : +1. Upload documents +2. Reconnaissance faciale (via WeChat app) +3. Review WeChat (1-3 jours ouvrés) +4. Notification approval + +### 3. Domaine & SSL + +**Requirement** : Mini Program nécessite HTTPS pour API calls + +**Options** : +- **Domaine propre** : exemple.com + Let's Encrypt SSL (gratuit) +- **Cloudflare Tunnel** : Expose localhost sans domaine (gratuit) +- **Ngrok** : Dev only, pas pour production + +**Whitelist** : Ajouter domaine dans settings Mini Program + +### 4. ICP License (备案) + +**C'est quoi** : License gouvernementale chinoise pour héberger en Chine + +**Obligatoire si** : +- Serveur en Chine (Aliyun, Tencent Cloud) +- Mini Program publique (non-privée) + +**Pas obligatoire si** : +- Serveur hors Chine (Hetzner, DigitalOcean) +- Mini Program privée (usage interne) + +**Process** : 2-4 semaines, bureaucratique + +**Recommandation** : +- Pour ton cas (usage privé) → **Pas besoin ICP** +- Héberger hors Chine (Hetzner Europe) + Cloudflare CDN + +### 5. Review checklist officielle + +**Avant submit, vérifier** : +- [ ] Zero crash (tests exhaustifs) +- [ ] Toutes pages fonctionnelles +- [ ] Images <500KB chacune +- [ ] No placeholder content ("Lorem ipsum") +- [ ] Privacy policy (si collect données) +- [ ] Description claire use case (chinois) +- [ ] Screenshots représentatifs (4-5 images) +- [ ] Catégorie correcte : "教育" (Education) +- [ ] No contenu illégal (politique, porno, gambling) +- [ ] Compliance : Pas de features non-déclarées + +**Délai review** : 1-7 jours (généralement 2-3 jours) + +**Taux acceptation** : ~75% première soumission, ~95% après corrections + +--- + +## 🔧 Process Setup Compte WeChat Developer + +### Vue d'ensemble + +**Objectif** : Créer et vérifier compte WeChat Developer pour développer Mini Programs + +**Durée totale** : 1-3 jours (délai approval WeChat) + +**Prérequis** : +- Compte WeChat personnel actif +- Carte d'identité valide (passeport acceptable) +- Numéro téléphone chinois (ou international, selon région) +- Email valide + +--- + +### Étape 1 : Création du compte (15 minutes) + +#### 1.1 Accéder au portail développeur + +**URL** : https://mp.weixin.qq.com/ + +**Process** : +1. Ouvre le site dans ton navigateur +2. Clique sur **"立即注册"** (S'inscrire maintenant) en haut à droite +3. Sélectionne type de compte : **"小程序"** (Mini Program) + +#### 1.2 Choix du type de compte + +**3 options disponibles** : + +| Type | Chinois | Coût | Use Case | +|------|---------|------|----------| +| **Personnel** | 个人 | Gratuit ✅ | Usage privé/éducatif | +| **Entreprise** | 企业 | 300 RMB/an | Usage commercial | +| **Organisation** | 组织 | Gratuit | ONG, écoles | + +**Pour ton projet** : Choisis **"个人" (Personnel)** + +**Pourquoi Personnel est suffisant** : +- ✅ Gratuit (0€) +- ✅ Peut publier Mini Programs +- ✅ Peut utiliser API essentielles (upload, storage, notifications limitées) +- ✅ Suffisant pour <100 utilisateurs +- ⚠️ Limitations : 10 Template Messages/jour (OK pour ton usage) + +#### 1.3 Remplir informations de base + +**Formulaire à compléter** : + +``` +Email : [ton email] +→ Utilisé pour récupération compte uniquement +→ Reçois code verification email + +Mot de passe : [8-20 caractères] +→ Doit contenir lettres + chiffres + +Code verification : [reçu par email] +→ Valide pendant 10 minutes + +☑️ J'accepte les termes et conditions +``` + +**Cliquer** : **"注册"** (S'inscrire) + +--- + +### Étape 2 : Sélection sujet principal (5 minutes) + +#### 2.1 Type d'entité + +**Question** : 主体类型 (Type de sujet principal) + +**Sélectionne** : **"个人"** (Individuel) + +#### 2.2 Informations personnelles + +**Formulaire** : + +``` +Nom complet : [Ton nom sur ID] +→ Doit correspondre EXACTEMENT à ta pièce d'identité + +Type de document : +→ Sélectionne : "Passport" (si pas ID chinoise) +→ Ou : "身份证" (ID chinoise) + +Numéro document : [Numéro passeport/ID] + +Nationalité : [Sélectionne pays] + +Téléphone : [Numéro avec code pays] +→ Format : +33 6 12 34 56 78 (France) +→ Ou : +86 138 1234 5678 (Chine) +→ Reçois SMS verification +``` + +**Cliquer** : **"继续"** (Continuer) + +--- + +### Étape 3 : Vérification identité (10 minutes) + +#### 3.1 Upload documents + +**Documents requis** : + +**Option A : Carte d'identité chinoise** (身份证) +- Photo recto (face avant) +- Photo verso (face arrière) +- Format : JPG/PNG, <2MB chacune +- Qualité : Tous les textes lisibles + +**Option B : Passeport** (Recommandé si étranger) +- Photo page identité (avec photo + infos) +- Format : JPG/PNG, <2MB +- Qualité : MRZ (ligne codes en bas) lisible + +**Process upload** : +1. Clique **"上传身份证正面"** (Upload recto) +2. Sélectionne fichier depuis ordinateur +3. Vérifie preview (tous textes nets ?) +4. Répète pour verso (si ID chinoise) + +#### 3.2 Vérification faciale (obligatoire) + +**Méthode** : Scan QR code avec WeChat app mobile + +**Process** : +1. Page web affiche QR code +2. **Ouvre WeChat app** sur smartphone +3. **Scan QR code** (bouton "扫一扫" en haut droite) +4. WeChat ouvre interface vérification faciale +5. **Instructions à l'écran** : + - Positionne visage dans cadre + - Cligne des yeux quand demandé + - Tourne tête gauche/droite + - Souris (parfois demandé) +6. Vérification automatique (5-10 secondes) +7. **Message confirmation** : "验证成功" (Vérification réussie) + +**Retourne à ordinateur** → Page auto-refresh + +**Si échec vérification faciale** : +- Assure éclairage suffisant +- Retire lunettes/masque +- Positionne caméra à hauteur visage +- Réessaye (3 tentatives possibles) + +#### 3.3 Vérification téléphone + +**Process** : +1. Entre numéro téléphone (avec code pays) +2. Clique **"获取验证码"** (Obtenir code) +3. Reçois SMS avec code 6 chiffres (1-2 minutes) +4. Entre code dans champ +5. Clique **"验证"** (Vérifier) + +**Code expire après 10 minutes** → Redemander si expiré + +--- + +### Étape 4 : Informations Mini Program (5 minutes) + +#### 4.1 Nom du Mini Program + +**Champ** : 小程序名称 (Nom Mini Program) + +**Règles** : +- 4-30 caractères +- Chinois, anglais, chiffres acceptés +- Doit être unique (pas déjà pris) +- **Peut changer 2 fois/an** (réfléchis bien) + +**Suggestions pour ton projet** : +- **英语作业助手** (English Homework Assistant) +- **法语练习小程序** (French Practice Mini Program) +- **语言学习打卡** (Language Learning Check-in) + +**Exemple** : Entre `语言作业助手` (Language Homework Assistant) + +#### 4.2 Catégorie + +**Champ** : 服务类目 (Catégorie de service) + +**Sélectionne** : **"教育 > 在线教育"** (Education > Online Education) + +**Autres sous-catégories possibles** : +- 教育 > 教育信息服务 (Services info éducation) +- 教育 > 培训 (Formation) + +#### 4.3 Description + +**Champ** : 小程序介绍 (Introduction) + +**Règles** : +- 10-120 caractères +- Décrit clairement la fonction +- Pas de contenu promotionnel excessif + +**Exemple** : +``` +一个帮助学生提交语音/视频作业并获得AI自动批改反馈的教育工具。 +适用于语言学习课程的在线作业管理。 + +(Un outil éducatif pour soumettre devoirs audio/vidéo et recevoir +feedback auto-corrigé par AI. Pour gestion devoirs cours de langues.) +``` + +#### 4.4 Logo/Icon + +**Upload icon Mini Program** : + +**Spécifications** : +- Format : JPG/PNG +- Taille : 1024×1024 pixels (exactement) +- Poids : <2MB +- Design : Simple, reconnaissable, pas de texte + +**Recommandations** : +- Icône représentative (📚 livre, 🎓 graduation, 🎙️ micro) +- Couleurs : 2-3 couleurs max +- Éviter : Logo complexe, trop de détails + +**Si pas de logo** : +- Utilise Canva (gratuit) : Template "App Icon" +- Ou générateur AI : DALL-E, Midjourney +- Ou placeholder temporaire (changeable plus tard) + +--- + +### Étape 5 : Admin/Contact (3 minutes) + +#### 5.1 Administrateur + +**Champ** : 管理员信息 (Info administrateur) + +**Par défaut** : Toi (créateur compte) + +**Infos requises** : +- Nom complet +- WeChat ID (scan QR code pour lier) +- Email +- Téléphone + +**Lier WeChat admin** : +1. Page affiche QR code +2. Scan avec WeChat app +3. Confirme "绑定" (Lier) +4. Page web auto-refresh + +#### 5.2 Contact principal + +**Optionnel** : Email/téléphone pour support + +**Recommandation** : Utilise même email que admin + +--- + +### Étape 6 : Submit & Review (1-3 jours) + +#### 6.1 Vérification finale + +**Checklist avant submit** : +- [ ] Tous champs remplis +- [ ] Documents uploaded (nets, lisibles) +- [ ] Vérification faciale passée ✅ +- [ ] Téléphone vérifié ✅ +- [ ] WeChat admin lié ✅ +- [ ] Nom/description en chinois (recommandé) + +#### 6.2 Submit application + +**Cliquer** : **"提交审核"** (Soumettre pour review) + +**Message confirmation** : "提交成功,请等待审核" (Soumis avec succès, attendre review) + +#### 6.3 Période d'attente + +**Durée** : 1-3 jours ouvrés (généralement 1-2 jours) + +**Pendant ce temps** : +- Rien à faire côté utilisateur +- WeChat review automatique + manuelle +- Peut vérifier status : https://mp.weixin.qq.com/ (login) + +**Notification approval** : +- **Email** : "小程序注册成功" (Mini Program enregistré avec succès) +- **WeChat message** : Notification service account officiel +- **SMS** : Sur numéro enregistré + +#### 6.4 Si rejet (15-25% cas) + +**Raisons communes** : +- Documents illisibles +- Nom déjà pris +- Catégorie inadaptée +- Vérification faciale échouée +- Informations incohérentes + +**Process re-soumission** : +1. Login https://mp.weixin.qq.com/ +2. Lire message rejet (raison indiquée) +3. Corriger éléments signalés +4. Re-soumettre (bouton "重新提交") +5. Nouveau review (1-2 jours) + +**Taux acceptation round 2** : ~95% + +--- + +### Étape 7 : Post-Approval Setup (30 minutes) + +#### 7.1 First login backend + +**Une fois approuvé** : + +1. **Login** : https://mp.weixin.qq.com/ +2. **Entre** : Email + mot de passe +3. **Scan QR** : Confirmation WeChat app +4. **Dashboard** : Page admin Mini Program + +#### 7.2 Récupérer credentials + +**AppID** (obligatoire pour dev) : + +1. Dans dashboard, clique **"开发" > "开发管理"** (Dev > Dev Management) +2. Section **"开发设置"** (Dev Settings) +3. **AppID** : Chaîne format `wx1234567890abcdef` +4. **Copier** et sauvegarder (besoin dans WeChat DevTools) + +**AppSecret** (pour backend API) : + +1. Même page "开发设置" +2. Clique **"生成"** (Générer) à côté de AppSecret +3. **Scan QR** WeChat pour confirmer (sécurité) +4. **AppSecret** : Chaîne 32 caractères +5. **IMPORTANT** : Affiché une seule fois ! Copier immédiatement +6. Sauvegarder dans `.env` (ne JAMAIS commit Git) + +#### 7.3 Configurer domaine serveur + +**Whitelist ton backend** : + +1. Clique **"开发" > "开发管理" > "服务器域名"** (Server Domain) +2. **request合法域名** : Entre `https://api.tondomaine.com` +3. **uploadFile合法域名** : Même domaine +4. **downloadFile合法域名** : Même domaine (si besoin) +5. **Cliquer** : **"保存并提交"** (Save and submit) + +**Requirements domaine** : +- ✅ HTTPS obligatoire (pas HTTP) +- ✅ Certificat SSL valide +- ✅ Port 443 (HTTPS standard) +- ⚠️ IP brute pas acceptée (besoin domaine) + +**Si pas de domaine** : +- **Option temporaire** : Cloudflare Tunnel (gratuit, génère domaine HTTPS) +- **Option long terme** : Acheter domaine ($10/an) + Let's Encrypt SSL (gratuit) + +#### 7.4 Download WeChat DevTools + +**Lien** : https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html + +**Versions disponibles** : +- Windows 64-bit +- macOS +- Linux + +**Installation** : +1. Download installer (~200MB) +2. Exécuter installer +3. First launch : Login avec WeChat (scan QR) +4. **Enter AppID** (récupéré step 7.2) + +**First project** : +1. Clique **"创建项目"** (Create project) +2. Enter **AppID** +3. Enter project name +4. Choose directory +5. Template : **"不使用云服务"** (No cloud services) +6. Clique **"确定"** (OK) + +**Simulator lancé** : Mini Program Hello World visible ! + +--- + +### Étape 8 : Verify Setup Complete (10 minutes) + +#### 8.1 Checklist finale + +**Vérifie que tu as** : +- [ ] Compte WeChat Developer approuvé ✅ +- [ ] AppID copié et sauvegardé +- [ ] AppSecret copié et sauvegardé (.env) +- [ ] WeChat DevTools installé +- [ ] First project créé (Hello World fonctionne) +- [ ] Domaine backend configuré (ou plan pour le faire) + +#### 8.2 Test basique + +**Dans WeChat DevTools** : + +1. Ouvre `pages/index/index.wxml` +2. Modifie texte : `Hello WeChat!` +3. Sauvegarde (Ctrl+S / Cmd+S) +4. **Simulator auto-refresh** → Nouveau texte visible +5. ✅ Setup fonctionnel ! + +#### 8.3 Next steps + +**Maintenant tu peux** : +- Commencer dev Mini Program (Phase 1 du plan) +- Tester APIs WeChat (`wx.chooseMedia()`, etc.) +- Upload code vers WeChat pour tests device réel + +--- + +### Troubleshooting + +#### Problème 1 : Vérification faciale échoue + +**Solutions** : +- Utilise smartphone avec bonne caméra +- Éclairage naturel (face à fenêtre) +- Retire lunettes, chapeau, masque +- Essaye autre smartphone (si caméra ancienne) +- Réessaye heures différentes (serveurs WeChat surchargés certains moments) + +#### Problème 2 : Documents rejetés + +**Raisons communes** : +- Photo floue → Re-scan avec meilleure résolution +- Reflets sur plastique ID → Photo en lumière diffuse +- Coins coupés → Inclure tout le document dans cadre +- Mauvais format → Convertir en JPG + +#### Problème 3 : Nom Mini Program déjà pris + +**Solutions** : +- Ajoute préfixe/suffixe : "小" (Xiao), "助手" (Assistant) +- Utilise combinaison unique : "Alexis语言学习" +- Check disponibilité : Search dans WeChat app avant + +#### Problème 4 : Pas de numéro chinois + +**Solutions** : +- Numéros internationaux acceptés (France, US, etc.) +- Format : +33 6 12 34 56 78 +- Si bloqué : Demander ami chinois prêter numéro (juste pour SMS) + +#### Problème 5 : Review prend >3 jours + +**Actions** : +- Check spam email (notification approval parfois là) +- Login dashboard : Status visible même sans email +- Patience : Weekends/holidays rallongent délai +- Si >7 jours : Contact support WeChat (bouton dans dashboard) + +--- + +### Support WeChat Developer + +**Si problème bloquant** : + +**Forum officiel** : https://developers.weixin.qq.com/community/ +- Pose question en chinois (utilise DeepL) +- Community réactive (~2h response) + +**Support ticket** : +1. Login dashboard +2. Clique **"客服"** (Support) en bas droite +3. Décris problème (chinois recommandé) +4. Attach screenshots +5. Response : 1-2 jours ouvrés + +**WeChat officiel account support** : +- Dans WeChat app, search "微信公众平台" +- Follow account +- Send message problème +- Auto-response + escalade si besoin + +--- + +### Timeline récapitulatif + +| Étape | Durée | Cumul | Blocage ? | +|-------|-------|-------|-----------| +| Création compte | 15min | 15min | Non | +| Sélection type | 5min | 20min | Non | +| Vérification ID | 10min | 30min | Non | +| Infos Mini Program | 5min | 35min | Non | +| Admin setup | 3min | 38min | Non | +| **Submit review** | **1-3j** | **~2j** | **Oui** ⏸️ | +| Post-approval | 30min | 2j+30min | Non | +| **TOTAL** | **~2 jours** | | | + +**Note** : 90% du temps = attente review (passif) + +--- + +### Ressources utiles + +**Docs officielles** : +- Guide inscription : https://developers.weixin.qq.com/miniprogram/introduction/ +- FAQ : https://developers.weixin.qq.com/community/develop/question + +**Vidéos tutoriels** (chinois) : +- Création compte : https://www.bilibili.com/video/BV1uh411r7zV +- Setup complet : https://www.youtube.com/watch?v=TZN0YJJx5kI + +**Tools** : +- Check nom disponible : Search WeChat app +- Générateur icon : Canva, Figma +- Traduction : DeepL (meilleur que Google pour chinois) + +--- + +## 📚 Ressources + +### Documentation officielle + +**WeChat Mini Program** : +- Guide officiel : https://developers.weixin.qq.com/miniprogram/dev/framework/ +- API Reference : https://developers.weixin.qq.com/miniprogram/dev/api/ +- Component Library : https://developers.weixin.qq.com/miniprogram/dev/component/ +- DevTools : https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html + +**WeChat Login & Auth** : +- wx.login() : https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html +- Backend auth : https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html + +**File Upload** : +- wx.chooseMedia() : https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.chooseMedia.html +- wx.uploadFile() : https://developers.weixin.qq.com/miniprogram/dev/api/network/upload/wx.uploadFile.html + +**Template Messages** : +- Guide : https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-message-management/subscribe-message/sendMessage.html + +### UI Frameworks + +**WeUI** (officiel WeChat) : +- GitHub : https://github.com/Tencent/weui-wxss +- Demo : https://weui.io/ + +**Vant Weapp** (recommandé) : +- Docs : https://vant-contrib.gitee.io/vant-weapp/ +- GitHub : https://github.com/youzan/vant-weapp +- Components : Button, Cell, Form, Upload, Chart, etc. + +### Backend + +**OpenAI API** : +- Whisper : https://platform.openai.com/docs/guides/speech-to-text +- GPT-4 : https://platform.openai.com/docs/guides/chat + +**Bull (Job Queue)** : +- Docs : https://github.com/OptimalBits/bull +- Guide : https://optimalbits.github.io/bull/ + +**Express + Multer** : +- Express : https://expressjs.com/ +- Multer : https://github.com/expressjs/multer + +### Tutoriels + +**Mini Program (English)** : +- Getting Started : https://dev.to/vickywane/getting-started-with-wechat-mini-programs-5b8l +- Full Course : https://www.youtube.com/watch?v=5oTjiD0gKb0 + +**Mini Program (Chinese)** : +- 微信小程序开发教程 : https://www.bilibili.com/video/BV1834y1676P + +### Tools + +**WeChat DevTools** : +- Download : https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html +- MacOS, Windows, Linux supported + +**Monitoring** : +- Uptime Kuma : https://github.com/louislam/uptime-kuma +- PM2 : https://pm2.keymetrics.io/ + +**VPS** : +- Hetzner : https://www.hetzner.com/cloud (Europe, $3.79/mois) +- DigitalOcean : https://www.digitalocean.com/ ($6/mois) +- Aliyun : https://www.alibabacloud.com/ (Chine) + +### Community + +**Forums** : +- WeChat Dev Community : https://developers.weixin.qq.com/community/ +- Stack Overflow : Tag `wechat-miniprogram` + +**GitHub Examples** : +- Awesome Mini Programs : https://github.com/justjavac/awesome-wechat-weapp +- Templates : https://github.com/wechat-miniprogram + +--- + +## 🎯 Next Steps + +### Actions immédiates (Jour 1) + +1. **Validation projet** : + - [ ] Confirmer go/no-go pour Mini Program + - [ ] Valider budget (~$30/mois acceptable ?) + - [ ] Timeline réaliste (15 jours full-time ou 4 semaines part-time) + +2. **Setup compte** : + - [ ] Créer compte WeChat Developer : mp.weixin.qq.com + - [ ] Upload ID verification + - [ ] Download WeChat DevTools + +3. **Setup backend** : + - [ ] Choisir VPS (recommandation : Hetzner $5/mois) + - [ ] Acheter domaine (optionnel) + - [ ] Créer compte OpenAI + ajouter $10 credits + +### Questions ouvertes + +**Pédagogie** : +- Quels critères correction prioritaires ? (grammaire > prononciation ?) +- Format feedback idéal ? (détaillé vs concis ?) +- Score /10, /20, ou /100 ? + +**Technique** : +- Langue principale app ? (Français, Chinois, ou Bilingue ?) +- Besoin features avancées Phase 1 ? (ou juste MVP ?) +- Préférence VPS Chine vs Europe ? + +**Organisation** : +- Combien de classes ? (2 pour l'instant, peut scale ?) +- Nombre étudiants total ? (pour dimensionnement VPS) +- Fréquence devoirs ? (quotidien, hebdo, mensuel ?) + +### Mesures de succès + +**POC (Jour 6)** : +- ✅ 1 upload → transcription fonctionne +- ✅ Latence <60s +- ✅ Précision transcription >85% + +**MVP (Jour 10)** : +- ✅ Cycle complet fonctionnel +- ✅ 5 étudiants tests utilisent 3 jours +- ✅ 0 crash critique +- ✅ Feedback étudiants positif (>7/10) + +**Production (Jour 15)** : +- ✅ Review WeChat passée +- ✅ App publiée (QR code accessible) +- ✅ 95% uptime +- ✅ 80%+ étudiants adoptent dans 1 semaine + +**Long terme (3 mois)** : +- ✅ Temps gagné >15h/mois +- ✅ Satisfaction étudiants >8/10 +- ✅ ROI <3 mois +- ✅ 0 incident critique + +--- + +## 📝 Notes + +**Créé** : 2025-11-30 +**Auteur** : Alexis Trouvé +**Status** : CONCEPT → À valider avant passage WIP +**Prochaine review** : TBD après validation initiale + +**Décision vs Bot Wechaty** : +- Mini Program recommandé si usage >3 mois +- Investissement initial +5 jours mais ROI long terme meilleur +- Zéro risque technique vs 5-15% risque ban bot + +**Changements majeurs** : +- 2025-11-30 : Création document initial + +--- + +**Tags** : `#wechat` `#miniprogram` `#automation` `#education` `#ai` `#stt` `#gpt4` `#openai` `#homework` diff --git a/couple_backlog/29_novembre_2025_hopital.md b/couple_backlog/29_novembre_2025_hopital.md new file mode 100644 index 0000000..05c531a --- /dev/null +++ b/couple_backlog/29_novembre_2025_hopital.md @@ -0,0 +1,147 @@ +# 29 Novembre 2025 - Incident Hôpital + +**Date** : 29 novembre 2025 +**Type** : Quasi-conflit désamorcé +**Contexte** : Hôpital + Faim + Date restaurant italien +**Outcome** : Positif (désamorçage réussi + belle soirée) + +--- + +## Contexte + +### Situation +- Tingting à l'hôpital pour examen médical +- Examen requiert jeûne (pas de nourriture depuis longtemps) +- Alexis l'accompagne + +--- + +## Incident + +### Déclenchement +- Tingting pas mangé → Irritabilité +- Début d'échange tendu entre Alexis et Tingting +- Failli se disputer + +### Pattern observé d'Alexis +- **Incapable de la calmer** quand elle énervée +- **Focus 100% sur ses émotions** (pas sur résolution problème) +- **Besoin qu'elle soit calme** pour pouvoir être rationnel + +### Désamorçage (SUCCESS) +- **Alexis arrête l'échange** +- Ne cherche pas à "résoudre" ou "calmer" +- Se retire de la situation +→ **Situation s'arrange d'elle-même** + +--- + +## Révélation Clé + +### Une fois Tingting mangé +- **Humeur s'améliore drastiquement** +- Retour à un état émotionnel normal +- Pas de conflit résiduel + +**Leçon** : **Besoins physiques (faim) > Gestion émotionnelle** + +Quand quelqu'un a faim/sommeil/douleur physique : +- ✅ Adresser le besoin physique FIRST +- ❌ Essayer de "gérer émotionnellement" avant + +--- + +## Date Restaurant Italien (Même Soir) + +### Setup +- Alexis avait prévu date restaurant italien +- Alexis personnellement **très happy** d'y aller + +### Contagion Émotionnelle Positive +- **Happiness d'Alexis "contamine" Tingting** +- Elle beaucoup mieux pendant le repas +- Belle soirée malgré incident hôpital + +**Leçon** : **L'énergie positive d'Alexis peut influencer l'humeur de Tingting** + +Quand Alexis est genuinely happy/excité : +- Son énergie est contagieuse +- Tingting y répond positivement +- Meilleur résultat que "essayer de la rendre heureuse" activement + +--- + +## Patterns Confirmés + +### 1. Se Retirer > Insister +**Quand elle énervée** : +- ✅ Arrêter l'échange +- ✅ Laisser espace +- ✅ Attendre qu'elle se calme +- ❌ Essayer de "résoudre" immédiatement +- ❌ Chercher à "la calmer" + +**Déjà identifié** : Process de résolution de conflit (22 oct 2025) +- Alexis besoin qu'elle soit calme pour être rationnel +- Focus sur ses émotions quand elle en colère → Bloque résolution + +**Aujourd'hui prouvé** : Se retirer fonctionne mieux qu'insister + +### 2. Besoins Physiques First +- Faim, sommeil, douleur physique > Gestion émotionnelle +- Adresser le besoin concret avant de "parler" +- Pattern vu aussi : Mode "larve" d'Alexis quand sommeil raté + +### 3. Contagion Émotionnelle +- Happiness genuine d'Alexis → Tingting y répond +- Pas besoin de "faire des efforts pour elle" +- Juste être authentiquement content/excité suffit + +--- + +## Actions / Leçons + +### ✅ Ce qui a marché +1. **Arrêter l'échange** quand tension monte +2. **Laisser manger** avant de gérer quoi que ce soit +3. **Être genuinely happy** pour la date → Contagion positive + +### ❌ Ce qui ne marche pas +1. Essayer de "la calmer" quand énervée (Alexis incapable) +2. Tenter de résoudre émotionnellement avant besoin physique +3. Forcer une interaction quand elle pas dans bon état + +### 📝 Pour l'avenir +- **Checklist pré-interaction** : Elle a mangé ? Dormé ? Besoin physique OK ? +- **Si tension monte** : Se retirer, pas insister +- **Pour dates** : Alexis focus sur sa propre happiness → Effet positif sur Tingting + +--- + +## Comparaison avec Octobre 2025 + +### Similitudes +- Pattern "incapable de calmer" confirmé +- Besoin qu'elle soit dans bon état pour résoudre +- Se retirer > Insister + +### Différences +- **Octobre** : Conflit majeur, crise, rupture quasi +- **Novembre** : Quasi-conflit désamorcé rapidement, belle soirée après + +**Évolution positive** : Alexis identifie pattern + applique stratégie de retrait AVANT escalade + +--- + +## Status Relation + +**Post-incident** : Aucune rancune, belle soirée + +**Pattern général** : +- Relation stabilisée depuis fin octobre +- Daily check system actif +- Incidents mineurs désamorcés efficacement (comme aujourd'hui) + +--- + +**Tags** : `#conflict-resolution` `#physical-needs` `#retreat-strategy` `#emotional-contagion` `#success` diff --git a/personnalités/Alexis.md b/personnalités/Alexis.md index 8505216..538f8af 100644 --- a/personnalités/Alexis.md +++ b/personnalités/Alexis.md @@ -26,6 +26,7 @@ - Conception rapide et qualitative - Difficulté à exécuter ce qui est "intellectuellement résolu" - Pas de dopamine dans l'exécution pure + - **MAIS** : Exec prouvée quand projet activé (102 commits/3 semaines nov 2025) ### Origine de l'identité et patterns psychologiques - **Construction identitaire** : "Quand j'étais enfant personne ne me félicitais. J'ai build mon identité sur l'intel" @@ -100,7 +101,7 @@ - **Capacité caring prouvée** : Golden Week octobre 2025 - a pris soin de Tingting malgré fatigue/maladie, beaux souvenirs créés - **Respect des boundaries** : Accepte la limite de Tingting sur le contact physique avec autres femmes (apprise pendant Golden Week) -#### Conflit 16-22 octobre 2025 +#### Conflit 16-22 octobre 2025 (Crise majeure) - **Sommeil fragile** : Problème physiologique réel (lumière/bruit = destruction totale), 6 mois pour s'habituer à dormir avec Tingting - **Mode "larve"** : État dysfonctionnel (cerveau à 0%) quand setup sommeil raté, incapable de communiquer clairement - **Erreur 18 oct** : Communication floue en mode larve, pas de réassurance émotionnelle → "Why are you so mean?" @@ -111,6 +112,16 @@ - **Erreur 21 oct** : Mauvais timing (elle fatiguée/stressée), cherche affection quand elle fermée, pointe contradictions en mode confrontation - **Pattern révélé** : Toujours lui qui initie conversations après conflits, épuisant - **Incompatibilité potentielle** : Lui calme/rationnel vs Elle besoin manifestations émotionnelles dramatiques +- **Outcome** : Stabilisation relation après 22 oct, daily check system mis en place + +#### Incident Hôpital 29 novembre 2025 +- **Contexte** : Tingting à l'hôpital (examen requis jeûne), pas mangé depuis longtemps +- **Quasi-conflit** : Failli se disputer, Alexis incapable de la calmer +- **Désamorçage** : Alexis arrête l'échange → Situation s'arrange +- **Révélation** : Une fois Tingting mangé → Humeur s'améliore drastiquement +- **Date restaurant italien** : Happiness d'Alexis "contamine" Tingting, elle beaucoup mieux pendant repas +- **Leçon** : Besoins physiques (faim) > Gestion émotionnelle. Se retirer > Insister quand elle énervée. +- **Pattern confirmé** : Alexis focus sur émotions de l'autre quand elle en colère, besoin qu'elle calme avant résoudre ### Famille et amis