From 9a34ecded6a2506f289d3e636a3dbcb945e3866d Mon Sep 17 00:00:00 2001 From: Dom Date: Thu, 2 Jul 2026 18:44:47 +0200 Subject: [PATCH] =?UTF-8?q?docs(R1):=20acte=20create-or-skip=20+=20corrige?= =?UTF-8?q?=20docstring=20wiring=20p=C3=A9rim=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sémantique R1 tranchée par Dom (02/07) : create-or-skip (la version validée par revue humaine fait foi, un ré-apprentissage ne l'écrase pas). Aligne docstring learned_workflow_bridge (disait à tort « pas branché au worker » depuis c82829f2b) + spec F1-1 (barré create-or-update). Co-Authored-By: Claude Fable 5 --- docs/PLAN_REMISE_AU_CARRE_APPRENTISSAGE_2026-06-27.md | 2 +- .../backend/services/learned_workflow_bridge.py | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/PLAN_REMISE_AU_CARRE_APPRENTISSAGE_2026-06-27.md b/docs/PLAN_REMISE_AU_CARRE_APPRENTISSAGE_2026-06-27.md index 1c7946665..ab533033f 100644 --- a/docs/PLAN_REMISE_AU_CARRE_APPRENTISSAGE_2026-06-27.md +++ b/docs/PLAN_REMISE_AU_CARRE_APPRENTISSAGE_2026-06-27.md @@ -58,7 +58,7 @@ Causes racines (au-delà du « c'est débranché ») : Tranchées le 23/06 (`DECISIONS_PRODUIT_EN_ATTENTE_2026-06-23.md`) → **on exécute, on ne re-décide pas** : - **F2-1/F14-1** : rejeu intelligent = **OUI, prérequis** (consulter le fonds appris, pas de coords figées). -- **F1-1** : critère de fusion = **signature de trajectoire** (create-or-update). +- **F1-1** : critère de fusion = **signature de trajectoire**. ~~create-or-update~~ → **create-or-skip** (révisé Dom 2026-07-02 : un ré-apprentissage ne doit PAS écraser un workflow validé par revue humaine ; la 1ʳᵉ version importée fait foi. Refresh explicite = chantier séparé si besoin. Implémenté ainsi dans `learned_workflow_bridge.py`, cf. `CARTO_CODE_NON_BRANCHE_2026-07-02.md`). - **F9-1** : **DB = vérité**, JSON = échange ; métrique = workflows rejouables validés. - **F6-1** : mutualisation **cross + intra-clinique** (fédération anonymisée dans le périmètre + lever silo `machine_id`). diff --git a/visual_workflow_builder/backend/services/learned_workflow_bridge.py b/visual_workflow_builder/backend/services/learned_workflow_bridge.py index f2660be7c..bc687c5c4 100644 --- a/visual_workflow_builder/backend/services/learned_workflow_bridge.py +++ b/visual_workflow_builder/backend/services/learned_workflow_bridge.py @@ -362,8 +362,14 @@ def import_core_workflow_to_db( dict {created: bool, workflow_id: str, signature: str, warnings: list}. `created=False` quand un workflow de même trajectoire existait déjà. - Note (non-wiring) : cette unité n'est PAS branchée au worker live ni à la - route HTTP existante ; voir le rapport de câblage R1. + Sémantique : **create-or-skip** (choix acté Dom 2026-07-02). Si un workflow + de même signature de trajectoire existe déjà, on le RÉUTILISE tel quel — on ne + le met PAS à jour. Rationale : le workflow validé (revue humaine) fait foi ; + un ré-apprentissage automatique ne doit pas écraser une version validée. Si un + refresh explicite devient nécessaire, ce sera un chantier séparé (create-or-update). + + Wiring : branché au worker live via `stream_processor._maybe_import_to_vwb` + (depuis c82829f2b, 29/06), sous gate `RPA_R1_AUTO_IMPORT` (défaut OFF). """ # Imports paresseux : garde le module léger et évite un import core/DB au load. from core.execution.trajectory_signature import workflow_trajectory_signature