Files
geo/api/docs/UPLOAD-REORGANIZATION.md
Pierre 0687900564 fix: Récupérer l'opération active depuis la table operations
- Corrige l'erreur SQL 'Unknown column fk_operation in users'
- L'opération active est récupérée depuis operations.chk_active = 1
- Jointure avec users pour filtrer par entité de l'admin créateur
- Query: SELECT o.id FROM operations o INNER JOIN users u ON u.fk_entite = o.fk_entite WHERE u.id = ? AND o.chk_active = 1
2026-01-26 16:57:08 +01:00

3.1 KiB
Executable File

Réorganisation de l'arborescence des uploads

📅 Date : 20/08/2025

🎯 Objectif

Uniformiser et simplifier l'arborescence des fichiers uploads pour une meilleure organisation et maintenance.

📂 Arborescence actuelle (PROBLÈME)

uploads/
├── entites/
│   └── 5/
│       ├── logo/
│       ├── operations/
│       │   └── 1525/
│       │       └── documents/
│       │           └── exports/
│       │               └── excel/
│       │                   └── geosector-export-*.xlsx
│       └── recus/
│           └── 3124/
│               └── recu_*.pdf
└── 5/
    └── operations/
        ├── 1525/
        └── 2021/

Problèmes identifiés :

  • Duplication des structures (dossier 5 à la racine ET dans entites/)
  • Chemins trop profonds pour les exports Excel (6 niveaux)
  • Incohérence dans les chemins

Nouvelle arborescence (SOLUTION)

uploads/
└── {entite_id}/              # Un seul dossier par entité à la racine
    ├── logo/                  # Logo de l'entité
    │   └── logo_*.{jpg,png}
    ├── operations/            # Exports par opération
    │   └── {operation_id}/
    │       └── *.xlsx         # Exports Excel directement ici
    └── recus/                 # Reçus par opération
        └── {operation_id}/
            └── recu_*.pdf

📝 Fichiers à modifier

Actuel : /entites/{$entiteId}/logo Nouveau : /{$entiteId}/logo

2. ReceiptService.php (Stockage reçus PDF)

Actuel : /entites/{$entiteId}/recus/{$operationId} Nouveau : /{$entiteId}/recus/{$operationId}

3. ExportService.php (Export Excel)

Actuel : /{$entiteId}/operations/{$operationId}/exports/excel Nouveau : /{$entiteId}/operations/{$operationId}

4. ExportService.php (Export JSON)

Actuel : /{$entiteId}/operations/{$operationId}/exports/json Nouveau : /{$entiteId}/operations/{$operationId} (ou supprimer si non utilisé)

🔄 Plan de migration

Étape 1 : Modifier le code

  1. Mettre à jour tous les chemins dans les contrôleurs et services
  2. Tester en environnement DEV

Étape 2 : Script de migration des fichiers existants

Créer un script PHP pour :

  1. Lister tous les fichiers existants
  2. Les déplacer vers la nouvelle structure
  3. Supprimer les anciens dossiers vides

Étape 3 : Déploiement

  1. Exécuter le script de migration sur REC
  2. Vérifier le bon fonctionnement
  3. Exécuter sur PROD

🚀 Avantages de la nouvelle structure

  • Plus simple : Chemins plus courts et plus logiques
  • Plus cohérent : Une seule structure pour toutes les entités
  • Plus maintenable : Facile de naviguer et comprendre
  • Performance : Moins de niveaux de dossiers à parcourir

⚠️ Points d'attention

  • Vérifier les permissions (nginx:nobody 775/664)
  • S'assurer que les anciens fichiers sont bien migrés
  • Mettre à jour la documentation
  • Informer l'équipe du changement