activity-tracker/README.md
Muyue f113ad6721 Initial commit - Activity Tracker MVP
Implémentation complète du MVP (Minimum Viable Product) :

 Module de capture :
   - Screenshots avec compression WebP (qualité 80%)
   - Métadonnées des fenêtres actives
   - Détection d'inactivité (pause après 10min)

 Module de stockage :
   - Base SQLite avec schéma optimisé
   - Chiffrement AES-256-GCM des données sensibles
   - Dérivation de clé PBKDF2-HMAC-SHA512 (100k itérations)
   - Nettoyage automatique après 30 jours

 Module d'analyse IA :
   - Classification heuristique en 5 catégories
   - Extraction d'entités (projet, outil, langage)
   - Patterns optimisés pour Development, Meeting, Research, Design

 Module de rapport :
   - Génération de rapports JSON
   - Timeline d'activités avec statistiques
   - Export chiffré des données

 CLI complète :
   - activity-tracker start : capture en arrière-plan
   - activity-tracker report : génération de rapport
   - activity-tracker stats : statistiques de stockage
   - activity-tracker cleanup : nettoyage des données
   - activity-tracker export : export complet

📚 Documentation :
   - README complet avec exemples d'utilisation
   - Configuration via settings.toml
   - Tests unitaires pour chaque module

🔒 Sécurité :
   - Chiffrement end-to-end des screenshots
   - Pas de stockage du mot de passe
   - Protection RGPD avec consentement explicite

Conformité avec le design-journal.md pour le MVP.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-16 09:05:39 +02:00

307 lines
8.0 KiB
Markdown

# Activity Tracker MVP
![Version](https://img.shields.io/badge/version-0.1.0-blue)
![License](https://img.shields.io/badge/license-MIT-green)
![Rust](https://img.shields.io/badge/rust-1.70+-orange)
**Activity Tracker** est un système de suivi d'activité conçu pour aider les utilisateurs à reconstruire leur historique de travail via une analyse automatisée des actions numériques.
## 📋 Caractéristiques (MVP)
-**Capture passive** : Screenshots toutes les 5 minutes + métadonnées fenêtres
-**Stockage sécurisé** : Base SQLite avec chiffrement AES-256-GCM
-**Analyse intelligente** : Classification automatique en 5 catégories
-**Rapports journaliers** : Export JSON avec statistiques détaillées
-**Privacy-first** : Toutes les données sont chiffrées localement
## 🚀 Installation
### Prérequis
- Rust 1.70+
- Cargo
- SQLite3
### Compilation
```bash
git clone https://github.com/yourorg/activity-tracker.git
cd activity-tracker
cargo build --release
```
Le binaire compilé sera disponible dans `target/release/activity-tracker`.
### Installation système
```bash
# Linux/macOS
sudo cp target/release/activity-tracker /usr/local/bin/
# Ou ajoutez le chemin à votre PATH
export PATH=$PATH:$(pwd)/target/release
```
## 📖 Utilisation
### 1. Démarrer la capture d'activité
```bash
# Lancer avec mot de passe pour chiffrement
activity-tracker start --password "votre_mot_de_passe_sécurisé"
# Avec intervalle personnalisé (en secondes, défaut: 300 = 5 min)
activity-tracker start --password "..." --interval 600
```
**Note** : Le processus s'exécute en boucle jusqu'à interruption (Ctrl+C).
### 2. Générer un rapport
```bash
# Rapport du jour (par défaut)
activity-tracker report --password "..." --output rapport_aujourdhui.json
# Rapport des 7 derniers jours
activity-tracker report --password "..." --days 7 --output rapport_semaine.json
```
### 3. Consulter les statistiques
```bash
activity-tracker stats --password "..."
```
Affiche :
- Nombre total de captures
- Taille de la base de données
- Répartition par catégorie
- Date de la première/dernière capture
### 4. Nettoyer les anciennes données
```bash
# Supprimer les données de plus de 30 jours (par défaut)
activity-tracker cleanup --password "..." --days 30
```
### 5. Exporter toutes les données
```bash
# Export complet (365 derniers jours)
activity-tracker export --password "..." --output backup.json
```
## 🔒 Sécurité
### Chiffrement
- **Algorithme** : AES-256-GCM (authentification + chiffrement)
- **Dérivation de clé** : PBKDF2-HMAC-SHA512 (100 000 itérations)
- **Salt** : Généré aléatoirement pour chaque session
- **Nonce** : 12 bytes GCM (généré aléatoirement par capture)
### Bonnes pratiques
1. **Mot de passe fort** : Minimum 16 caractères, mélange de lettres/chiffres/symboles
2. **Ne pas stocker le mot de passe** : Saisie manuelle à chaque commande
3. **Sauvegarde sécurisée** : Chiffrez les exports JSON avant de les stocker ailleurs
## 📊 Format de rapport (JSON)
```json
{
"metadata": {
"version": "1.0.0",
"user_id": "default_user",
"period": {
"start": "2025-10-16T00:00:00Z",
"end": "2025-10-17T00:00:00Z"
}
},
"activities": [
{
"id": "capture_1697456789000",
"start": "2025-10-16T09:00:00Z",
"end": "2025-10-16T09:05:00Z",
"category": "Development",
"entities": {
"project": "activity-tracker",
"tools": ["vscode"],
"languages": ["Rust"]
},
"confidence": 0.92
}
],
"stats": {
"total_time_formatted": "8h 30m",
"activity_count": 102,
"by_category": {
"Development": {
"time_formatted": "4h 30m",
"percentage": 52.9
},
"Meeting": { ... },
...
}
}
}
```
## 🎯 Catégories d'activités
Le MVP classifie automatiquement les activités en 5 catégories :
| Catégorie | Exemples d'applications |
|-----------|------------------------|
| **Development** | VSCode, IntelliJ, Terminal, GitHub |
| **Meeting** | Zoom, Teams, Google Meet, Slack Call |
| **Research** | Chrome, Firefox, StackOverflow, Documentation |
| **Design** | Figma, Sketch, Photoshop, Illustrator |
| **Other** | Toute autre activité non classifiée |
## ⚙️ Configuration
Créez un fichier `config/settings.toml` :
```toml
[capture]
interval_seconds = 300 # 5 minutes
screenshot_quality = 80 # Qualité WebP (0-100)
inactivity_threshold = 600 # 10 minutes
[storage]
max_storage_mb = 500
retention_days = 30
db_path = "data/activity_tracker.db"
[ai]
categories = ["Development", "Meeting", "Research", "Design", "Other"]
batch_size = 10
confidence_threshold = 0.7
[security]
salt_length = 16
pbkdf2_iterations = 100000
encryption_algorithm = "AES-256-GCM"
```
Puis lancez :
```bash
activity-tracker start --password "..." --config config/settings.toml
```
## 🧪 Tests
```bash
# Tests unitaires
cargo test
# Tests avec couverture
cargo test --coverage
# Tests d'intégration
cargo test --test integration_tests
```
## 📁 Structure du projet
```
activity-tracker/
├── src/
│ ├── capture/ # Module de capture (screenshots + métadonnées)
│ │ ├── mod.rs
│ │ ├── screenshot.rs
│ │ ├── window.rs
│ │ └── activity.rs
│ ├── storage/ # Module de stockage (SQLite + chiffrement)
│ │ ├── mod.rs
│ │ ├── database.rs
│ │ ├── encryption.rs
│ │ └── schema.rs
│ ├── analysis/ # Module d'analyse IA
│ │ ├── mod.rs
│ │ ├── classifier.rs
│ │ └── entities.rs
│ ├── report/ # Module de génération de rapports
│ │ ├── mod.rs
│ │ ├── generator.rs
│ │ ├── timeline.rs
│ │ └── export.rs
│ ├── config.rs # Configuration
│ ├── error.rs # Gestion des erreurs
│ ├── lib.rs # Bibliothèque principale
│ └── main.rs # Point d'entrée CLI
├── config/ # Fichiers de configuration
├── data/ # Base de données locale
├── tests/ # Tests d'intégration
├── Cargo.toml # Dépendances Rust
└── README.md
```
## 🛠️ Développement
### Ajouter une nouvelle catégorie
Modifiez `src/analysis/mod.rs` :
```rust
pub enum ActivityCategory {
Development,
Meeting,
Research,
Design,
Communication, // Nouvelle catégorie
Other,
}
```
Puis ajoutez les patterns dans `src/analysis/classifier.rs`.
### Améliorer la classification
Les patterns sont définis dans `classifier.rs`. Ajoutez vos propres règles :
```rust
Pattern::new(vec!["slack", "discord", "telegram"], 0.9),
```
## 📈 Roadmap Post-MVP
- [ ] **Keylogging optionnel** (avec consentement explicite RGPD)
- [ ] **Synchronisation cloud** chiffrée E2E
- [ ] **Plugins sécurisés** (sandbox WASM)
- [ ] **Intégration Mistral 7B** pour analyse avancée
- [ ] **Interface Electron** pour visualisation
- [ ] **Détection audio** de réunions
- [ ] **Intégrations** (Trello, Jira, calendriers)
## 🐛 Problèmes connus
- **Linux** : L'accès aux métadonnées de fenêtres nécessite X11 (Wayland non supporté)
- **macOS** : Nécessite autorisations Accessibilité (voir documentation officielle)
- **Windows** : Fonctionne avec les privilèges standards
## 🤝 Contribution
Les contributions sont les bienvenues ! Consultez [CONTRIBUTING.md](CONTRIBUTING.md) pour les guidelines.
## 📄 Licence
MIT License - voir [LICENSE](LICENSE) pour plus de détails.
## 👥 Auteurs
- **Activity Tracker Team** - [GitHub](https://github.com/yourorg/activity-tracker)
## 🙏 Remerciements
- Design inspiré du document `design-journal.md`
- Chiffrement via [RustCrypto](https://github.com/RustCrypto)
- Screenshots via [xcap](https://github.com/nashaofu/xcap)
---
**Note** : Ce projet est un MVP (Minimum Viable Product). Les fonctionnalités avancées (IA complète, plugins, sync cloud) sont prévues pour les versions futures.