Etape 3 + refonte visuelle + corrections etape 2

This commit is contained in:
Chevallier
2026-07-07 09:57:21 +02:00
parent 17e887b268
commit 7b1a975f06
48 changed files with 6551 additions and 59 deletions

View File

@@ -0,0 +1,50 @@
import logging
import httpx
from app.core.config import settings
from app.schemas.qa_report import QARawResults, RuntimeOutput
logger = logging.getLogger(__name__)
async_client = httpx.AsyncClient(verify=False)
async def run_project_qa(repo_name: str) -> QARawResults:
"""
Sollicite l'API du conteneur persistant arc-sandbox pour effectuer
une analyse de qualité et sécurité statique (Semgrep).
"""
sandbox_url = f"http://arc-sandbox:8004/scan/{repo_name}"
logger.info(f"[QA Client] Envoi de la requête de scan à la sandbox : {sandbox_url}")
try:
response = await async_client.post(sandbox_url, timeout=120.0)
if response.status_code == 200:
data = response.json()
return QARawResults.model_validate(data.get("results"))
else:
logger.error(f"[QA Client] Erreur de la Sandbox (Status {response.status_code}): {response.text}")
return QARawResults(
is_executable=False,
runtime=RuntimeOutput(
exit_code=response.status_code,
stdout="",
stderr=f"Erreur HTTP Sandbox: {response.text}",
duration_seconds=0,
timeout_triggered=False
),
issues=[]
)
except Exception as e:
logger.error(f"[QA Client] Impossible de joindre l'API de la Sandbox : {str(e)}")
return QARawResults(
is_executable=False,
runtime=RuntimeOutput(
exit_code=-1,
stdout="",
stderr=f"Exception de connexion QA Client: {str(e)}",
duration_seconds=0,
timeout_triggered=False
),
issues=[]
)