---
suivi: 1627
date: 2026-09-21
sujet: Limite upload documents dossier foncier 50 Mo
chantier: module-foncier
type: feature
statut: poussé
hash: 7515925f
fichiers:
  - app/Services/Foncier/FoncierEntityDocumentService.php
  - app/Support/Foncier/FoncierDocumentProfile.php
  - app/Http/Controllers/Foncier/Concerns/ManagesFoncierEntityDocuments.php
  - tests/Feature/Foncier/FoncierEntityDocumentsSourceTest.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - docs/suivi/SUIVI_1627_limite_upload_dossier_foncier.md
---

# SUIVI #1627 — limite upload documents dossier foncier (10 → 50 Mo)

## PROMPT ENVOYÉ

Onglet DOCUMENTS d’un dossier foncier : passer « max 10 Mo / fichier » à
50 Mo. Inventaire exhaustif des définitions 10 Mo. Ne pas modifier les
autres zones de dépôt (les signaler). Vérifier aval stockage privé
serveur (hors SharePoint) pour 50 Mo. max_execution_time 300 s,
QUEUE_CONNECTION=sync. Ne pas toucher stockage, nommage, droits,
rattachement.

## FICHES LUES

- **#1115 LEÇON** — constante app en dur, jamais `ini_get` ; 10 Mo /
  120 Mo requête. Impact : on conserve 10 Mo comme défaut hors dossier.
- **#1117 LEÇON** — un pipeline, caps dans le **profil**, pas quatre
  services copiés. Impact : 50 Mo dossier via `FoncierDocumentProfile`,
  pas un bump global de `MAX_TAILLE_OCTETS`.
- **#1118 / #1131 / #1579** — caps nombre avenant / valorisation /
  échange. Inchangés.
- **#1203** — onglet Documents agrégé ; le dépôt rattache au dossier.
- **#1226** — inventaire dépôts (limites autres zones, non touchées).
- **#1622 / #1625 / #1626** — lots en série ; ce lot ne touche pas de
  `.vue` → pas de rebuild Vite.

## SYNTHÈSE

La limite 10 Mo n’était **pas** locale à l’onglet dossier : constante
globale `FoncierEntityDocumentService::MAX_TAILLE_OCTETS`, règle
Laravel du trait partagé, `limitsPayload`, et UI
`EntityDocumentsPanel` qui lit `document_limits.max_taille_mo`
(repli 10). Un bump global aurait relevé offre / promesse / acte /
parcelle / échange.

Ajout `MAX_TAILLE_OCTETS_DOSSIER` (50 Mo). Le profil pose
`max_taille_octets` / `max_taille_ko` : dossier 50 Mo, le reste 10 Mo.
Trait `max:` et messages, `assertFichierValide`, `limitsPayload` suivent
le profil. Le Vue n’est pas modifié : le texte et le contrôle avant
envoi lisent le payload (50 pour le dossier).

Aval 50 Mo : `putFileAs` (copie disque), MIME via finfo (préfixe),
téléchargement `BinaryFileResponse` (flux). Pas d’empreinte, pas de
chargement entier en mémoire applicative. Requête toujours 120 Mo
(deux fichiers de 50 Mo OK ; trois refusés — inchangé).

## DÉPLOIEMENT

```
git pull origin main
php artisan optimize:clear
php artisan view:clear
php artisan journal:sync
```

Pas de migrate. Pas de npm. `route:clear` non requis.

## LEÇON

Sur un pipeline documents polymorphe, la taille fichier est un cap de
**profil** comme le nombre de pièces. Changer la constante globale
change toutes les entités. L’UI qui affiche `document_limits.max_taille_mo`
n’a pas besoin d’être rebuildée si seul le payload PHP change.
