diff --git a/backend/app/enhance.py b/backend/app/enhance.py index 4290f54..f3ba615 100644 --- a/backend/app/enhance.py +++ b/backend/app/enhance.py @@ -26,8 +26,9 @@ _PLAN_CODE_PROMPT = ( "Tu es architecte logiciel. Établis un plan d'IMPLÉMENTATION concret pour " "cette application, en 3 à 5 étapes courtes (une par ligne, numérotées " "« 1. », « 2. »…).\n" - "- Étape 1 = ARCHITECTURE : quels fichiers créer et leur rôle (ex. un seul " - "index.html avec HTML+CSS+JS, ou séparer index.html / style.css / app.js).\n" + "- Étape 1 = ARCHITECTURE : privilégie UN SEUL fichier autonome (ex. " + "index.html avec le CSS et le JS intégrés, sans dépendance externe) ; ne " + "sépare en plusieurs fichiers que si c'est vraiment indispensable.\n" "- Étapes suivantes = construire UNE fonctionnalité concrète et testable à " "la fois (structure/affichage, puis interactions, puis logique).\n" "Reste RÉALISTE et réalisable en une passe : pas de dépendance externe, pas " diff --git a/backend/app/routes/chat.py b/backend/app/routes/chat.py index d5512a1..9674360 100644 --- a/backend/app/routes/chat.py +++ b/backend/app/routes/chat.py @@ -335,8 +335,14 @@ async def chat(req: ChatRequest) -> StreamingResponse: # RAG, plan et choix du modèle code partent ensemble au lieu de # s'enchaîner en bloquant le premier token. want_rag = cfg.get("rag_enabled", False) + # Un plan « from scratch » n'a de sens que pour une NOUVELLE construction. + # Pour une correction ou la suite d'un travail (l'appli existe déjà, + # session code en cours, formulation de suivi), il est hors-sujet et + # perturbe : on ne replanifie pas l'architecture à chaque message. + is_modification = prev_code or bool(_workspace_listing()) + new_build = use_code and not is_modification want_plan = cfg.get("plan_mode", True) and ( - use_code or enhance.needs_plan(req.content) + new_build or (not use_code and enhance.needs_plan(req.content)) ) if want_rag or want_plan or use_code: yield _sse("status", {"message": "Préparation du contexte…"})