# Module Bonnes Feuilles - Guide d'utilisation

## 📖 Vue d'ensemble

Le module de gestion des bonnes feuilles permet de téléverser, gérer et partager des extraits de manuscrits au format PDF. Il offre un système complet de versioning et de prévisualisation.

## 🎯 Fonctionnalités principales

### 1. Upload de fichiers
- **Formats acceptés** : PDF uniquement
- **Taille maximale** : 10 MB
- **Drag & Drop** : Glissez-déposez vos fichiers directement
- **Validation automatique** : Type et taille vérifiés avant upload

### 2. Gestion des versions
- **Version active** : Un fichier principal référencé dans la base
- **Historique complet** : Toutes les versions précédentes conservées
- **Changement de version** : Activation facile d'une version archivée
- **Suppression sécurisée** : Seules les versions non actives peuvent être supprimées

### 3. Prévisualisation
- **Modal responsive** : Affichage plein écran du PDF
- **Navigation fluide** : Défilement et zoom natifs du navigateur
- **Téléchargement direct** : Bouton de téléchargement dans la modal

### 4. Interface intuitive
- **Compteur de fichiers** : Badge affichant le nombre total
- **Conseils intégrés** : Guide des bonnes pratiques
- **Feedback visuel** : Messages de confirmation pour chaque action
- **Responsive design** : Adapté mobile, tablette et desktop

## 📁 Structure des fichiers

```
public/
├── pages/
│   └── manuscrit/
│       ├── partials/
│       │   └── manuscrit_bonnes_feuilles.php  ← Interface principale
│       ├── edit_manuscript.php                 ← Traitement backend
│       └── test_bonnes_feuilles.php           ← Tests et diagnostics
├── assets/
│   ├── css/
│   │   └── bonnes-feuilles.css                ← Styles dédiés
│   └── js/
│       └── bonnes-feuilles.js                 ← Logique JavaScript
└── uploads/
    └── manuscrits/
        └── {id}/
            └── bonnes_feuilles/
                ├── 20251122_extrait.pdf       ← Fichiers uploadés
                └── 20251123_version2.pdf
```

## 🚀 Utilisation

### Upload d'un nouveau fichier

1. **Sélectionner le fichier**
   - Cliquez sur le champ "Fichier PDF"
   - Ou glissez-déposez directement sur la zone

2. **Validation automatique**
   - Type : PDF uniquement
   - Taille : Maximum 10 MB
   - Message d'erreur si invalide

3. **Upload**
   - Cliquez sur "Enregistrer" en bas du formulaire
   - Le fichier devient automatiquement la version active

### Prévisualiser un fichier

1. Cliquez sur l'icône 👁️ "Prévisualiser"
2. Le PDF s'ouvre dans une modal plein écran
3. Utilisez les contrôles natifs du navigateur pour naviguer
4. Téléchargez directement depuis la modal si besoin

### Changer la version active

1. Dans l'historique, cliquez sur l'icône ⭐ "Définir comme actif"
2. Confirmez l'action
3. Le fichier devient la nouvelle version active
4. L'ancienne version passe en archive

### Supprimer une version

1. Seules les versions archivées peuvent être supprimées
2. Cliquez sur l'icône 🗑️ "Supprimer"
3. Confirmez la suppression (action irréversible)
4. Le fichier est supprimé définitivement du serveur

## 🎨 Personnalisation

### Modifier les styles

Éditez `public/assets/css/bonnes-feuilles.css` :

```css
/* Exemple : Changer la couleur de la zone d'upload */
.upload-section {
    background: linear-gradient(135deg, #yourcolor1, #yourcolor2);
}
```

### Modifier le comportement JavaScript

Éditez `public/assets/js/bonnes-feuilles.js` :

```javascript
// Exemple : Changer la taille maximale
const CONFIG = {
    maxFileSize: 20 * 1024 * 1024, // 20 MB au lieu de 10
    // ...
};
```

## 🔒 Sécurité

### Validations côté serveur (PHP)

```php
// Vérification du type MIME
if ($fileExtension !== 'pdf') {
    $error = 'Le fichier doit être un PDF.';
}

// Vérification de la taille
if ($file['size'] > $maxSize) {
    $error = 'Fichier trop volumineux.';
}

// Sanitisation du nom
$fileName = preg_replace('/[^a-zA-Z0-9_-]/', '', $originalName);
```

### Validations côté client (JavaScript)

```javascript
// Vérification avant upload
if (!CONFIG.allowedTypes.includes(file.type)) {
    showAlert('Type de fichier non autorisé', 'danger');
    return false;
}
```

### Protection contre les attaques

- **Path Traversal** : Utilisation de `basename()` systématique
- **XSS** : Échappement HTML avec `htmlspecialchars()`
- **Upload malveillant** : Vérification stricte du type MIME
- **Déni de service** : Limitation de la taille des fichiers

## 📊 Base de données

### Table `t_manuscrits`

```sql
ALTER TABLE t_manuscrits 
ADD COLUMN manuscrit_BonnesFeuilles VARCHAR(255) NULL
COMMENT 'Chemin relatif vers le fichier actif des bonnes feuilles';
```

### Exemple de données

```
manuscrit_ID: 2
manuscrit_Titre: "Mon Roman"
manuscrit_BonnesFeuilles: "uploads/manuscrits/2/bonnes_feuilles/20251122_extrait.pdf"
```

## 🧪 Tests

### Lancer les tests

Accédez à : `http://votre-site/public/pages/manuscrit/test_bonnes_feuilles.php`

Les tests vérifient :
- ✅ Existence des dossiers
- ✅ Permissions en lecture/écriture
- ✅ Connexion à la base de données
- ✅ Fonctions de formatage
- ✅ Intégrité des données

### Tests manuels

1. **Upload** : Téléverser un PDF de test
2. **Prévisualisation** : Vérifier l'affichage
3. **Changement de version** : Activer une version archivée
4. **Suppression** : Supprimer une version non active
5. **Validation** : Tenter d'uploader un fichier invalide

## 🐛 Dépannage

### Le fichier ne s'upload pas

1. Vérifiez les permissions du dossier `uploads/`
2. Vérifiez la taille du fichier (max 10 MB)
3. Vérifiez que c'est bien un PDF
4. Consultez les logs PHP pour les erreurs

### La prévisualisation ne fonctionne pas

1. Vérifiez que le chemin du fichier est correct
2. Vérifiez que le fichier existe physiquement
3. Vérifiez les permissions de lecture
4. Testez dans un autre navigateur

### Erreur lors de la suppression

1. Vérifiez que ce n'est pas le fichier actif
2. Vérifiez les permissions d'écriture
3. Vérifiez que le fichier existe
4. Consultez les logs d'erreur

### Le drag & drop ne fonctionne pas

1. Vérifiez que JavaScript est activé
2. Testez dans un navigateur moderne
3. Vérifiez la console pour les erreurs JS
4. Utilisez le sélecteur de fichiers classique en attendant

## 📈 Améliorations futures

### Court terme
- [ ] Statistiques de téléchargement
- [ ] Partage public avec lien unique
- [ ] Notifications par email lors d'un upload

### Moyen terme
- [ ] Annotations et commentaires sur les PDF
- [ ] Comparaison entre versions
- [ ] Génération automatique depuis le manuscrit

### Long terme
- [ ] Watermark automatique
- [ ] Conversion vers d'autres formats (EPUB, MOBI)
- [ ] OCR pour les PDF scannés
- [ ] Intégration avec des services de lecture en ligne

## 📞 Support

Pour toute question ou problème :

- **Documentation** : `/05_docs/BONNES_FEUILLES.md`
- **Tests** : `/public/pages/manuscrit/test_bonnes_feuilles.php`
- **Logs** : `/logs/error.log`
- **Email** : support@bookconnect.fr

## 📝 Changelog

### Version 1.0.0 (2025-11-22)
- ✨ Première version complète
- ✨ Upload avec validation
- ✨ Gestion des versions
- ✨ Prévisualisation PDF
- ✨ Drag & Drop
- ✨ Interface responsive
- ✨ Tests automatisés

---

**BookConnect** - Plateforme de gestion éditoriale
