From d3abb584a9bbf54728a8de98c9d27af6f2e03b0c Mon Sep 17 00:00:00 2001 From: Matthieu Date: Fri, 26 Jun 2026 16:42:02 +0200 Subject: [PATCH] =?UTF-8?q?fix(project)=20:=20permet=20de=20choisir=20un?= =?UTF-8?q?=20workflow=20=C3=A0=20la=20cr=C3=A9ation=20+=20filet=20par=20d?= =?UTF-8?q?=C3=A9faut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La création de projet échouait : `Project.workflow` est obligatoire mais n'était jamais fourni (formulaire frontend, MCP create-project), tout POST /api/projects partait en erreur de validation/contrainte NOT NULL. - ProjectDefaultWorkflowListener (prePersist) : assigne le workflow par défaut quand aucun n'est fourni, couvrant API Platform, API brute et MCP. - retrait de l'Assert\NotNull sur Project::workflow (la validation tournait avant le flush et empêchait le filet) ; la contrainte DB reste le garde-fou. - CreateProjectTool (MCP) : paramètre optionnel workflowId. - ProjectDrawer : sélecteur Workflow en création, pré-rempli sur le défaut, IRI envoyée dans le payload. - tests fonctionnels : création avec et sans workflow. --- config/services.yaml | 4 + .../components/ProjectDrawer.vue | 34 +++++++ .../Domain/Entity/Project.php | 3 +- .../ProjectDefaultWorkflowListener.php | 33 +++++++ .../Mcp/Tool/Project/CreateProjectTool.php | 13 ++- .../ProjectCreationWorkflowTest.php | 92 +++++++++++++++++++ 6 files changed, 177 insertions(+), 2 deletions(-) create mode 100644 src/Module/ProjectManagement/Infrastructure/EventListener/ProjectDefaultWorkflowListener.php create mode 100644 tests/Functional/Module/ProjectManagement/ProjectCreationWorkflowTest.php diff --git a/config/services.yaml b/config/services.yaml index e06624d..6590355 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -125,6 +125,10 @@ services: tags: - { name: doctrine.orm.entity_listener, entity: 'App\Module\Directory\Domain\Entity\CommercialReport', event: prePersist } + App\Module\ProjectManagement\Infrastructure\EventListener\ProjectDefaultWorkflowListener: + tags: + - { name: doctrine.orm.entity_listener, entity: 'App\Module\ProjectManagement\Domain\Entity\Project', event: prePersist } + App\Module\Directory\Infrastructure\ApiPlatform\State\ReportDocumentProcessor: arguments: $uploadDir: '%task_document_upload_dir%' diff --git a/frontend/modules/project-management/components/ProjectDrawer.vue b/frontend/modules/project-management/components/ProjectDrawer.vue index eff00db..19a4641 100644 --- a/frontend/modules/project-management/components/ProjectDrawer.vue +++ b/frontend/modules/project-management/components/ProjectDrawer.vue @@ -32,6 +32,13 @@ empty-option-label="Aucun client" group-class="w-full" /> +
@@ -124,10 +131,12 @@