Module de retour Client
Conception
Installation
1 - Ajouter le package dans les requirements
2 - Ajouter dans votre .env :
=> Pour la préprod/Prod :
#====================================== RETOUR CLIENT =======================================
EMAIL_CLIENT_RETOUR='test@test.fr'
SIREN_CLIENT='1245648'
LUCY_PROJET_TOKEN='dejodaejiodeaz' # Jeton d'appairage généré par Lucy (fiche projet > Intégrations)
DATE_MISE_EN_PRODUCTION='2024-12-30'
DATE_FIN_GARANTIE='2024-12-30'
# Assistant IA - serveur vLLM Revolucy (optionnel)
IA_API_KEY='xxxxx'
# Intégration OpenHands (RevoIA) : entièrement configurée côté Lucy (fiche projet > Configuration)
3 - Ajouter dans votre fichier settings.py :
INSTALLED_APPS = [
'retour_client',
]
'context_processors': [
'retour_client.context_processors.formulaire_retour_client',
]
########### Configuration RETOUR CLIENT.
EMAIL_CLIENT_RETOUR = env('EMAIL_CLIENT_RETOUR')
SIREN_CLIENT = env('SIREN_CLIENT')
LUCY_PROJET_TOKEN = env('LUCY_PROJET_TOKEN')
DATE_MISE_EN_PRODUCTION = env('DATE_MISE_EN_PRODUCTION')
DATE_FIN_GARANTIE = env('DATE_FIN_GARANTIE')
# Configuration Assistant IA (optionnel - pour le chatbot IA)
IA_API_KEY = env('IA_API_KEY', default=None)
IA_API_URL = 'https://api.revolucy.link/v1' # Serveur vLLM Revolucy (défaut)
IA_MODEL = 'qwen3.6' # Modèle par défaut
À quoi sert
LUCY_PROJET_TOKEN? Jeton d'appairage du projet, généré par Lucy dans la configuration du projet (fiche projet > Intégrations). Il sert à deux choses :
- Authentifier les API du module côté Lucy (
api/lucy/*) : le dashboard Lucy doit présenter ce jeton pour lire les données des tickets (repli transitoire surSIREN_CLIENTtant que le jeton n'est pas configuré).- Récupérer la configuration OpenHands depuis Lucy : l'activation, le mode et l'agent (propres au projet) ainsi que la clé d'API et l'URL du serveur (communes à l'entreprise) sont stockés dans la fiche projet Lucy et récupérés à la volée (cache 10 min). Il n'y a donc plus aucun secret OpenHands (ni token GitLab) à poser dans les settings de chaque déploiement.
4 - Ajouter dans votre fichier urls.py :
path('retour-client/', include("retour_client.urls")),
5 - Ajouter dans le footer.html de votre base :
<!-- AJOUT POPUP RETOUR CLIENT -->
{% include 'retour_client.html' %}
6 - Ajouter un cron :
Journalier 09h00 sur le serveur pour envoi des mails en préprod
Commande : envoi_mail_retour_client_preprod
Mensuel 09h00 le premier jour du mois sur le serveur pour envoi des mails
Commande : envoi_mail_tickets_en_attente
Licence
Versionning
- V1.0.0 | Création du module de retour
- V1.0.1 | Modification des versions des requirements
- V1.0.2 | Correction bug correspondance Python 3.9
- V1.0.3 | Correction bug buttons admin
- V1.0.4 | Correction bug date
- V1.0.5 | Correction bug
- V1.0.6 | Ajout d'un cockpit de gestion statistique
- V1.0.7 | Amélioration CSS
- V1.1.0 | Intégration de l'IA pour aide à la rédaction et analyse des tickets via un chatbot
- V1.1.4 | Correction bug
- V1.1.5 | Ajout utilisateurs Is Staff sur l'accès au module en production
- V1.1.6 | Correction bug
- V1.1.7 | Correction bug Python > 3.11 pour capture d'écran
- V1.1.8 | Correction bug Python > 3.11 pour capture d'écran
- V1.1.9 | Amélioration d'affichage
- V1.3.1 | Amélioration d'affichage
- V1.3.2 | Ajout du temps facturé sur les stats
- V1.3.4 | Ajout du temps facturé sur les stats
- V1.3.5 | Ajout de la commande envoi_mail_tickets_en_attente
- V1.3.6 | Correction des chemins de templates mails
- V1.3.7 | Correction des filtres des retours à traiter
- V1.3.8 | Ajout de btn de copie de numéro de ticket
- V1.4.1 | Ajout de cahier de test en Préproduction
- V1.4.2 | Ajout API Lucy Projet
- V1.4.3 | Modification du front
- V1.4.4 | Correction bug Ancienne Version Python
- V1.4.5 | Correction du module de capture
- V1.4.6 | Ajout de l'export Markdown des tickets en attente
- V1.4.7 | Correction du responsive de la popup retour client
- V1.5.0 | Pièce jointe image dans la popup, renommage des pièces jointes, rafraîchissement HTMX de la liste, assistant IA basculé sur le serveur vLLM Revolucy
- V1.5.1 | Intégration OpenHands : envoi des tickets pour traitement automatique et création de MR (API push + serveur MCP retour), envoi auto ou manuel, boutons de relance
- V1.5.2 | Adaptation à l'API OpenHands V1
- V1.5.3 | Adaptation à l'API OpenHands V1
- V1.5.4 | OpenHands : titre de conversation « NOM DU PROJET - Ticket n°XXX », convention de branche TICKET-XX_description, réponse client reprise dans la MR
- V1.5.5 | Optimisation API Key Lucy Projet : appairage via LUCY_PROJET_TOKEN (authentification API + récupération du token GitLab depuis Lucy)
- V1.5.6 | Correction Bug Migration
- V1.5.7 | MAJ Qwen
- V1.5.8 | Renommage de la nomenclature Claude en IA (modèle, service, vues)
- V1.6.0 | Édition d'un retour et d'un commentaire pendant 10 min après création ; tri de la liste des tickets (Récent / Ancien / Numéro / Par URL) ; corrections : attribut admin
is_admin_revo(au lieu deis_administrateur), décompte crédit/mail Lucy limité au hors-garantie, historique chatbot sur les 50 derniers messages, URL API Lucy viaLUCY_BASE_URL - V1.6.1 | Retrait des dépendances
- V1.6.2 | API Lucy : version du module et statut des tickets ; pointage des tickets (admins Revolucy) avec filtre Pointé / Non pointé ; liens des pièces jointes dans l'export Markdown
- V1.6.3 | Correctif bug URL renouvellement ticket
Fonctionnalités IA (V1.1.0+)
Chatbot Assistant IA
Accessible depuis la page /retour-client/pipeline-retours/ via un bouton fixe sur la droite.
Fonctionnalités :
- Recherche de tickets par mots-clés, statut, type, priorité
- Analyse statistique des tickets (tendances, pages problématiques, etc.)
- Identification de patterns et bugs récurrents
- Réponses contextuelles basées sur l'historique des tickets
- Historique des conversations par utilisateur
Cahier de test
Cahier de test quand le projet est en Préproduction permettant au client d'avoir la liste de ce qu'il doit tester et de valider ou non chaque point
Fonctionnalités :
- Import du cahier de test du dossier de conception et création automatique des "Todos"
- Liste des tests à réaliser avec la possibilité de les valider ou non
- Possibilité d'ajouter des scénarios de tests reliés aux tickets
Intégration OpenHand
Branche le module sur un serveur OpenHands (DGX / vLLM) pour que les tickets soient traités automatiquement et donnent lieu à une Merge Request.
Sens du flux
- Push API (module → OpenHands) : à chaque ticket créé (ou repassé « non résolu »), le module envoie le contexte du ticket — identique à l'export Markdown — à l'API OpenHands qui corrige et ouvre la MR.
- Chemin retour MCP (OpenHands → module) : OpenHands appelle le serveur MCP pour signaler la prise en charge (le ticket passe En cours), enregistrer l'URL de la MR et poster une réponse au client.
Modes d'envoi (configurés côté Lucy)
L'activation et le mode d'envoi se règlent dans la fiche projet Lucy (bloc « OpenHands (RevoIA) »), plus dans les settings du module.
auto: envoi automatique à la création du ticket et au passage en « non résolu ».manuel: envoi uniquement via les boutons (bouton global « OpenHands » à gauche du macaron pour relancer tous les tickets à traiter, et bouton « Envoyer à OpenHands » sur chaque ticket). Réservés aux admins Revolucy.
Serveur MCP (chemin retour)
Dépendance optionnelle (Python 3.10+) :
pip install "module-retour-client-revo[mcp]"
Démarrage (à faire tourner sur le serveur du client, accès réseau restreint) :
python manage.py openhands_mcp_server # stdio
python manage.py openhands_mcp_server --transport sse --host 0.0.0.0 --port 8765
Outils exposés : lister_tickets_a_traiter, get_ticket, marquer_en_traitement (→ statut En cours),
enregistrer_mr, poster_reponse.
Flux
PREPROD :
=> Module de retour visible pour tous les utilisateurs
1 - Création d'un ticket par le client :
- Enregistrement du ticket sur le site
- 2 Mails (Client / Chef de projet revo) journalier avec liste des tickets en attente de traitement avec les retours via un Batch
PRODUCTION - EN PERIODE DE GARANTIE :
=> Module de retour visible pour les administrateurs et les utilisateurs is_staff seulement => Affichage du compteur de jours restant de garantie
1 - Création d'un ticket par le client :
- Enregistrement du ticket sur le site
- 2 Mails (Client / Chef de projet revo) journalier avec liste des tickets en attente de traitement avec les retours via un Batch
PRODUCTION - HORS PERIODE DE GARANTIE :
=> Module de retour visible pour les administrateurs et les utilisateurs is_staff seulement => Affichage du compteur de nombre de crédit ticket restant => Si moins d’1H de crédit : Ajout d'un lien pour prendre un pack de crédit 5H ou 10H, puis création de la facture associée dans Lucy
1 - Création d'un ticket par le client :
- Enregistrement du ticket sur le site
- Mail Chef de projet revo à l'ajout du ticket
2 - Réponse par le chef de projet :
- Indication du nombre d'heure passé
- Déduction du crédit de temps dans Lucy par API
- Mail Client à l'ajout d'une réponse au ticket
Lancement du mode test du module de retour
1. Appliquer les migrations (première fois ou après changement de modèles)
python testproject/manage.py makemigrations python testproject/manage.py migrate
2. Créer un superuser si besoin (pour accéder à l'admin)
python testproject/manage.py createsuperuser
3. Lancer le serveur
python testproject/manage.py runserver
Ensuite, accède à :
- Page de test : http://localhost:8000/
- Module retour client : http://localhost:8000/retour/
- Admin Django : http://localhost:8000/admin/
Ce que fait le testproject
C'est un mini-projet Django autonome qui :
- Utilise SQLite (pas besoin de PostgreSQL)
- Importe directement le code source de retour_client via sys.path (pas besoin de pip install)
- Est configuré en environnement recette" (préprod)
- Inclut déjà le context processor et les URLs du module
Etapes Déploiement Pypi
pip install build twine
python -m build
python -m twine upload dist/*
Indiquer le token présent dans 1Password
Metadata
Release files for module-retour-client-revo 1.6.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| module_retour_client_revo-1.6.3.tar.gz | 438.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| module_retour_client_revo-1.6.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 905.4 kB
Release files / module_retour_client_revo-1.6.3.tar.gz
| Download URL | module_retour_client_revo-1.6.3.tar.gz |
|---|---|
| Size | 438.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
403c18fc0c0191ad9c9fdd2bcffffa32fd8d9eb99ac07d9d16c6f5013aae5ddf
|
|
BLAKE2b-256 checksum How to use checksums |
fac480bbd809f19815903edb944dbed9b4fd1bc98b2982f12c27a1d168586a62
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.14
|
Release files / module_retour_client_revo-1.6.3-py3-none-any.whl
| Download URL | module_retour_client_revo-1.6.3-py3-none-any.whl |
|---|---|
| Size | 467.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
960e1f8f6ee7bcf9282387ddccb6aec9ba2a446309fe9df4faacc3edf6f90ba7
|
|
BLAKE2b-256 checksum How to use checksums |
6bd8751b21d4abce1607806fc6402f15163fbf0a135ee5c1248de44c9b407fae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.14
|