Etape 4 finie, TODO : correction QA, gestion retour au PM après refus utilisateur

This commit is contained in:
Chevallier
2026-07-08 16:11:11 +02:00
parent 5f06de19e0
commit 37d493ac20
5 changed files with 341 additions and 87 deletions

View File

@@ -10,10 +10,14 @@ from app.graph.nodes import (
dev_node,
qa_node,
human_review_node,
delivery_node
)
def route_entry_point(state: WorkflowState):
if state.get("status") == "spec_approved":
current_status = state.get("status")
if current_status in ["human_approved", "human_refused"]:
return "human_review"
if current_status == "spec_approved":
return "retrieval"
return "pm"
@@ -40,18 +44,23 @@ def route_after_qa(state: WorkflowState):
return "human_review"
def route_after_human(state: WorkflowState):
# Cas d'un projet existant proposé
if state.get("existing_project") and not state.get("generated_code"):
if state.get("existing_project_approved") == True:
return END # L'utilisateur est satisfait du projet existant
return "dev" # L'utilisateur refuse l'existant, on génère du neuf
# Cas du code généré
if state.get("is_completed") == True:
return END
current_status = state.get("status")
# Si l'utilisateur a refusé le code -> Retour à la case PM avec ses commentaires
return "pm"
if current_status == "wait_human_review":
return END
if state.get("existing_project") and not state.get("generated_code"):
if state.get("existing_project_approved") is True:
return END
return "dev"
if current_status == "human_approved":
return "delivery"
if current_status == "human_refused":
return "pm"
return END
# --- Assemblage du Graphe ---
@@ -62,12 +71,14 @@ graph.add_node("retrieval", retrieval_node)
graph.add_node("dev", dev_node)
graph.add_node("qa", qa_node)
graph.add_node("human_review", human_review_node)
graph.add_node("delivery", delivery_node)
graph.set_conditional_entry_point(
route_entry_point,
{
"pm": "pm",
"retrieval": "retrieval",
"human_review": "human_review"
},
)
@@ -108,7 +119,12 @@ graph.add_conditional_edges(
{
"pm": "pm",
"dev": "dev",
"delivery": "delivery",
END: END,
},
)
# Maillon final : Après Delivery, c'est la fin du cycle
graph.add_edge("delivery", END)
compiled_graph = graph.compile()