# Walk The Line Management — V4

## Gestion documentaire

La V4 ajoute une bibliothèque documentaire stockée en base avec séparation stricte entre les métadonnées et le BLOB.

### Modèle

- `Document` : code, type, nom, fichier d'origine, MIME, extension, taille, SHA-256, version, droits, auteur, dates et `documentContentId`.
- `DocumentContent` : uniquement `id` + `content` en `LONGBLOB`.
- Il n'existe volontairement **aucune relation Doctrine** entre les deux entités.
- Le contenu binaire n'est chargé explicitement que lors d'un affichage ou d'un téléchargement.

### Droits

- `public = true` : accessible sans authentification.
- `press = true` : accessible aux `ROLE_PRESSE` et `ROLE_ADMIN`.
- `admin = true` : accessible aux `ROLE_ADMIN`.
- Un document sans droit sélectionné est automatiquement replacé en `admin`.
- Devis, factures et conventions sont toujours forcés en `admin=true`, `public=false`, `press=false`.

### Versionnement

La contrainte unique porte sur `(code, version)`. Lors de l'ajout d'une nouvelle version d'un même code, la version est calculée automatiquement.

Exemple :

- `DOSSIER_PRESSE` v1
- `DOSSIER_PRESSE` v2
- `DOSSIER_PRESSE` v3

La route `/documents/code/DOSSIER_PRESSE` récupère la dernière version active autorisée.

### Documents métier immuables

Lors de la création d'un devis, d'une facture ou d'une convention, un PDF est immédiatement généré et stocké dans la bibliothèque. L'entité métier ne garde qu'un entier `generatedDocumentId`, sans relation Doctrine.

Les documents déjà créés avant la V4 sont figés automatiquement lors de leur premier affichage dans l'administration.

### Bibliothèque d'administration

Menu `Administration > Documents` :

- ajout d'un document ;
- affichage / téléchargement ;
- modification des métadonnées ;
- ajout d'une nouvelle version ;
- archivage / réactivation des documents non métier.

Les documents métier immuables ne peuvent ni être modifiés ni archivés depuis cette bibliothèque.

### Espace presse

La page `/presse` liste automatiquement la dernière version active des documents marqués `presse` ou `public`.

## Mise à jour depuis la V3

```bash
composer install
php bin/console doctrine:migrations:migrate
php bin/console cache:clear
php bin/console doctrine:schema:validate
```

Migration ajoutée : `Version20260817210000.php`.

Aucun nouveau package Composer n'est nécessaire pour la V4.
