Files
geo/api/docs/UPLOAD-MIGRATION-RECAP.md
Pierre 6d41a1274f 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>
2025-08-21 17:57:27 +02:00

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