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:
Chevallier
2026-07-17 17:12:25 +02:00
parent 9d464fb261
commit 75e035cc82
12 changed files with 248 additions and 411 deletions

View File

@@ -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()