7.5 KiB
7.5 KiB
Journal de travail
Ce fichier consigne les interventions Codex sur le projet afin de garder une trace exploitable des analyses, decisions et suites a traiter.
2026-06-24
Demande
- Analyser le projet.
- Creer un README et le maintenir a jour.
- Alimenter un fichier Markdown dedie au travail effectue.
Analyse realisee
- Le depot contient un script WAPT principal
setup.py. - Le script surveille les tickets Odoo Helpdesk via JSON-RPC.
- Il compare les champs
idetwrite_dateavec un etat localtickets_state.pkl. - Il notifie Rocket.Chat via un webhook configure dans
rocket.ini. - Le fichier
tickets_state.pklinitial a ete inspecte avecpickletoolssans charger le pickle comme code executable ; il contient actuellement un dictionnaire vide. .envcontient des chemins Windows vers l'environnement WAPT.
Fichiers ajoutes
README.md: documentation du projet, fonctionnement, prerequis, configuration, risques et ameliorations recommandees.TRAVAIL.md: journal de travail maintenu par Codex.
Points techniques identifies
- Bug bloquant probable dans
setup.py:tickets_updated.auppend(ticket_id)doit etre corrige entickets_updated.append(ticket_id). - Secrets presents en clair :
- cle API Odoo dans
setup.py; - webhook Rocket.Chat dans
rocket.ini.
- cle API Odoo dans
pickle.load()est sensible si le fichier d'etat peut etre modifie par une source non fiable.dbetxmlrpc.clientsemblent inutilises.- Le chemin de
tickets_state.pklest relatif au repertoire courant.
Suites recommandees
- Corriger la faute
auppend. - Sortir les secrets du depot.
- Remplacer l'etat pickle par JSON.
- Ajouter un test minimal sur la detection des tickets modifies.
- Verifier la conformite du payload JSON-RPC avec l'API Odoo reellement exposee.
Modification configuration secrete
- Retrait de la cle API Odoo codee en dur dans
setup.py. - Remplacement du webhook reel par des placeholders.
- Centralisation de la configuration sensible dans
ticketing.ini.example, copiee en prive sous le nomticketing.ini:rocket.webhook_urlodoo.urlodoo.api_keyodoo.model
install()copie le fichier INI modele versWAPT.private_dir/ticketing.iniuniquement s'il n'existe pas deja, afin de ne pas ecraser une configuration renseignee sur la machine cible.audit()charge maintenant l'URL Odoo et la cle API depuis le fichier INI prive.send_to_rocket()charge maintenant le webhook depuis le fichier INI prive.- Correction du bug
tickets_updated.auppend(ticket_id)entickets_updated.append(ticket_id). - Deplacement du fichier d'etat vers
WAPT.private_dir/tickets_state.pklpour eviter de dependre du repertoire courant. - Ajout d'une validation explicite des placeholders
CHANGE_ME...pour eviter une execution avec une configuration non renseignee. - Ajout de
.gitignorepour eviter de versionner unticketing.inirempli localement et un futur fichier d'etat runtime.
2026-07-24
Analyse des ameliorations possibles
- Remplacer
picklepar JSON pour le fichier d'etat runtime. - Extraire la recuperation Odoo, la comparaison d'etat et l'envoi Rocket.Chat dans des fonctions testables.
- Ajouter des timeouts explicites aux appels HTTP Odoo et Rocket.Chat.
- Faire echouer l'audit si l'appel Odoo echoue, afin d'eviter d'ecraser l'etat avec une liste vide en cas d'indisponibilite.
- Utiliser
response.raise_for_status()aussi pour l'appel Rocket.Chat. - Ajouter des tests unitaires sur la detection des tickets nouveaux ou modifies.
- Retirer du depot le reliquat
tickets_state.pkl, aujourd'hui remplace par l'etat stocke dansWAPT.private_dir. - Ajouter un fichier de controle WAPT si le depot doit etre un paquet complet.
- Mettre en place une rotation des secrets deja presents dans l'historique Git.
Mise en oeuvre des ameliorations
- Remplacement de l'etat runtime
tickets_state.pklpartickets_state.json. - Suppression de l'utilisation de
pickledans le code. - Ajout des fonctions testables :
build_odoo_payload()fetch_odoo_tickets()load_tickets_state()save_tickets_state()build_tickets_state()get_updated_ticket_ids()
- Ajout d'un timeout HTTP configurable via
http.timeout, avec valeur par defaut a 30 secondes. - Durcissement de l'appel Odoo : les erreurs HTTP, les erreurs JSON-RPC et les reponses sans
resultfont echouer l'audit au lieu de sauvegarder un etat vide. - Durcissement de l'appel Rocket.Chat avec
raise_for_status(). - Ajout de
tests/test_ticketing.pypour valider la comparaison des tickets et la lecture/ecriture JSON. - Suppression du reliquat
tickets_state.pkldu repertoire projet. - Mise a jour de
README.md,ticketing.ini.exampleet.gitignore. - Ajout de tests avec mocks
requestssurfetch_odoo_tickets()etsend_to_rocket(). - Ajout d'un fichier
WAPT/controlminimal. - Documentation du payload JSON-RPC Odoo attendu dans
README.md. - Ajout des artefacts WAPT generes
certificate.crt,manifest.sha256etsignature.sha256dans.gitignore.
Correction protocole Odoo JSON-RPC
- Analyse d'une erreur
RPC.jsonrpc() missing 1 required positional argument: 'service'lors dewapt-get audit. - Remplacement du payload direct
model/method/argspar le protocole JSON-RPC Odoo standard :service=common,method=authenticatepour obtenir leuid;service=object,method=execute_kwpour appelerhelpdesk.ticket.search_read.
- Ajout des champs
odoo.databaseetodoo.usernamedansticketing.ini.example. - Support optionnel de
odoo.uidpour eviter l'authentification si l'identifiant utilisateur est deja connu. - Mise a jour des tests unitaires pour verifier les appels
authenticateetexecute_kw.
Ajustement WAPT/control
- Passage de
target_osdewindowsaalldansWAPT/control. - Incrementation de la version WAPT de
0.1.0-2a0.1.0-3. - Correction de version demandee : passage de
0.1.0-3a0.1-10pour rattraper les increments precedents. - Attention :
target_osfait partie des attributs signes, le paquet doit etre regenere/resigne avant publication. - Regle projet retenue : incrementer
WAPT/control:versiona chaque nouvelle version du paquet.
Notification Rocket.Chat plus detaillee
- Recuperation de champs Odoo supplementaires par defaut :
name,stage_id,partner_id,user_id. - Ajout de l'option
odoo.fieldspour ajuster les champs lus parsearch_read. - Ajout de l'option
notification.max_ticketspour limiter le nombre de lignes detaillees dans Rocket.Chat. - Remplacement du message brut contenant seulement une liste d'IDs par un message avec nombre total, titre, statut, client, assigne, date courante et ancienne date quand disponible.
- Incrementation de la version WAPT locale de
0.1-11a0.1-12.
Alignement format historique Rocket.Chat
- Remplacement du format detaille par un format compact proche de l'ancien rendu :
ID : Sujet : titre gere par personne : cliquer ici pour ouvrir le ticket. - Ajout d'un lien Markdown vers Odoo pour chaque ticket.
- Ajout de l'option
notification.ticket_url_templateavec les variables{odoo_url},{id}et{model}. - Incrementation de la version WAPT de
0.1-12a0.1-13.
Fiabilisation detection des tickets
- Ajout explicite de
limit = 0surhelpdesk.ticket.search_readpour eviter une limite implicite cote Odoo. - Ajout explicite de
order = id ascpour stabiliser la liste des tickets comparee avec l'etat local. - Ajout de logs d'audit indiquant le nombre de tickets recuperes et le nombre de tickets modifies detectes.
- Incrementation de la version WAPT de
0.1-13a0.1-14.