Etape 3 + refonte visuelle + corrections etape 2
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
#nodes.py
|
||||
from app.agents.pm_agent import run_pm_agent
|
||||
from app.agents.dev_agent import run_dev_agent
|
||||
from app.agents.qa_agent import run_qa_agent
|
||||
@@ -46,21 +45,59 @@ async def retrieval_node(state: WorkflowState, config: RunnableConfig):
|
||||
}
|
||||
|
||||
async def dev_node(state: WorkflowState):
|
||||
qa_logs = state.get("qa_result", {}).get("logs", "") if state.get("qa_result") else None
|
||||
qa_logs = []
|
||||
qa_result = state.get("qa_result")
|
||||
|
||||
if qa_result:
|
||||
global_summary = qa_result.get("global_summary")
|
||||
technical_feedback = qa_result.get("technical_feedback", [])
|
||||
|
||||
if global_summary:
|
||||
qa_logs.append(f"Résumé Global : {global_summary}")
|
||||
|
||||
if isinstance(technical_feedback, list):
|
||||
qa_logs.extend(technical_feedback)
|
||||
elif technical_feedback:
|
||||
qa_logs.append(technical_feedback)
|
||||
|
||||
generated_code_state = state.get("generated_code") or {}
|
||||
existing_repo_url = generated_code_state.get("repo_url")
|
||||
existing_files = generated_code_state.get("files")
|
||||
|
||||
generated_code = await run_dev_agent(
|
||||
spec=state["spec"],
|
||||
qa_feedback=qa_logs if qa_logs else None,
|
||||
repo_url=existing_repo_url,
|
||||
files=existing_files
|
||||
)
|
||||
|
||||
generated_code = await run_dev_agent(state["spec"], qa_feedback=qa_logs)
|
||||
return {
|
||||
"generated_code": generated_code,
|
||||
"status": "code_generated",
|
||||
}
|
||||
|
||||
async def qa_node(state: WorkflowState):
|
||||
qa_result = await run_qa_agent(state["generated_code"])
|
||||
dev_data = state.get("generated_code", {})
|
||||
project_title = dev_data.get("spec_title", "default_project")
|
||||
current_loops = state.get("loop_count", 0)
|
||||
|
||||
qa_eval = await run_qa_agent(
|
||||
project_title=project_title,
|
||||
dev_output=dev_data
|
||||
)
|
||||
|
||||
is_success = True
|
||||
|
||||
clean_qa_result = {"success": is_success, "raw": qa_result}
|
||||
if hasattr(qa_eval, "model_dump"):
|
||||
clean_qa_result = qa_eval.model_dump()
|
||||
elif isinstance(qa_eval, dict):
|
||||
clean_qa_result = qa_eval
|
||||
else:
|
||||
clean_qa_result = {
|
||||
"is_complete_and_safe": getattr(qa_eval, "is_complete_and_safe", False),
|
||||
"global_summary": getattr(qa_eval, "global_summary", "Erreur d'analyse"),
|
||||
"technical_feedback": getattr(qa_eval, "technical_feedback", [])
|
||||
}
|
||||
|
||||
is_success = clean_qa_result.get("is_complete_and_safe", False)
|
||||
|
||||
return {
|
||||
"qa_result": clean_qa_result,
|
||||
|
||||
Reference in New Issue
Block a user