from typing import TypedDict, Optional, Any, Dict, List class WorkflowState(TypedDict, total=False): user_input: str spec: dict existing_project: Optional[dict] existing_project_approved: Optional[bool] # Choix utilisateur si projet similaire trouvé generated_code: Optional[Dict[str, str]] # Arborescence et code qa_result: Optional[dict] # Contient les clés 'success' et 'logs' loop_count: int # Compteur pour la Loop 1 (Dev <-> QA) user_feedback: Optional[str] # Retours si l'utilisateur refuse le code final is_completed: bool # Statut de livraison finale status: str chat_history: List[Dict[str, str]]