Refactorisation du code, correction des quelques bugs, Clear de Readme principal, Ajout de l'entrée utilisateur pour la modification du nom de projet
This commit is contained in:
@@ -56,7 +56,7 @@ async def run_dev_agent(spec: dict, qa_feedback: list = None, repo_url: str = No
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"[Dev Agent] ❌ Échec de la génération/validation : {type(e).__name__}: {str(e)}")
|
||||
return _generate_fallback_code_output(spec)
|
||||
return _generate_fallback_code_output(spec, repo_url=repo_url, files=files)
|
||||
|
||||
async def _ensure_gitea_repo(base_name: str, repo_url: str = None) -> str:
|
||||
"""
|
||||
@@ -189,18 +189,46 @@ async def _deploy_to_gitea(code_data: ProjectCodeOutput, project_title: str, rep
|
||||
if os.path.exists(work_dir):
|
||||
shutil.rmtree(work_dir)
|
||||
|
||||
def _generate_fallback_code_output(spec: dict) -> dict:
|
||||
"""Génère un livrable minimal de secours en cas de crash du LLM."""
|
||||
def _generate_fallback_code_output(spec: dict, repo_url: str = None, files: list = None) -> dict:
|
||||
"""
|
||||
Génère un livrable de secours. Récupère et reconstruit l'état du code
|
||||
à partir des fichiers existants s'ils sont fournis, sinon génère un README d'erreur.
|
||||
"""
|
||||
logger.warning("[Dev Agent] Génération du package de secours (Fallback)")
|
||||
title = spec.get("title", "automation_script")
|
||||
|
||||
fallback = ProjectCodeOutput(
|
||||
spec_title=title,
|
||||
tree=["main.py", "README.md", "requirements.txt"],
|
||||
files=[
|
||||
GeneratedFile(path="main.py", content="import logging\nlogging.basicConfig(level=logging.INFO)\n\ndef main():\n logging.error('Le Dev Agent a rencontré une erreur de génération.')\n\nif __name__ == '__main__':\n main()"),
|
||||
GeneratedFile(path="README.md", content=f"# {title}\nGénération en mode fallback suite à une erreur technique."),
|
||||
GeneratedFile(path="requirements.txt", content="# Aucune dépendance externe définie (Fallback)\n")
|
||||
fallback_files = []
|
||||
fallback_tree = []
|
||||
|
||||
if files:
|
||||
for f in files:
|
||||
path = ""
|
||||
content = ""
|
||||
|
||||
if isinstance(f, dict):
|
||||
path = f.get("path") or f.get("filename") or f.get("name") or ""
|
||||
content = f.get("content") or f.get("code") or ""
|
||||
elif hasattr(f, "path") and hasattr(f, "content"):
|
||||
path = getattr(f, "path", "")
|
||||
content = getattr(f, "content", "")
|
||||
|
||||
if path:
|
||||
fallback_files.append(GeneratedFile(path=path, content=content))
|
||||
fallback_tree.append(path)
|
||||
|
||||
if not fallback_files:
|
||||
fallback_files = [
|
||||
GeneratedFile(
|
||||
path="README.md",
|
||||
content=f"# {title}\nErreur interne : le code n'a pas pu être généré par l'agent Dev lors du premier essai."
|
||||
)
|
||||
]
|
||||
fallback_tree = ["README.md"]
|
||||
|
||||
fallback = ProjectCodeOutput(
|
||||
repo_url=repo_url,
|
||||
spec_title=title,
|
||||
tree=fallback_tree,
|
||||
files=fallback_files
|
||||
)
|
||||
return fallback.model_dump()
|
||||
@@ -38,7 +38,7 @@ DERNIÈRE PRÉCISION / INPUT UTILISATEUR :
|
||||
{user_input}
|
||||
|
||||
IMPORTANT : Tu dois impérativement combiner les contraintes énoncées précédemment (comme le langage de programmation choisi, l'OS, etc.) avec cette nouvelle information pour enrichir la spécification existante.
|
||||
Réponds UNIQUEMENT avec du JSON valide. Aucun texte avant le JSON, aucun texte après le JSON."""
|
||||
"""
|
||||
))
|
||||
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user