AI agent for managing agricultural supply chain operations in Morocco
# Agent agriculture Maroc
Un agent en ligne de commande qui suit les stocks agricoles, repère les
ruptures avant qu'elles arrivent et prépare des demandes de
réapprovisionnement. Les données vivent dans une base SQLite locale, les
calculs sont faits en Python, et Claude sert d'interface pour poser les
questions en français.
Le point de départ était simple : un responsable logistique veut savoir
"est-ce que je tiens jusqu'à la prochaine livraison de tomates ?" sans
ouvrir un tableur.
## Installation
```bash
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # puis mettre sa clé API
python main.py init
```
`init` crée les tables et charge un jeu de données de démonstration
(7 fournisseurs, 10 produits, une quinzaine de commandes). Avec `--reset`
il supprime la base existante d'abord.
## Utilisation
Le chat :
```bash
python main.py chat
```
```
Vous > est-ce qu'on risque une rupture sur les fraises ?
Vous > combien commander de pommes de terre ?
Vous > oui je confirme
```
Dans le chat, `/risques`, `/retards`, `/resume`, `/demandes` répondent
directement sans passer par le modèle, et `/oublie` vide l'historique de
conversation. `/aide` liste tout.
Les mêmes analyses sont accessibles sans API, ce qui est pratique pour un
cron ou juste pour débugger :
```bash
python main.py risques --niveau critique
python main.py retards
python main.py fournisseurs
python main.py rapport --sortie data/rapport.md
python main.py export --sortie data/risques.csv
```
Et les deux commandes qui écrivent en base :
```bash
python main.py receptionner 3 --quantite 2800
python main.py sortie Tomates 450 --motif "Livraison Casablanca"
python main.py sortie Fraises 60 --type perte --motif "Invendus"
```
## Comment le risque est calculé
Pour chaque produit :
```
jours_de_stock = stock_actuel / demande_quotidienne
```
Ensuite le stock est projeté jour par jour sur 14 jours, en ajoutant les
livraisons attendues à la date prévue. Le p …