feat: Release v3.1.6 - Amélioration complète des flux de passages
- Optimisation des listes de passages (user/admin) - Amélioration du flux de création avec validation temps réel - Amélioration du flux de consultation avec export multi-formats - Amélioration du flux de modification avec suivi des changements - Ajout de la génération PDF pour les reçus - Migration de la structure des uploads - Implémentation de la file d'attente d'emails - Ajout des permissions de suppression de passages - Corrections de bugs et optimisations performances 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
155
api/docs/UPLOAD-MIGRATION-RECAP.md
Normal file
155
api/docs/UPLOAD-MIGRATION-RECAP.md
Normal file
@@ -0,0 +1,155 @@
|
||||
# 📋 RÉCAPITULATIF - Migration Arborescence Uploads
|
||||
|
||||
## ✅ Modifications effectuées
|
||||
|
||||
### 1. **EntiteController.php** (ligne 736)
|
||||
```php
|
||||
// Avant : "/entites/{$entiteId}/logo"
|
||||
// Après : "/{$entiteId}/logo"
|
||||
```
|
||||
✅ Les logos sont maintenant stockés dans : `uploads/{entite_id}/logo/`
|
||||
|
||||
### 2. **ReceiptService.php** (ligne 95)
|
||||
```php
|
||||
// Avant : "/entites/{$entiteId}/recus/{$operationId}"
|
||||
// Après : "/{$entiteId}/recus/{$operationId}"
|
||||
```
|
||||
✅ Les reçus PDF sont maintenant stockés dans : `uploads/{entite_id}/recus/{operation_id}/`
|
||||
|
||||
### 3. **ExportService.php** (lignes 40 et 141)
|
||||
```php
|
||||
// Avant Excel : "/{$entiteId}/operations/{$operationId}/exports/excel"
|
||||
// Après Excel : "/{$entiteId}/operations/{$operationId}"
|
||||
|
||||
// Avant JSON : "/{$entiteId}/operations/{$operationId}/exports/json"
|
||||
// Après JSON : "/{$entiteId}/operations/{$operationId}"
|
||||
```
|
||||
✅ Les exports sont maintenant stockés directement dans : `uploads/{entite_id}/operations/{operation_id}/`
|
||||
|
||||
## 📂 Nouvelle structure complète
|
||||
|
||||
```
|
||||
uploads/
|
||||
└── {entite_id}/ # Ex: 5, 1230, etc.
|
||||
├── logo/ # Logo de l'entité
|
||||
│ └── logo_{entite_id}_{timestamp}.{jpg|png}
|
||||
├── operations/ # Exports d'opérations
|
||||
│ └── {operation_id}/ # Ex: 1525, 3124
|
||||
│ ├── geosector-export-{operation_id}-{timestamp}.xlsx
|
||||
│ └── backup-{operation_id}-{timestamp}.json.enc
|
||||
└── recus/ # Reçus fiscaux
|
||||
└── {operation_id}/ # Ex: 3124
|
||||
└── recu_{passage_id}.pdf
|
||||
```
|
||||
|
||||
## 🔧 Script de migration
|
||||
|
||||
Un script a été créé pour migrer les fichiers existants :
|
||||
|
||||
**Fichier :** `/scripts/migrate_uploads_structure.php`
|
||||
|
||||
**Usage :**
|
||||
```bash
|
||||
# Mode simulation (voir ce qui sera fait sans modifier)
|
||||
php scripts/migrate_uploads_structure.php --dry-run
|
||||
|
||||
# Mode réel (effectue la migration)
|
||||
php scripts/migrate_uploads_structure.php
|
||||
```
|
||||
|
||||
**Ce que fait le script :**
|
||||
1. Déplace tout le contenu de `uploads/entites/*` vers `uploads/*`
|
||||
2. Fusionne les dossiers si nécessaire
|
||||
3. Simplifie la structure des exports (supprime `/documents/exports/excel/`)
|
||||
4. Applique les bonnes permissions (nginx:nobody 775/664)
|
||||
5. Crée un log détaillé dans `/logs/migration_uploads_YYYYMMDD_HHMMSS.log`
|
||||
|
||||
## 🚀 Procédure de déploiement
|
||||
|
||||
### Sur DEV (déjà fait)
|
||||
✅ Code modifié
|
||||
✅ Script de migration créé
|
||||
|
||||
### Sur REC
|
||||
```bash
|
||||
# 1. Déployer le nouveau code
|
||||
./livre-api.sh rec
|
||||
|
||||
# 2. Faire un backup des uploads actuels
|
||||
cd /var/www/geosector/api
|
||||
tar -czf uploads_backup_$(date +%Y%m%d).tar.gz uploads/
|
||||
|
||||
# 3. Tester en mode dry-run
|
||||
php scripts/migrate_uploads_structure.php --dry-run
|
||||
|
||||
# 4. Si OK, lancer la migration
|
||||
php scripts/migrate_uploads_structure.php
|
||||
|
||||
# 5. Vérifier la nouvelle structure
|
||||
ls -la uploads/
|
||||
ls -la uploads/*/
|
||||
```
|
||||
|
||||
### Sur PROD
|
||||
Même procédure que REC après validation
|
||||
|
||||
## ⚠️ Points d'attention
|
||||
|
||||
1. **Backup obligatoire** avant migration
|
||||
2. **Vérifier l'espace disque** disponible
|
||||
3. **Tester d'abord en dry-run**
|
||||
4. **Surveiller les logs** après migration
|
||||
5. **Tester** upload logo, génération reçu, et export Excel
|
||||
|
||||
## 📊 Gains obtenus
|
||||
|
||||
| Aspect | Avant | Après |
|
||||
|--------|-------|-------|
|
||||
| **Profondeur max** | 8 niveaux | 4 niveaux |
|
||||
| **Complexité** | 2 structures parallèles | 1 structure unique |
|
||||
| **Clarté** | Confus (entites + racine) | Simple et logique |
|
||||
| **Navigation** | Difficile | Intuitive |
|
||||
|
||||
## 🔍 Vérification post-migration
|
||||
|
||||
Après la migration, vérifier :
|
||||
|
||||
```bash
|
||||
# Structure attendue pour l'entité 5
|
||||
tree uploads/5/
|
||||
# Devrait afficher :
|
||||
# uploads/5/
|
||||
# ├── logo/
|
||||
# │ └── logo_5_*.png
|
||||
# ├── operations/
|
||||
# │ ├── 1525/
|
||||
# │ │ └── *.xlsx
|
||||
# │ └── 3124/
|
||||
# │ └── *.xlsx
|
||||
# └── recus/
|
||||
# └── 3124/
|
||||
# └── recu_*.pdf
|
||||
|
||||
# Vérifier les permissions
|
||||
ls -la uploads/*/
|
||||
# Devrait montrer : nginx:nobody avec 775 pour dossiers, 664 pour fichiers
|
||||
```
|
||||
|
||||
## ✅ Checklist finale
|
||||
|
||||
- [ ] Code modifié et testé en DEV
|
||||
- [ ] Script de migration créé
|
||||
- [ ] Documentation mise à jour
|
||||
- [ ] Backup effectué sur REC
|
||||
- [ ] Migration testée en dry-run sur REC
|
||||
- [ ] Migration exécutée sur REC
|
||||
- [ ] Tests fonctionnels sur REC
|
||||
- [ ] Backup effectué sur PROD
|
||||
- [ ] Migration exécutée sur PROD
|
||||
- [ ] Tests fonctionnels sur PROD
|
||||
|
||||
---
|
||||
|
||||
**Date de création :** 20/08/2025
|
||||
**Auteur :** Assistant Claude
|
||||
**Status :** Prêt pour déploiement
|
||||
Reference in New Issue
Block a user