Skip to content

Devlog #4 : Logique d'Expédition et Sécurisation Granulaire

Focus : Segmentation métier (Shipments) et implémentation de règles de gestion complexes.

🎯 Objectifs du lot

L'enjeu de cette étape était de transformer une simple "commande" en un système logistique capable de gérer des expéditions (Shipments) et des contraintes physiques (poids, dimensions).

🛡️ Sécurité : Au-delà de la hiérarchie des rôles

Plutôt que de s'appuyer uniquement sur le RoleHierarchy de Symfony, j'ai implémenté des Voters pour segmenter les types d'utilisateurs (CUSTOMER, INTERNE, ADMIN).

  • Cas d'usage : Restriction du tunnel de commande aux seuls profils CUSTOMER.
  • Avantage : Cela permet de "casser" la rigidité des rôles pour isoler des comportements métiers spécifiques à un type d'acteur.

📦 Logistique & Shipment

Pour préparer le terrain d'une gestion de stock réelle, j'ai enrichi le modèle de données :

  • Modèle Produit : Ajout des dimensions (L, l, h), du poids et d'une règle de "colisage" (ex: max 3 chaises par colis).
  • Structure de données : Création des tables Shipment et ShipmentItem pour lier les produits aux colis réels.

Algorithme de Preview

J'ai développé un endpoint de Preview de panier qui simule la répartition des colis avant la validation finale. C'est ici que l'architecture en Managers et Services prend tout son sens, en isolant le calcul de répartition de la persistance en base de données.

🧪 Stratégie de Tests & Vigilance IA

La couverture de tests a été étendue aux Controllers, Managers, Mappers et Utils.

⚠️ Retour d'expérience sur l'IA : Lors de la génération de tests par IA, j'ai identifié une tendance au "sur-mockage" (mocker des composants qui n'auraient pas dû l'être pour forcer le succès du test). Ma solution : Une revue de code systématique et un prompt restrictif pour ne mocker que les services externes (ex: Logs) et conserver la logique réelle sur les composants internes.

🚀 Prochaines étapes

  • Complexification de l'algorithme de colisage (gestion des formats de cartons : petit, moyen, grand).
  • Introduction de la gestion des stocks (Lot 3).