feat(shared) : infra upload générique (ERP-154) #108

Merged
matthieu merged 6 commits from feat/erp-154-upload into develop 2026-06-15 15:25:32 +00:00

6 Commits

Author SHA1 Message Date
matthieu a0bd84b8bd Merge branch 'develop' into feat/erp-154-upload
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m36s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m23s
2026-06-15 15:25:26 +00:00
matthieu 797ea18fdf Merge branch 'develop' into feat/erp-154-upload
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m33s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m24s
2026-06-15 15:11:00 +00:00
Matthieu f3707ca287 style(shared) : importe Throwable dans UploadedDocumentProcessor
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m37s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m26s
Conforme a la regle php-cs-fixer global_namespace_import (gate CI Backend).
2026-06-15 17:06:32 +02:00
matthieu 08d6fdb169 Merge branch 'develop' into feat/erp-154-upload
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Failing after 52s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Has been cancelled
2026-06-15 15:05:42 +00:00
Matthieu a579ee6378 fix(shared) : durcissement infra upload (ERP-154)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Failing after 50s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m25s
- supprime le fichier orphelin sur disque si la persistance Doctrine echoue apres l ecriture (FileUploader::remove + compensation dans le processor)
- gere hash_file() renvoyant false (fichier illisible) -> FileUploadException au lieu d un TypeError opaque
- documente le choix de securite du GET (infra generique, cloisonnement delegue au consommateur)
2026-06-15 16:56:15 +02:00
Matthieu b989c33cc4 feat(shared) : infra upload générique (ERP-154)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m40s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m22s
Pose une infra d'upload de fichiers générique et réutilisable dans Shared
(spec M4 § 2.7), sans toucher au module Transport.

- Table uploaded_document (migration racine DoctrineMigrations) : fichier
  téléversé immuable (PDF / images), checksum sha256, created_at/created_by.
- Service Shared\Infrastructure\Upload\FileUploader : validation MIME
  server-side via getMimeType (jamais getClientMimeType), whitelist explicite
  (PDF + images), bornage taille, checksum sha256, écriture var/uploads/{yyyy}/{mm}/.
- Endpoint POST /api/uploaded_documents (multipart, deserialize:false) +
  UploadedDocumentProcessor -> renvoie l'IRI ; MIME hors whitelist -> 422.
- COMMENT ON COLUMN sur toutes les colonnes + bloc dans ColumnCommentsCatalog.
- Mapping Doctrine Shared + path API Platform Shared.
- Tests : FileUploader (unit) + endpoint (fonctionnel, 422 / IRI / checksum).
2026-06-15 16:08:24 +02:00