Metadata-Version: 2.4
Name: proxycall-cli
Version: 0.1.0
Summary: CLI ProxyCall légère pour piloter l'API en local ou sur Render
Author: Équipe ProxyCall
Project-URL: Homepage, https://github.com/user/project
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: httpx>=0.25
Requires-Dist: python-dotenv>=1.0
Requires-Dist: rich>=13.0
Provides-Extra: twilio
Requires-Dist: twilio>=9; extra == "twilio"
Provides-Extra: gsheets
Requires-Dist: gspread>=5; extra == "gsheets"
Requires-Dist: google-auth>=2; extra == "gsheets"
Provides-Extra: dev
Requires-Dist: build>=1.0; extra == "dev"

# ProxyCall

Ce dépôt regroupe les services et intégrations permettant de gérer l'attribution de numéros proxy et le routage des appels. Les tests sont désormais centralisés dans le dossier `tests` et un script unique permet de lancer toute la suite.

## Installation rapide

1. Créez un environnement virtuel et installez les dépendances :
   ```bash
   python -m venv .venv
   source .venv/bin/activate
   pip install -r requirements.txt
   ```
2. Configurez les variables d'environnement nécessaires pour les services Twilio et Google Sheets lorsque vous souhaitez exécuter les tests live (voir ci-dessous).

## Exécution des tests

Le dossier `tests` contient trois catégories principales de scénarios, exécutables via `pytest`.

### 1. Tests unitaires et de service
- **Objectif :** valider la logique métier (routage d'appel, gestion des commandes, clients, interactions Twilio simulées, etc.).
- **Fichiers concernés :**
  - `tests/test_call_routing_service.py`
  - `tests/test_clients_service.py`
  - `tests/test_orders_service.py`
  - `tests/test_sheets_client_unit.py`
  - `tests/test_twilio_client_unit.py`
  - `tests/test_demo_scenarios.py`
- **Commande (PyCharm/terminal) :**
  ```bash
  python -m pytest tests/test_call_routing_service.py
  ```
  Ajustez le chemin vers le fichier ou utilisez `-k` pour cibler un test en particulier.

### 2. Tests démo hors-ligne
- **Objectif :** présenter les flux principaux sans appeler de services externes.
- **Fichiers concernés :**
  - `tests/client_repository_demo_test.py`
  - `tests/test_sheets_access_demo_test.py`
  - `tests/twilio_pools_demo_test.py`
- **Commande :**
  ```bash
  python -m pytest tests/client_repository_demo_test.py
  ```
  Ces tests peuvent être lancés sans configuration supplémentaire.

### 3. Tests live (intégrations réelles)
- **Objectif :** vérifier l'accès réel aux APIs Twilio et Google Sheets.
- **Fichiers concernés :**
  - `tests/client_repository_live_test.py`
  - `tests/test_sheets_access_live_test.py`
- **Activation :** par défaut ces tests sont ignorés. Pour les exécuter, définissez les variables requises :
  ```bash
  export PROXYCALL_RUN_LIVE=1
  export TWILIO_ACCOUNT_SID="..."
  export TWILIO_AUTH_TOKEN="..."
  export GOOGLE_SERVICE_ACCOUNT_FILE="path/vers/credentials.json"
  export GOOGLE_SHEET_NAME="NomDuSheet"
  python -m pytest tests/test_sheets_access_live_test.py
  ```

### Script unique
Pour exécuter l'ensemble des tests (unitaires, démo et live si les variables sont présentes), utilisez le script dédié depuis la racine du projet :
```bash
./run_tests.sh
```
Vous pouvez lui passer des arguments `pytest` supplémentaires, par exemple `./run_tests.sh -k call_routing`.

## Déploiement Render

Un blueprint Render (`render.yaml`) est fourni pour déployer l'API FastAPI sur Render avec `uvicorn app.main:app`. Le guide détaillé et la préparation de la CLI (.env.render pour l'URL/token uniquement) sont décrits dans `docs/deploiement_render.md`.

Pour consommer le backend depuis n'importe quel poste (ex. Windows), lancez la CLI avec `--render` afin d'envoyer les commandes (`create-client`, `pool-list`, etc.) vers l'API Render sécurisée par `PROXYCALL_API_TOKEN`.

### Distribution légère de la CLI
- Construire le bundle : `python -m pip install build && python -m build` génère une archive wheel/zip (`dist/`).
- Installation : `pip install proxycall-cli` (ou `pip install dist/proxycall_cli-<version>-py3-none-any.whl`).
- Utilisation : `python -m proxycall --render ...` ou via le binaire installé `proxycall-cli --render ...`.
- La CLI charge automatiquement `.env` puis `.env.render` à partir du répertoire courant ou de ses parents (résolution `find_dotenv`), sans dépendre de la racine du dépôt.
