# Projet ARC

## Contexte du Projet
ARC est une plateforme d'automatisation du développement logiciel basée sur un workflow multi-agents (IA). Le système orchestre plusieurs modèles d'IA spécialisés pour transformer un besoin utilisateur en un code source validé, testé et stocké.

## Lancer le projet

Avant de lancer le projet, il est important de créer le fichier .env dans le dossier */backend* et de remplir les éléments suivant :
```bash
LLM_BASE_URL=
LLM_API_KEY=
LLM_MODEL=
LLM_MODEL_DEV=
LLM_MODEL_QA=
EMBEDDING_BASE_URL=
EMBEDDING_MODEL=
GITEA_ADMIN_USER=
GITEA_ADMIN_PASSWORD=
```

Une fois les informations fournies, éxectuer la commande suivante pour lancer le projet
```bash
python .\orchestrator.py
```

* L'interface utilisateur conversationnelle se trouve sur l'adresse suivant : http://localhost:8001/
* Le Gitea se trouve à l'adresse suivante : http://localhost:3000/
___

## Arrêter le projet

```bash
python .\stop_project.py
```
___

## Visualiser les logs

```bash
docker compose -p arc-app logs -f  
```
___

## Structure du projet
```bash
ARC/
├── backend/
│   ├── app/
│   │   ├── agents/                     # Gestion agents IA
│   │   │   ├── pm_agent.py
│   │   │   ├── dev_agent.py
│   │   │   └── qa_agent.py
│   │   │
│   │   ├── api/
│   │   │   └── routes/
│   │   │       ├── health.py
│   │   │       └── workflow.py
│   │   │
│   │   ├── core/
│   │   │   ├── config.py
│   │   │   └── logging.py
│   │   │
│   │   ├── graph/                      # LangGraph
│   │   │   ├── state.py
│   │   │   ├── nodes.py
│   │   │   └── workflow.py
│   │   │
│   │   ├── llm/                        # appels modèles
│   │   │   ├── client.py               # wrapper d’appel
│   │   │   ├── prompts.py              # prompts centralisés
│   │   │
│   │   ├── repositories/               # accès externes, Qdrant / Redis / stockage
│   │   │   ├── qdrant_repository.py
│   │   │   ├── redis_repository.py
│   │   │   └── project_repository.py
│   │   │
│   │   ├── sandbox/
│   │   │   ├── qa_client.py
│   │   │   ├── main.py                 # Code exec dans le container sandbox
│   │   │   └── Dockerfile.qa
│   │   │
│   │   ├── schemas/                    # Pydantic 
│   │   │   ├── api.py
│   │   │   ├── spec.py
│   │   │   ├── code_output.py
│   │   │   └── qa_report.py
│   │   │
│   │   ├── services/
│   │   │   ├── workflow_service.py
│   │   │   ├── embedding_service.py
│   │   │   ├── retrieval_service.py
│   │   │   └── delivery_service.py
│   │   │
│   │   └─── main.py
│   │
│   ├── public/
│   │   ├── logo_dark.png
│   │   └── logo_light.png
│   │
│   ├── tests/
│   │   ├── test_health.py
│   │   ├── test_workflow.py
│   │   ├── test_agents.py
│   │   ├── test_gemma.py
│   │   ├── test_mistral.py
│   │   ├── test_qdrant.py
│   │   └── test_snowflake.py
│   │
│   ├── .env                          # IMPORTANT élément à remplir
│   ├── chainlit_app.py
│   ├── chainlit_fr_FR.md
│   ├── docker-compose-ai.yml         # Conteneurs pour les agents et l'embedding
│   ├── docker-compose-infra.yml      # Conteneurs pour les BDD
│   ├── docker-compose-sandbox.yml    # Conteneur pour la sandbox/qa
│   ├── docker-compose.yml            # Conteneur de l'application
│   ├── Dockerfile
│   ├── README.md
│   ├── requirements.txt
│   └── start.sh                      # Lance les applications
│
└── orchestrator.py                   # Lance le projet
```