Skip to content

feat: API planning pour remplacer le CGI + fichier XML partagé#79

Merged
mortifia merged 2 commits into
mainfrom
feat/planning-events-api
Jul 12, 2026
Merged

feat: API planning pour remplacer le CGI + fichier XML partagé#79
mortifia merged 2 commits into
mainfrom
feat/planning-events-api

Conversation

@mortifia

@mortifia mortifia commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Réfère #14 (complète la partie API planning, pas l'ensemble du plan V2) et #69 (le webhook n'a plus besoin de transiter par le navigateur/session — mais ne supprime pas les secrets déjà exposés dans l'historique git d'autres fichiers, hors scope ici).

Termine la migration V2 amorcée par la branche 14-new-bot-modular-in-docker-compose (abandonnée depuis 2023) pour la partie planning : une vraie API HTTP remplace le CGI qui envoyait lui-même le webhook Discord, et le fichier events.xml partagé entre bot et site web (incompatible avec des conteneurs séparés).

Corrige au passage la persistance des événements, qui ne fonctionnait déjà pas avant (self.new_event toujours vide côté bot, écriture XML commentée côté CGI, bug TAGS_TO_FORM sans entrée pour la date dans l'ancien Calendar.add_event).

Nouveau service planning-api (FastAPI, port 3000, ajouté au docker-compose.yml à côté d'urbot) :

  • POST /webhooks : enregistre le webhook du salon d'annonce pour un utilisateur
  • POST /events : reçoit les données réelles du formulaire, envoie l'embed Discord, persiste dans events.xml

Testé de bout en bout localement (register → create → vérification du XML généré, gestion d'erreur sur date invalide et webhook inconnu, persistance après redémarrage du conteneur).

PRs liées :

Termine UnionRolistes/Bot_Planning_python#11 ("create an real discord api,
not with cgi") et corrige la persistance des événements du calendrier, qui
ne fonctionnait déjà pas avant Docker (self.new_event du bot toujours vide,
écriture XML commentée côté CGI, TAGS_TO_FORM sans entrée pour la date dans
Calendar.add_event).

Nouveau service planning-api (FastAPI, port 3000) :
- POST /webhooks : enregistre le webhook du salon d'annonce pour un
  utilisateur (remplace le fichier pickle local que $jdr écrivait)
- POST /events : reçoit les vraies données du formulaire, envoie l'embed
  Discord via le webhook enregistré, persiste dans events.xml (repris de
  Bot_Base/src/urpy/xml.py::Calendar, adapté et le bug TAGS_TO_FORM corrigé)

events.xml et webhooks.json vivent sur un volume dédié au service, plus de
dépendance à un système de fichiers partagé entre bot et site web.
Signalé par dependency-review sur la PR. Pas de vecteur d'exploitation
direct ici (XMLParser() sans resolve_entities, pas iterparse()/
ETCompatXMLParser()), mais autant utiliser la version corrigée.
@mortifia mortifia merged commit ba2e28b into main Jul 12, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant