{"id":28454241,"url":"https://github.com/kybaloo/chatbot","last_synced_at":"2026-04-05T23:32:06.149Z","repository":{"id":293153488,"uuid":"974469394","full_name":"kybaloo/chatbot","owner":"kybaloo","description":"Une API de chatbot développée avec FastAPI, conçue pour être déployée sur AWS Lambda via Mangum","archived":false,"fork":false,"pushed_at":"2025-06-08T21:50:04.000Z","size":249,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"kybaloo","last_synced_at":"2025-06-28T06:36:33.585Z","etag":null,"topics":["aws","chatbot","docker","fastapi","jenkins","make","python"],"latest_commit_sha":null,"homepage":"https://4y9lvphtwh.execute-api.eu-west-3.amazonaws.com/docs/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kybaloo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-28T20:35:14.000Z","updated_at":"2025-06-08T21:50:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"8ba7688b-2600-45c4-ab59-6de73a5cb979","html_url":"https://github.com/kybaloo/chatbot","commit_stats":null,"previous_names":["kybaloo/chatbot"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/kybaloo/chatbot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kybaloo%2Fchatbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kybaloo%2Fchatbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kybaloo%2Fchatbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kybaloo%2Fchatbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kybaloo","download_url":"https://codeload.github.com/kybaloo/chatbot/tar.gz/refs/heads/kybaloo","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kybaloo%2Fchatbot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31454197,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"ssl_error","status_checked_at":"2026-04-05T21:22:51.943Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","chatbot","docker","fastapi","jenkins","make","python"],"created_at":"2025-06-06T19:00:51.042Z","updated_at":"2026-04-05T23:32:06.137Z","avatar_url":"https://github.com/kybaloo.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🤖Chatbot Telegram avec Mistral AI\n\n\u003cdiv align=\"center\"\u003e\n\n[![Version](https://img.shields.io/badge/version-1.0.3-blue.svg)](./version)\n[![Python](https://img.shields.io/badge/Python-3.12+-blue.svg)](https://www.python.org/)\n[![FastAPI](https://img.shields.io/badge/FastAPI-0.104+-green.svg)](https://fastapi.tiangolo.com/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)\n\n[![CI/CD](https://github.com/kybaloo/chatbot/actions/workflows/ci-cd.yml/badge.svg)](https://github.com/kybaloo/chatbot/actions/workflows/ci-cd.yml)\n[![CodeQL](https://github.com/kybaloo/chatbot/actions/workflows/codeql.yml/badge.svg)](https://github.com/kybaloo/chatbot/security/code-scanning)\n[![Security](https://img.shields.io/badge/Security-Policy-green.svg)](./SECURITY.md)\n[![Code of Conduct](https://img.shields.io/badge/Code%20of%20Conduct-Contributor%20Covenant-orange.svg)](./CODE_OF_CONDUCT.md)\n\n[![Contributors](https://img.shields.io/github/contributors/kybaloo/chatbot.svg)](./CONTRIBUTORS.md)\n[![Issues](https://img.shields.io/github/issues/kybaloo/chatbot.svg)](https://github.com/kybaloo/chatbot/issues)\n[![Pull Requests](https://img.shields.io/github/issues-pr/kybaloo/chatbot.svg)](https://github.com/kybaloo/chatbot/pulls)\n[![GitHub](https://img.shields.io/badge/GitHub-kybaloo%2Fchatbot-blue?logo=github)](https://github.com/kybaloo/chatbot)\n\n\u003c/div\u003e\n\nUn **chatbot intelligent** qui connecte Telegram à l'API Mistral AI pour offrir des conversations intelligentes aux utilisateurs. Le projet inclut une **API REST complète** avec FastAPI et est conçu pour être déployé sur **AWS** avec persistance des conversations via DynamoDB.\n\n## 📋 Table des matières\n\n- [🌟 Fonctionnalités](#-fonctionnalités)\n- [🏗️ Architecture](#️-architecture)\n- [🛠️ Technologies](#️-technologies)\n- [🚀 Installation](#-installation)\n- [▶️ Utilisation](#️-utilisation)\n- [📚 Documentation API](#-documentation-api)\n- [🤖 Commandes Bot](#-commandes-bot)\n- [🔧 Configuration](#-configuration)\n- [🚀 Déploiement](#-déploiement)\n- [🧪 Tests](#-tests)\n- [📂 Structure du projet](#-structure-du-projet)\n- [🔄 CI/CD](#-ci-cd)\n- [🛡️ Sécurité](#️-sécurité)\n- [🤝 Contribution](#-contribution)\n- [📝 Licence](#-licence)\n\n## 🌟 Fonctionnalités\n\n### 🤖 Intelligence Artificielle\n- **Chat intelligent** avec l'API Mistral AI (Large, Medium, Small)\n- **Personnalisation des modèles** selon les préférences utilisateur\n- **Gestion contextuelle** des conversations longues\n- **Réponses adaptatives** basées sur l'historique\n\n### 💬 Bot Telegram Avancé\n- **Interface intuitive** avec boutons inline et commandes\n- **Gestion multi-utilisateurs** avec sessions isolées\n- **Historique des conversations** accessible et navigable\n- **Webhook temps réel** pour une réactivité optimale\n- **Commandes riches** (/start, /help, /history, /settings, /models)\n\n### 🌐 API REST Complète\n- **Endpoints RESTful** pour intégrations tierces\n- **Documentation interactive** (Swagger/OpenAPI)\n- **Authentification** et validation des données\n- **Format JSON standardisé** pour tous les échanges\n\n### ☁️ Infrastructure Cloud-Native\n- **Déploiement AWS** avec Lambda, API Gateway, DynamoDB\n- **Haute disponibilité** et auto-scaling\n- **Monitoring** avec CloudWatch\n- **Infrastructure as Code** (CloudFormation/SAM)\n\n### 🔧 DevOps \u0026 Qualité\n- **Pipeline CI/CD Jenkins** automatisé\n- **Tests complets** (unitaires, intégration, end-to-end)\n- **Containerisation Docker** pour tous les environnements\n- **Code quality** avec Black, Flake8, MyPy\n- **Versioning sémantique** automatisé\n\n## 🏗️ Architecture\n\nLe projet suit une **architecture en couches moderne** pour garantir la maintenabilité, la testabilité et l'évolutivité :\n\n```mermaid\ngraph TB\n   subgraph \"🎯 Présentation Layer\"\n      TG[📱 Telegram Bot\u003cbr/\u003eCommands \u0026 Interactions]\n      API[🌐 FastAPI REST API\u003cbr/\u003eHTTP Endpoints]\n      WH[🔗 Webhook Handlers\u003cbr/\u003eReal-time Events]\n   end\n   \n   subgraph \"⚙️ Business Logic Layer\"\n      CS[💬 Conversation Service\u003cbr/\u003eChat Management]\n      AIS[🧠 AI Service\u003cbr/\u003eMistral AI Integration]\n      US[👤 User Service\u003cbr/\u003eUser Management]\n   end\n   \n   subgraph \"🗄️ Data Access Layer\"\n      CR[💾 Conversation Repository\u003cbr/\u003eCRUD Operations]\n      UR[👥 User Repository\u003cbr/\u003eUser Data]\n      CC[⚙️ Config Cache\u003cbr/\u003eSettings \u0026 Models]\n   end\n   \n   subgraph \"💽 External Dependencies\"\n      DB[🗃️ DynamoDB\u003cbr/\u003ePersistent Storage]\n      MAI[🤖 Mistral AI API\u003cbr/\u003eLLM Models]\n      ENV[📄 Environment\u003cbr/\u003eConfiguration]\n   end\n   \n   %% Connections\n   TG --\u003e CS\n   TG --\u003e US\n   API --\u003e CS\n   API --\u003e US\n   WH --\u003e CS\n   \n   CS --\u003e AIS\n   CS --\u003e CR\n   AIS --\u003e MAI\n   US --\u003e UR\n   CS --\u003e CC\n   \n   CR --\u003e DB\n   UR --\u003e DB\n   CC --\u003e ENV\n   \n   %% Styling\n   classDef presentation fill:#e1f5fe\n   classDef business fill:#f3e5f5\n   classDef data fill:#e8f5e8\n   classDef external fill:#fff3e0\n   \n   class TG,API,WH presentation\n   class CS,AIS,US business\n   class CR,UR,CC data\n   class DB,MAI,ENV external\n```\n\n### Composants principaux\n\n- **Models** : Définitions des entités métier (User, Conversation, Message, AIModel)\n- **Services** : Logique métier et orchestration\n- **Repositories** : Accès aux données et abstraction de persistance\n- **API Routes** : Endpoints REST avec validation\n- **Bot Handlers** : Gestion des commandes et interactions Telegram\n- **Utils** : Fonctions utilitaires, logging, helpers\n\n## 🛠️ Technologies\n\n### 🐍 Backend \u0026 Framework\n- **[Python 3.12+](https://www.python.org/)** - Langage principal\n- **[FastAPI](https://fastapi.tiangolo.com/)** - Framework web moderne et performant\n- **[Pydantic](https://docs.pydantic.dev/)** - Validation et sérialisation des données\n- **[Uvicorn](https://www.uvicorn.org/)** - Serveur ASGI haute performance\n\n### 🤖 Intelligence Artificielle \u0026 Bot\n- **[Mistral AI API](https://mistral.ai/)** - Modèles de langage avancés\n- **[Python Telegram Bot](https://python-telegram-bot.readthedocs.io/)** - SDK Telegram Bot API\n\n### ☁️ Cloud \u0026 Infrastructure\n- **[AWS Lambda](https://aws.amazon.com/lambda/)** - Compute serverless\n- **[AWS API Gateway](https://aws.amazon.com/api-gateway/)** - Gestion d'API\n- **[AWS DynamoDB](https://aws.amazon.com/dynamodb/)** - Base de données NoSQL\n- **[AWS EC2](https://aws.amazon.com/ec2/)** - Machines virtuelles\n- **[AWS CloudFormation](https://aws.amazon.com/cloudformation/)** - Infrastructure as Code\n- **[Mangum](https://github.com/jordaneremieff/mangum)** - Adaptateur ASGI pour Lambda\n\n### 🔧 DevOps \u0026 Outils\n- **[Docker](https://www.docker.com/)** - Containerisation\n- **[Jenkins](https://www.jenkins.io/)** - CI/CD pipeline\n- **[AWS SAM](https://aws.amazon.com/serverless/sam/)** - Déploiement serverless\n- **[Black](https://black.readthedocs.io/)** - Formatage de code\n- **[Flake8](https://flake8.pycqa.org/)** - Linting\n- **[Pytest](https://pytest.org/)** - Framework de tests\n\n## 🚀 Installation\n\n### 📋 Prérequis\n\n- **Python 3.12+** ([télécharger](https://www.python.org/downloads/))\n- **Git** ([télécharger](https://git-scm.com/))\n- **Docker** (optionnel) ([télécharger](https://www.docker.com/))\n- **AWS CLI** (pour déploiement) ([guide d'installation](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html))\n- **Compte Telegram** et **token bot** ([guide BotFather](https://core.telegram.org/bots#botfather))\n- **Clé API Mistral AI** ([obtenir ici](https://console.mistral.ai/))\n\n### 🔧 Installation locale\n\n#### 1️⃣ Cloner le projet\n\n```powershell\ngit clone https://github.com/kybaloo/chatbot.git\ncd chatbot\n```\n\n#### 2️⃣ Configuration de l'environnement\n\n**Option A : Utilisation du script PowerShell (Windows - recommandé)**\n```powershell\n# Créer l'environnement virtuel et installer les dépendances\n.\\build.ps1 venv\n.\\build.ps1 install\n\n# Ou en une seule commande\n.\\build.ps1 venv; .\\build.ps1 install\n```\n\n**Option B : Utilisation de Make (Linux/Mac)**\n```bash\nmake venv\nsource .venv/bin/activate\nmake install\n```\n\n**Option C : Installation manuelle**\n```powershell\npython -m venv .venv\n.venv\\Scripts\\activate  # Windows\n# source .venv/bin/activate  # Linux/Mac\npip install -r requirements.txt\n```\n\n#### 3️⃣ Configuration des variables d'environnement\n\nCréez un fichier `.env` à la racine du projet :\n\n```env\n# 🌍 Configuration de l'environnement\nENV_NAME=local\nLOG_LEVEL=INFO\n\n# ☁️ Configuration AWS\nAWS_REGION_NAME=eu-west-3\nDYNAMO_TABLE=chatbot-conversations-local\n\n# 🤖 Configuration IA\nMISTRAL_API_KEY=votre_cle_mistral_ici\n\n# 📱 Configuration Telegram\nTELEGRAM_BOT_TOKEN=votre_token_bot_ici\nWEBHOOK_URL=https://votre-domaine.com/webhook/telegram\n\n# ⚙️ Configuration application\nCONVERSATION_TTL_DAYS=30\nUSE_LOCAL_DB=true\n```\n\n#### 4️⃣ Configuration du bot Telegram\n\n1. Discutez avec [@BotFather](https://t.me/BotFather) sur Telegram\n2. Créez un nouveau bot avec `/newbot`\n3. Notez le token fourni et ajoutez-le dans `.env`\n4. Configurez les commandes du bot avec `/setcommands` :\n\n```\nstart - Démarrer une nouvelle conversation\nhelp - Afficher l'aide et les commandes disponibles\nhistory - Consulter l'historique des conversations\nsettings - Configurer les préférences utilisateur\nnew - Créer une nouvelle conversation\nmodels - Changer de modèle IA\n```\n\n## ▶️ Utilisation\n\n### 🚀 Démarrage rapide\n\n#### Mode développement (local)\n\n```powershell\n# Démarrer l'application FastAPI avec reload automatique\nmake run-dev\n\n# Ou directement avec uvicorn\nuvicorn src.main:app --reload --host 0.0.0.0 --port 8000\n```\n\nL'application sera accessible sur :\n- **API** : http://localhost:8000\n- **Documentation** : http://localhost:8000/docs\n- **Health check** : http://localhost:8000/\n\n#### Mode production (Docker)\n\n```powershell\n# Construire l'image Docker\nmake build\n\n# Lancer le conteneur\nmake run-local\n\n# Ou directement avec Docker\ndocker build -t chatbot:latest .\ndocker run -p 80:80 -p 8000:8000 --env-file .env chatbot:latest\n```\n\n### 🧪 Validation de l'installation\n\n#### Tests automatisés\n\n```powershell\n# Tests complets\nmake test\n\n# Tests unitaires uniquement\nmake test-unit\n\n# Tests d'intégration\nmake test-integration\n\n# Validation de la configuration\npython scripts/test_config.py\n```\n\n#### Test manuel du bot\n\n1. Ouvrez Telegram et recherchez votre bot\n2. Envoyez `/start` pour commencer\n3. Testez une question : \"Bonjour, comment allez-vous ?\"\n4. Vérifiez l'historique avec `/history`\n\n## ▶️ Exécution\n\n### Localement avec uvicorn (développement)\n\n```bash\n# Exécuter l'API FastAPI et le bot Telegram\nmake run-dev\n\n# Ou avec uvicorn directement\nuvicorn src.main:app --reload --host 0.0.0.0 --port 8000\n```\n\n### Avec Docker\n\n1. Construire l'image\n   ```bash\n   make build\n   ```\n   Ou directement avec docker :\n   ```bash\n   docker build -t chatbot:latest .\n   ```\n\n2. Exécuter le conteneur\n   ```bash\n   # Avec le Makefile\n   make run-local\n   \n   # Ou directement avec Docker\n   docker run -p 80:80 -p 8000:8000 -v $(pwd)/.env:/code/.env chatbot:latest\n   ```\n\n### Déploiement sur AWS\n\n```bash\n# Déployer l'infrastructure sur AWS\nmake deploy env=dev\n\n# Configurer le webhook Telegram (uniquement pour prod/preprod)\nmake setup-telegram-webhook\n```\n\n## 📚 Documentation API\n\nUne fois l'application démarrée, la documentation interactive est disponible :\n\n### 🔗 Endpoints principaux\n\n- **📋 Documentation Swagger** : http://localhost:8000/docs\n- **📖 Documentation ReDoc** : http://localhost:8000/redoc\n- **💚 Health Check** : http://localhost:8000/\n- **💬 Chat API** : `POST /chat`\n- **📚 Conversations** : `GET /conversations/{user_id}`\n- **🔗 Webhook Telegram** : `POST /webhook/telegram`\n\n### 📝 Exemples d'utilisation API\n\n#### Chat avec l'IA\n```powershell\n# Test du chat via curl\ncurl -X POST \"http://localhost:8000/chat\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"question\": \"Bonjour, comment allez-vous ?\",\n    \"user_id\": \"test_user\",\n    \"conversation_id\": \"conv_123\"\n  }'\n```\n\n#### Récupération des conversations\n```powershell\ncurl -X GET \"http://localhost:8000/conversations/test_user\"\n```\n\n## 🤖 Commandes Bot\n\nLe bot Telegram supporte les commandes suivantes :\n\n| Commande | Description | Utilisation |\n|----------|-------------|-------------|\n| `/start` | 🚀 Démarrer une nouvelle conversation | Première utilisation du bot |\n| `/help` | ❓ Afficher l'aide et les commandes | À tout moment pour obtenir de l'aide |\n| `/history` | 📚 Consulter l'historique des conversations | Voir et reprendre d'anciennes conversations |\n| `/settings` | ⚙️ Configurer les préférences utilisateur | Personnaliser l'expérience |\n| `/new` | ➕ Créer une nouvelle conversation | Démarrer un nouveau sujet |\n| `/models` | 🧠 Changer de modèle IA | Choisir entre Mistral Large, Medium, Small |\n\n### 💬 Interaction naturelle\n\nEn plus des commandes, vous pouvez simplement envoyer des messages texte au bot pour engager une conversation naturelle avec l'IA.\n\n## 🔧 Configuration\n\n### 📄 Variables d'environnement\n\nLe projet utilise un fichier `.env` pour la configuration. Voici toutes les variables disponibles :\n\n```env\n# 🌍 Environnement\nENV_NAME=local                    # Nom de l'environnement (local/dev/prod)\nLOG_LEVEL=INFO                    # Niveau de log (DEBUG/INFO/WARNING/ERROR)\n\n# ☁️ AWS Configuration\nAWS_REGION_NAME=eu-west-3         # Région AWS\nDYNAMO_TABLE=chatbot-conversations # Nom de la table DynamoDB\nAWS_PROFILE=default               # Profil AWS (optionnel)\n\n# 🤖 Mistral AI\nMISTRAL_API_KEY=your_api_key_here # Clé API Mistral AI (obligatoire)\n\n# 📱 Telegram Bot\nTELEGRAM_BOT_TOKEN=your_bot_token # Token du bot Telegram (obligatoire)\nWEBHOOK_URL=https://example.com   # URL webhook pour production\n\n# ⚙️ Application\nCONVERSATION_TTL_DAYS=30          # Durée de conservation des conversations\nUSE_LOCAL_DB=true                 # Utiliser une base locale pour dev\nENABLE_TELEGRAM_BOT=true          # Activer/désactiver le bot Telegram\n```\n\n### 🎯 Modèles Mistral AI supportés\n\n| Modèle | Description | Utilisation recommandée |\n|--------|-------------|-------------------------|\n| **mistral-large-latest** | 🚀 Le plus puissant | Tâches complexes, raisonnement avancé |\n| **mistral-medium-latest** | ⚖️ Équilibré | Usage général, bon rapport qualité/prix |\n| **mistral-small-latest** | ⚡ Rapide et économique | Tâches simples, réponses rapides |\n\n## 🚀 Déploiement\n\n### 🌍 Environnements\n\nLe projet supporte trois environnements :\n\n| Environnement | Description | Branche Git | URL |\n|---------------|-------------|-------------|-----|\n| **Development** | Tests et développement | `dev` | `https://dev-api.example.com` |\n| **Preprod** | Validation avant production | `preprod` | `https://preprod-api.example.com` |\n| **Production** | Environnement en production | `main` | `https://api.example.com` |\n\n### ☁️ Déploiement AWS\n\n#### Prérequis déploiement\n- AWS CLI configuré avec les permissions appropriées\n- AWS SAM CLI installé\n- Variables d'environnement MISTRAL_API_KEY et TELEGRAM_BOT_TOKEN définies\n\n#### Déploiement automatique (recommandé)\n\n```powershell\n# Déployer vers dev\nmake deploy env=dev\n\n# Déployer vers preprod\nmake deploy env=preprod\n\n# Déployer vers production\nmake deploy env=prod\n```\n\n#### Déploiement manuel\n\n```powershell\n# 1. Construire le projet\nsam build --template infrastructure/template.yaml\n\n# 2. Déployer\nsam deploy --resolve-s3 --template-file .aws-sam/build/template.yaml \\\n  --stack-name \"chatbot-stack-dev\" \\\n  --capabilities CAPABILITY_IAM \\\n  --region eu-west-3 \\\n  --parameter-overrides \\\n    EnvironmentName=dev \\\n    TelegramBotToken=$env:TELEGRAM_BOT_TOKEN \\\n    MistralApiKey=$env:MISTRAL_API_KEY\n\n# 3. Configurer le webhook (production uniquement)\nmake setup-telegram-webhook\n```\n\n### 🐳 Déploiement Docker\n\n```powershell\n# Build local\ndocker build -t chatbot:latest .\n\n# Run local\ndocker run -p 8000:8000 --env-file .env chatbot:latest\n\n# Push vers registry\ndocker tag chatbot:latest your-registry/chatbot:v1.0.0\ndocker push your-registry/chatbot:v1.0.0\n```\n\n## 🧪 Tests\n\n### 🎯 Types de tests\n\nLe projet inclut une suite de tests complète :\n\n```powershell\n# 🔬 Tests unitaires (rapides)\nmake test-unit\npytest tests/models tests/repositories tests/services -v\n\n# 🔗 Tests d'intégration\nmake test-integration\npytest tests/test_api_integration.py -v\n\n# 🌐 Tests end-to-end\nmake test-endpoint  # Teste les endpoints déployés\n\n# 📊 Tests avec couverture\npytest --cov=src --cov-report=html --cov-report=term\n\n# 🔍 Tests de qualité du code\nmake lint    # Vérification avec flake8\nmake format  # Formatage avec black\n```\n\n### 📈 Métriques de qualité\n\n- **Couverture de code** : \u003e 80%\n- **Complexité cyclomatique** : \u003c 10\n- **Conformité PEP8** : 100%\n- **Tests** : Unitaires + Intégration + E2E\n\n## 📂 Structure du projet\n\n```\nchatbot/\n├── 📋 README.md                    # Documentation principale\n├── 📄 requirements.txt             # Dépendances Python\n├── 📋 pyproject.toml               # Configuration du projet Python\n├── 📄 version                      # Version actuelle\n├── 📋 CHANGELOG.md                 # Historique des versions\n├── ⚖️ LICENSE                      # Licence MIT\n├── 🐳 Dockerfile                   # Image Docker\n├── 🔧 Makefile                     # Commandes utilitaires\n├── 🔧 Jenkinsfile                  # Pipeline CI/CD\n├── 🔧 execute.ps1                  # Scripts PowerShell\n├── 🔧 deploy.ps1                   # Script de déploiement\n│\n├── 🏗️ infrastructure/              # Infrastructure as Code\n│   └── 📄 template.yaml            # CloudFormation SAM template\n│\n├── 📝 scripts/                     # Scripts utilitaires\n│   ├── 🧪 test_config.py           # Validation configuration\n│   ├── 🔧 setup_ngrok_webhook.py   # Configuration webhook local\n│   ├── 🗄️ create_local_table.py    # Création table DynamoDB locale\n│   └── 🔍 validate_project.py      # Validation du projet\n│\n├── 🏗️ src/                         # Code source principal\n│   ├── 📱 main.py                  # Point d'entrée FastAPI\n│   │\n│   ├── 🌐 api/                     # Couche API REST\n│   │   ├── 📄 routes.py            # Définition des routes\n│   │   └── 📄 __init__.py\n│   │\n│   ├── 🤖 bot/                     # Bot Telegram\n│   │   ├── 📄 telegram_bot.py      # Logique du bot Telegram\n│   │   └── 📄 __init__.py\n│   │\n│   ├── ⚙️ config/                  # Configuration\n│   │   ├── 📄 settings.py          # Variables d'environnement\n│   │   └── 📄 __init__.py\n│   │\n│   ├── 🏗️ models/                  # Modèles de données\n│   │   ├── 👤 user.py              # Modèle utilisateur\n│   │   ├── 💬 conversation.py      # Modèle conversation\n│   │   ├── 🧠 ai_model.py          # Modèles IA Mistral\n│   │   └── 📄 __init__.py\n│   │\n│   ├── 🗄️ repositories/            # Couche d'accès aux données\n│   │   ├── 📄 base_repository.py   # Repository de base\n│   │   ├── 💬 conversation_repository.py # Repository conversations\n│   │   └── 📄 __init__.py\n│   │\n│   ├── ⚙️ services/                # Couche logique métier\n│   │   ├── 📄 base_service.py      # Service de base\n│   │   ├── 💬 conversation_service.py # Service conversations\n│   │   ├── 🧠 ai_service.py        # Service IA Mistral\n│   │   └── 📄 __init__.py\n│   │\n│   └── 🛠️ utils/                   # Utilitaires\n│       ├── 📄 helpers.py           # Fonctions auxiliaires\n│       ├── 📋 logger.py            # Configuration logging\n│       └── 📄 __init__.py\n│\n└── 🧪 tests/                       # Tests automatisés\n    ├── 📄 conftest.py              # Configuration pytest\n    ├── 📄 test_main.py             # Tests API principale\n    ├── 📄 test_api_integration.py  # Tests d'intégration\n    │\n    ├── 🏗️ models/                  # Tests des modèles\n    │   └── 💬 test_conversation.py\n    │\n    ├── 🗄️ repositories/            # Tests des repositories\n    │   └── 💬 test_conversation_repository.py\n    │\n    └── ⚙️ services/                # Tests des services\n        ├── 🧠 test_ai_service.py\n        └── 💬 test_conversation_service.py\n```\n\n## 🔄 CI/CD\n\n### 🔧 Pipeline Jenkins\n\nLe projet utilise Jenkins pour l'automatisation complète du cycle de développement :\n\n```mermaid\ngraph LR\n    A[🔧 Push Code] --\u003e B[🏗️ Build]\n    B --\u003e C[🧪 Tests]\n    C --\u003e D[📊 Quality]\n    D --\u003e E[🐳 Docker]\n    E --\u003e F[☁️ Deploy AWS]\n    F --\u003e G[🧪 E2E Tests]\n    G --\u003e H[🚀 Production]\n```\n\n#### Étapes du pipeline\n\n1. **🔧 Initialisation** - Setup de l'environnement\n2. **🧪 Tests unitaires** - Validation du code\n3. **📊 Qualité du code** - Formatage et linting\n4. **🏗️ Build** - Construction des artefacts\n5. **☁️ Déploiement AWS** - Via SAM/CloudFormation\n6. **🧪 Tests d'intégration** - Validation des endpoints\n7. **🔗 Configuration webhook** - Setup Telegram\n8. **📋 Notifications** - Alertes de succès/échec\n\n### 🔀 Workflow Git\n\n- **`main`** → Production automatique\n- **`preprod`** → Préproduction automatique\n- **`dev`** → Développement automatique\n- **`feature/*`** → Tests uniquement\n\n## 🛡️ Sécurité\n\n### 🔐 Authentification \u0026 Autorisation\n- **Variables d'environnement** pour tous les secrets\n- **AWS IAM** avec permissions minimales\n- **Secrets Jenkins** pour le CI/CD\n- **Validation Pydantic** de toutes les entrées\n\n### 🔒 Protection des données\n- **Chiffrement en transit** (HTTPS/TLS)\n- **Chiffrement au repos** (DynamoDB)\n- **Isolation des environnements**\n- **Logs sécurisés** (pas de secrets loggés)\n\n### 🛡️ Bonnes pratiques appliquées\n- **Input validation** systématique\n- **Error handling** robuste\n- **Rate limiting** (future implémentation)\n- **Monitoring** continu avec CloudWatch\n\n## 🤝 Contribution\n\n### 🎯 Guide de contribution\n\n1. **📋 Issues** - Signaler un bug ou proposer une fonctionnalité\n2. **🍴 Fork** - Créer votre propre copie du projet\n3. **🌿 Branch** - Créer une branche feature/bugfix\n4. **✅ Tests** - Ajouter/modifier les tests appropriés\n5. **🎨 Code style** - Respecter les conventions (Black + Flake8)\n6. **📝 Documentation** - Mettre à jour si nécessaire\n7. **🔧 Pull Request** - Créer une PR avec description détaillée\n\n### 📏 Standards de qualité\n\n- **Couverture de tests** : Minimum 80%\n- **Documentation** : Docstrings pour toutes les fonctions publiques\n- **Type hints** : Utilisation systématique\n- **Code style** : Conformité PEP8 via Black\n- **Commit messages** : Format conventionnel\n\n### 🔄 Workflow de développement\n\n```powershell\n# 1. Cloner et setup\ngit clone https://github.com/kybaloo/chatbot.git\ncd chatbot\nmake venv \u0026\u0026 .venv\\Scripts\\activate \u0026\u0026 make install\n\n# 2. Créer une branche\ngit checkout -b feature/ma-nouvelle-fonctionnalite\n\n# 3. Développer avec tests\n# ... votre code ...\nmake test  # S'assurer que tous les tests passent\n\n# 4. Qualité du code\nmake format  # Formatage automatique\nmake lint    # Vérification du style\n\n# 5. Commit et push\ngit add .\ngit commit -m \"feat: ajouter nouvelle fonctionnalité\"\ngit push origin feature/ma-nouvelle-fonctionnalite\n\n# 6. Créer une Pull Request sur GitHub\n```\n\n## 📝 Licence\n\nCe projet est sous licence **MIT** - voir le fichier [LICENSE](LICENSE) pour plus de détails.\n\n### 🆓 Utilisation libre\n\n- ✅ **Usage commercial** autorisé\n- ✅ **Modification** autorisée  \n- ✅ **Distribution** autorisée\n- ✅ **Usage privé** autorisé\n- ℹ️ **Attribution** requise\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**🌟 Si ce projet vous aide, n'hésitez pas à lui donner une étoile ! ⭐**\n\n**Fait avec ❤️ par [kybaloo](https://github.com/kybaloo)**\n\n[![Version](https://img.shields.io/badge/version-1.0.1-blue.svg)](./version)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)\n[![Python](https://img.shields.io/badge/Python-3.12+-blue.svg)](https://www.python.org/)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkybaloo%2Fchatbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkybaloo%2Fchatbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkybaloo%2Fchatbot/lists"}