- 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>
155 lines
4.4 KiB
Markdown
155 lines
4.4 KiB
Markdown
# 📋 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 |