feat(shared) : infra upload générique (ERP-154) #108
Reference in New Issue
Block a user
Delete Branch "feat/erp-154-upload"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Infra d'upload de fichiers générique et réutilisable dans
Shared(spec M4 § 2.7). Ne touche pas au module Transport.Livré
uploaded_document(migration racineDoctrineMigrations) : fichier téléversé immuable (PDF / images) —original_filename,stored_path,mime_type,size_bytes,checksum(sha256),created_at,created_by. COMMENT ON COLUMN sur toutes les colonnes + bloc dansColumnCommentsCatalog.Shared\Infrastructure\Upload\FileUploader: validation MIME server-side viagetMimeType()(jamaisgetClientMimeType()), whitelist explicite (PDF + images), bornage taille (10 Mo), checksum sha256, écriture disquevar/uploads/{yyyy}/{mm}/.POST /api/uploaded_documents(multipart,deserialize:false) +UploadedDocumentProcessor-> renvoie l'IRI ; MIME hors whitelist -> 422.Shared+ path API PlatformShared.Tests
FileUploaderTest(unitaire) +UploadedDocumentApiTest(fonctionnel : 201/IRI/checksum, 422 MIME interdit, 422 sans fichier, 401 anonyme).make testvert (701 tests),php-cs-fixerpropre.Hors scope
Pas d'antivirus / S3 / purge (§ 9). Pas de
carrier.discharge_document_id(ticket consommateur M4).Ticket ERP-154.
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).