Skip to content

✨ feat(Stockage): répartit originaux, vignettes et previews en sous-dossiers (#609, 1/3) - #611

Merged
ronan-develop merged 5 commits into
mainfrom
feat/609-stockage-sous-dossiers
Oct 2, 2026
Merged

ronan-develop merged 5 commits into
mainfrom
feat/609-stockage-sous-dossiers

Conversation

@ronan-develop

Copy link
Copy Markdown
Owner

Contexte

o2switch interdit plus de 20 000 fichiers dans un même répertoire (CGV). Un gros import concentrait tous les originaux dans le même AAAA/MM et toutes les vignettes dans thumbs/.

Cette PR (1/3 de #609) : les nouveaux écrits

  • StorageShard : sous-dossier = 2 derniers caractères hexadécimaux du nom (partie aléatoire de l'UUID v7), 256 sous-dossiers, aucun inode supplémentaire par photo.
  • Originaux : <xx>/<uuid>.<ext> (plus de date dans le chemin).
  • Vignettes : thumbs/<xx>/<uuid>.jpg.
  • Previews RAW : previews/<xx>/<hash>.jpg, clé dérivée du nom du fichier (stable si l'original est déplacé).
  • Les anciens chemins restent lisibles (chemin stocké tel quel en base) ; repli de lecture et de suppression vers le chemin réparti dans StorageService. Path traversal toujours bloqué.
  • Aucune migration Doctrine, aucun fichier existant déplacé.

Suite (non incluse)

  • PR 2/3 : commande app:storage:shard (rename, bornée, idempotente, reprenable) branchée sur le nocturne.
  • PR 3/3 : extraction Takeout (dossier temporaire plat).
  • ⚠ Le ticket doit rester ouvert après le merge de cette PR (le CI impose un mot-clé de fermeture).

Closes #609

Tests

1436 tests PHP + 37 tests bash verts.

@ronan-develop ronan-develop added the refactoring Refactorisation sans nouvelle feature ni fix label Oct 2, 2026
@ronan-develop ronan-develop self-assigned this Oct 2, 2026
@github-actions github-actions Bot added this to the Pre Prod milestone Oct 2, 2026
@ronan-develop
ronan-develop merged commit 54d84e8 into main Oct 2, 2026
5 checks passed
@ronan-develop
ronan-develop deleted the feat/609-stockage-sous-dossiers branch October 2, 2026 12:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

refactoring Refactorisation sans nouvelle feature ni fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Stockage : répartir fichiers et vignettes en sous-dossiers (limite o2switch de 20 000 fichiers par répertoire)

1 participant