feat: enrich ticket update notifications

This commit is contained in:
2026-07-24 10:06:18 +02:00
parent 39908314d9
commit 93b6947feb
7 changed files with 166 additions and 13 deletions
+26 -1
View File
@@ -50,9 +50,13 @@ database = CHANGE_ME_ODOO_DATABASE
username = CHANGE_ME_ODOO_USERNAME
api_key = CHANGE_ME_ODOO_API_KEY
model = helpdesk.ticket
fields = id,name,stage_id,partner_id,user_id,write_date
[http]
timeout = 30
[notification]
max_tickets = 50
```
Au deploiement, `install()` copie ce modele vers `WAPT.private_dir/ticketing.ini` uniquement si le fichier n'existe pas deja. Il faut ensuite renseigner le fichier prive sur la machine cible. Les mises a jour du paquet n'ecrasent donc pas une configuration deja remplie.
@@ -86,6 +90,10 @@ Le runtime lit et ecrit ce fichier dans `WAPT.private_dir`. Il n'est pas version
La cle API est utilisee comme mot de passe d'API Odoo pour authentifier `username`. Il est aussi possible de renseigner `uid` dans la section `[odoo]` pour eviter l'appel d'authentification.
`odoo.fields` controle les champs recuperes depuis Odoo pour enrichir la notification. Les champs `id` et `write_date` sont toujours ajoutes s'ils sont absents, car ils sont necessaires a la comparaison d'etat.
`notification.max_tickets` limite le nombre de lignes detaillees envoyees dans Rocket.Chat. Le message indique toujours le nombre total de tickets modifies.
## Protocole Odoo
Le script utilise l'endpoint configure sous la forme `<odoo.url>/jsonrpc` avec le protocole JSON-RPC Odoo standard.
@@ -114,12 +122,29 @@ Lecture des tickets :
"params": {
"service": "object",
"method": "execute_kw",
"args": ["database", "uid", "api_key", "helpdesk.ticket", "search_read", [[]], {"fields": ["id", "write_date"]}]
"args": ["database", "uid", "api_key", "helpdesk.ticket", "search_read", [[]], {"fields": ["id", "name", "stage_id", "partner_id", "user_id", "write_date"]}]
},
"id": 1
}
```
## Notification
Quand des tickets changent, Rocket.Chat recoit un message avec :
- le nombre total de tickets modifies ;
- une ligne par ticket affiche, limitee par `notification.max_tickets` ;
- l'ID, le titre, le type de changement, le statut, le client, l'assigne, la nouvelle date de modification et l'ancienne date quand elle existe.
Exemple :
```text
Tickets Odoo mis a jour depuis la derniere verification : 2
- #187 | Probleme imprimante | type: modifie | statut: En cours | client: Comitari | assigne: Support | date: 2026-07-24 10:00:00 | ancienne date: 2026-07-24 09:00:00
- #251 | Nouveau ticket | type: nouveau | statut: - | client: - | assigne: - | date: 2026-07-24 11:00:00
```
## Tests
Les tests unitaires peuvent etre executes hors WAPT :