activity-tracker/README.md

307 lines
7.9 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://gitea.legion-muyue.fr/Muyue/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** - [Gitea](https://gitea.legion-muyue.fr/Muyue/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.