Commentaires fédérés via Mastodon (bokante.o-k-i.net) — backend #5

Merged
cedric merged 8 commits from feat/comment-fedi into master 2026-07-04 21:24:31 +00:00
Owner

Implémentation de l'option A du RFC (voir RFC-commentaires-activitypub-2026-07-04.md) : relais via bokante.o-k-i.net plutôt qu'un acteur ActivityPub natif.

  • Nouveaux champs : commentaire (origine, auteurNom/Handle/AvatarUrl/ProfilUrl, remoteId, remoteUrl) et parole (bokanteStatusId)
  • Client HTTP minimal vers l'API Mastodon (createStatus, getStatusContext)
  • Publication automatique d'un statut miroir à la publication d'une parole — dans afterCreate, pas beforeUpdate : avec draftAndPublish sur Strapi 5, publier crée une nouvelle ligne au lieu de mettre à jour l'existante, beforeUpdate ne se déclenche donc jamais sur une vraie action Publier
  • Cron d'import des réponses en commentaires (toutes les 20 min)
  • Cron de backfill du catalogue existant : une parole par exécution (la plus ancienne sans miroir en premier), une par heure par défaut, configurable via BOKANTE_BACKFILL_CRON
  • Tout est inactif tant que BOKANTE_ACCESS_TOKEN n'est pas configuré (no-op silencieux, même principe que Telegram/Revolt)

Validé en conditions réelles : publication réelle sur bokante.o-k-i.net confirmée, hook de publication confirmé déclenché au bon endroit après correction.

Implémentation de l'option A du RFC (voir RFC-commentaires-activitypub-2026-07-04.md) : relais via bokante.o-k-i.net plutôt qu'un acteur ActivityPub natif. - Nouveaux champs : `commentaire` (origine, auteurNom/Handle/AvatarUrl/ProfilUrl, remoteId, remoteUrl) et `parole` (bokanteStatusId) - Client HTTP minimal vers l'API Mastodon (createStatus, getStatusContext) - Publication automatique d'un statut miroir à la publication d'une parole — dans `afterCreate`, pas `beforeUpdate` : avec draftAndPublish sur Strapi 5, publier crée une nouvelle ligne au lieu de mettre à jour l'existante, `beforeUpdate` ne se déclenche donc jamais sur une vraie action Publier - Cron d'import des réponses en commentaires (toutes les 20 min) - Cron de backfill du catalogue existant : une parole par exécution (la plus ancienne sans miroir en premier), une par heure par défaut, configurable via `BOKANTE_BACKFILL_CRON` - Tout est inactif tant que `BOKANTE_ACCESS_TOKEN` n'est pas configuré (no-op silencieux, même principe que Telegram/Revolt) Validé en conditions réelles : publication réelle sur bokante.o-k-i.net confirmée, hook de publication confirmé déclenché au bon endroit après correction.
cedric added 8 commits 2026-07-04 21:21:59 +00:00
Avec draftAndPublish sur Strapi 5, publier une entrée crée une
nouvelle ligne (document-service publishEntry -> createEntry) au lieu
de mettre à jour la ligne existante : beforeUpdate ne se déclenche
donc jamais sur une vraie action Publier, seulement sur l'édition
d'une entrée déjà publiée. Le miroir bokante est maintenant posté
dans afterCreate, sur la condition result.publishedAt, avec
synchronisation brouillon/publié pour rester idempotent à travers les
cycles dépublier/republier.
chore: régénérer les types Strapi (champs bokante)
Déploiement API BETA / build (push) Successful in 2m20s
Vérification PR / build (pull_request) Successful in 2m23s
Déploiement API BETA / deploy (push) Successful in 46s
Vérification PR / deploy-beta (pull_request) Successful in 47s
719b4c7905
cedric merged commit 03960cc952 into master 2026-07-04 21:24:31 +00:00
Sign in to join this conversation.