- Remove xcap dependency (Linux-focused) - Add Windows crate with Win32 APIs support - Implement native Windows window capture using GetForegroundWindow - Implement process name retrieval using GetModuleBaseNameW - Update all paths to use Windows backslash separators - Update README to specify Windows-only platform - Add Windows badge and requirements - Update installation instructions for PowerShell - Add error handling for non-Windows platforms 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
309 lines
8.3 KiB
Markdown
309 lines
8.3 KiB
Markdown
# Activity Tracker MVP
|
|
|
|

|
|

|
|

|
|

|
|
|
|
**Activity Tracker** est un système de suivi d'activité **Windows uniquement** 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 Windows
|
|
- **API Windows native** : Utilise GetForegroundWindow et les APIs Win32
|
|
- **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
|
|
|
|
- **Windows 10 ou supérieur** (requis)
|
|
- Rust 1.70+ et Cargo (installer via [rustup](https://rustup.rs/))
|
|
- SQLite3 (inclus automatiquement via Cargo)
|
|
|
|
### Compilation
|
|
|
|
```powershell
|
|
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.exe`.
|
|
|
|
### Installation système
|
|
|
|
```powershell
|
|
# Ajoutez le répertoire à votre PATH ou copiez le binaire
|
|
copy target\release\activity-tracker.exe C:\Program Files\ActivityTracker\
|
|
|
|
# Ou utilisez directement depuis le dossier 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)
|
|
|
|
## Plateforme supportée
|
|
|
|
- **Windows uniquement** : Fonctionne avec Windows 10 et supérieur
|
|
- Utilise les APIs Windows natives pour la capture de fenêtres
|
|
- Aucune autorisation spéciale requise (privilèges standards suffisants)
|
|
- Les plateformes Linux et macOS ne sont **pas supportées**
|
|
|
|
## 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.
|