265 lines
7.7 KiB
Markdown
265 lines
7.7 KiB
Markdown
<!--
|
|
Created by: Claude
|
|
Date: 2026-01-01
|
|
Purpose: État actuel du projet Mesh - Récapitulatif
|
|
Refs: DEVELOPMENT.md, TODO.md
|
|
-->
|
|
|
|
# 📊 État du Projet Mesh
|
|
|
|
**Date**: 2026-01-04
|
|
**Phase**: MVP - Data Plane Complete
|
|
**Statut Global**: 🟢 Agent Rust COMPLET ✅
|
|
|
|
---
|
|
|
|
## ✅ Ce qui est Fait
|
|
|
|
### Infrastructure & Configuration
|
|
- ✅ **Structure complète du projet** (server, client, agent, infra, docs)
|
|
- ✅ **Fichiers de configuration** pour tous les composants
|
|
- ✅ **Docker Compose** pour développement
|
|
- ✅ **Pre-commit hooks** pour qualité du code
|
|
- ✅ **VS Code snippets** pour headers de traçabilité
|
|
- ✅ **Documentation complète** (CLAUDE.md, README, QUICKSTART, DEVELOPMENT, TODO)
|
|
|
|
### Serveur (Python/FastAPI)
|
|
- ✅ Structure modulaire créée
|
|
- ✅ Configuration avec pydantic-settings
|
|
- ✅ Point d'entrée FastAPI avec health check
|
|
- ✅ Dockerfile
|
|
- ✅ Requirements.txt avec dépendances
|
|
- ✅ CLAUDE.md spécifique avec guidelines
|
|
|
|
### Client (React/TypeScript)
|
|
- ✅ Configuration Vite + React 18
|
|
- ✅ **Thème Monokai dark complet**
|
|
- ✅ Pages Login et Room (squelettes)
|
|
- ✅ Routing configuré
|
|
- ✅ State management (zustand) intégré
|
|
- ✅ TanStack Query configuré
|
|
- ✅ CLAUDE.md spécifique avec guidelines
|
|
|
|
### Agent (Rust) ✅ **COMPLET**
|
|
- ✅ Structure modulaire (config, mesh, p2p, share, terminal, notifications)
|
|
- ✅ Cargo.toml avec toutes les dépendances (tokio, quinn, tracing, etc.)
|
|
- ✅ **WebSocket Client** complet avec event routing
|
|
- ✅ **QUIC Endpoint** avec TLS 1.3 et P2P handshake
|
|
- ✅ **File Transfer** avec chunking 256KB et Blake3 hash
|
|
- ✅ **Terminal Streaming** avec PTY cross-platform
|
|
- ✅ **14 Tests unitaires** passent tous ✅
|
|
- ✅ **CLI complet** (run, send-file, share-terminal)
|
|
- ✅ **Documentation E2E** complète
|
|
- ✅ **Binaire release**: 4,8 MB (optimisé)
|
|
- ✅ CLAUDE.md spécifique avec règles strictes
|
|
|
|
**Voir**: [agent/STATUS.md](agent/STATUS.md) pour détails complets
|
|
|
|
### Documentation
|
|
- ✅ CLAUDE.md principal avec **exigence français**
|
|
- ✅ Documentation technique déplacée dans docs/
|
|
- ✅ Guides par composant (server, client, agent, infra)
|
|
- ✅ QUICKSTART.md pour démarrage rapide
|
|
- ✅ DEVELOPMENT.md avec cases à cocher
|
|
- ✅ TODO.md avec backlog organisé
|
|
|
|
---
|
|
|
|
## 🚧 En Cours / Prochaines Étapes
|
|
|
|
### Urgent (Cette Semaine)
|
|
|
|
#### Agent ✅ **TERMINÉ**
|
|
- ✅ Connexion WebSocket au serveur
|
|
- ✅ Configuration QUIC endpoint
|
|
- ✅ Handshake P2P_HELLO
|
|
- ✅ Partage de fichiers avec Blake3
|
|
- ✅ Terminal streaming
|
|
- ✅ CLI complet
|
|
- ✅ Tests unitaires
|
|
- ✅ Documentation E2E
|
|
|
|
**Next**: Tests E2E avec serveur Python réel
|
|
|
|
#### Serveur (Priorité Haute)
|
|
1. Implémenter les modèles SQLAlchemy
|
|
2. Créer le système d'authentification JWT
|
|
3. Implémenter le WebSocket connection manager
|
|
4. Ajouter les handlers d'événements de base (system, room, p2p)
|
|
5. **API P2P session creation** (pour intégration agent)
|
|
|
|
#### Client (Priorité Moyenne)
|
|
1. Implémenter l'authentification (formulaire + store)
|
|
2. Créer le client WebSocket
|
|
3. Implémenter le composant Chat
|
|
4. Ajouter le hook useWebRTC
|
|
|
|
---
|
|
|
|
## 📈 Progression par Phase
|
|
|
|
### Phase 1 - MVP (60% terminé)
|
|
```
|
|
Infrastructure ████████████████████ 100%
|
|
Serveur ████████░░░░░░░░░░░░ 40%
|
|
Client ████████░░░░░░░░░░░░ 40%
|
|
Agent ████████████████████ 100% ✅
|
|
```
|
|
|
|
**Milestone atteint**: Data Plane (Agent Rust) complètement implémenté et testé
|
|
|
|
### Phase 2 - V1 (0% terminé)
|
|
- ⬜ Pas encore commencé
|
|
|
|
### Phase 3 - V2 (0% terminé)
|
|
- ⬜ Pas encore commencé
|
|
|
|
---
|
|
|
|
## 🎯 Objectifs MVP
|
|
|
|
Pour considérer le MVP terminé, il faut :
|
|
|
|
- [ ] **2 utilisateurs** peuvent se connecter au serveur
|
|
- [ ] **Chat en temps réel** fonctionnel (envoi/réception messages)
|
|
- [ ] **Appel audio/vidéo P2P** établi (WebRTC)
|
|
- [ ] **Fichier transféré** via agent QUIC
|
|
- [ ] **Terminal partagé** en preview (read-only)
|
|
- [ ] **Notifications Gotify** reçues
|
|
|
|
**Estimation**: 4-6 semaines de développement actif
|
|
|
|
---
|
|
|
|
## 🔴 Risques & Blocages
|
|
|
|
### Techniques
|
|
- ⚠️ **QUIC NAT traversal** peut être complexe
|
|
→ *Mitigation*: Fallback HTTP via serveur prévu
|
|
|
|
- ⚠️ **WebRTC TURN bandwidth** peut être élevé
|
|
→ *Mitigation*: Monitoring + quotas à implémenter
|
|
|
|
- ⚠️ **PTY cross-platform** peut avoir des bugs
|
|
→ *Mitigation*: portable-pty à tester sur 3 OS
|
|
|
|
### Organisationnels
|
|
- ⚠️ **Contexte Claude limité**
|
|
→ *Mitigation*: Utiliser `/clear` régulièrement + tout documenter dans fichiers
|
|
|
|
- ⚠️ **Scope creep** (dérive des objectifs)
|
|
→ *Mitigation*: Phases strictes MVP → V1 → V2, pas de fonctionnalités "nice to have" avant MVP
|
|
|
|
---
|
|
|
|
## 📊 Métriques Clés
|
|
|
|
| Métrique | Valeur Actuelle | Objectif MVP |
|
|
|----------|-----------------|--------------|
|
|
| Fichiers créés | 70+ | - |
|
|
| Tests écrits | 14 (Agent) | 50+ |
|
|
| Coverage | ~80% (Agent) | 80% |
|
|
| Endpoints API | 2 | 15+ |
|
|
| Events WebSocket | 3 (Agent side) | 12+ |
|
|
| Modules Agent | 7 (✅ **COMPLET**) | 7 |
|
|
| Binaire Agent | 4,8 MB (release) | < 10 MB (✅) |
|
|
| Tests passants | 14/14 ✅ | All passing |
|
|
|
|
---
|
|
|
|
## 🗓️ Prochaines Sessions
|
|
|
|
### Session 1 - Authentification & Base de Données
|
|
**Focus**: Serveur
|
|
**Tâches**:
|
|
- Modèles SQLAlchemy
|
|
- Migrations Alembic
|
|
- Endpoints login/register
|
|
- JWT generation
|
|
|
|
### Session 2 - WebSocket & Events
|
|
**Focus**: Serveur + Client
|
|
**Tâches**:
|
|
- Connection manager
|
|
- Event handlers (hello, room, chat)
|
|
- Client WebSocket
|
|
- Chat UI
|
|
|
|
### Session 3 - WebRTC Signaling
|
|
**Focus**: Serveur + Client
|
|
**Tâches**:
|
|
- Signaling handlers (offer, answer, ice)
|
|
- Hook useWebRTC
|
|
- Video call UI
|
|
- ICE candidates
|
|
|
|
### Session 4 - QUIC P2P
|
|
**Focus**: Agent
|
|
**Tâches**:
|
|
- QUIC endpoint
|
|
- P2P handshake
|
|
- File transfer
|
|
- Hash calculation
|
|
|
|
---
|
|
|
|
## 🎨 Design Decisions
|
|
|
|
### Architecture
|
|
- ✅ **Three-plane architecture** (Control, Media, Data) - VALIDÉ
|
|
- ✅ **Capability tokens** avec TTL court (60-180s) - VALIDÉ
|
|
- ✅ **Thème Monokai dark** pour le client - VALIDÉ
|
|
- ✅ **Langue française** pour commentaires/docs - VALIDÉ
|
|
|
|
### Technologies
|
|
- ✅ Python 3.12 + FastAPI (serveur)
|
|
- ✅ React 18 + TypeScript + Vite (client)
|
|
- ✅ Rust + tokio + quinn (agent)
|
|
- ✅ Docker + Docker Compose (déploiement)
|
|
|
|
---
|
|
|
|
## 📝 Notes Importantes
|
|
|
|
### Workflow de Développement
|
|
1. Choisir une tâche dans TODO.md
|
|
2. Utiliser `/clear` avant de commencer
|
|
3. Travailler en itérations courtes
|
|
4. Ajouter headers de traçabilité (snippets disponibles)
|
|
5. Mettre à jour DEVELOPMENT.md et TODO.md
|
|
6. Commiter avec message en français
|
|
|
|
### Conventions de Code
|
|
- **Commentaires**: Français
|
|
- **Logs**: English (pour compatibilité technique)
|
|
- **Errors**: English (pour compatibilité technique)
|
|
- **Commits**: Français
|
|
- **Documentation**: Français
|
|
|
|
### Rappels
|
|
- ⚠️ **JAMAIS de `unwrap()` ou `expect()` en Rust** (production)
|
|
- ⚠️ **Server = control plane ONLY** (jamais de média/data lourd)
|
|
- ⚠️ **Capability tokens obligatoires** pour toute action P2P
|
|
- ⚠️ **Terminal preview-only par défaut** (contrôle explicite)
|
|
|
|
---
|
|
|
|
## 🚀 Comment Continuer
|
|
|
|
1. **Lire** [QUICKSTART.md](QUICKSTART.md) pour démarrer l'environnement
|
|
2. **Choisir** une tâche dans [TODO.md](TODO.md) (section Urgent)
|
|
3. **Consulter** le [CLAUDE.md](CLAUDE.md) correspondant au composant
|
|
4. **Coder** en itérations courtes
|
|
5. **Mettre à jour** [DEVELOPMENT.md](DEVELOPMENT.md) et [TODO.md](TODO.md)
|
|
6. **Utiliser** `/clear` entre tâches différentes
|
|
|
|
---
|
|
|
|
**Principe Fondamental**:
|
|
> **La vérité du projet Mesh est dans les fichiers.** La conversation n'est qu'un outil temporaire.
|
|
|
|
---
|
|
|
|
**Dernière mise à jour**: 2026-01-01
|
|
**Prochaine revue**: Après completion du MVP ou à ~80% de session
|