feat(collab): v4.9.0 Collaboration - commentaires inline, mentions @, notifications in-app + email
FlowDeck CI / test (push) Failing after 6s
FlowDeck CI / docker (push) Skipped

This commit is contained in:
2026-09-04 23:40:21 -04:00
parent 23df10732b
commit b60cc8a7c6
21 changed files with 1515 additions and 35 deletions
+33 -1
View File
@@ -1,6 +1,38 @@
# Changelog — FlowDeck
## v4.8.1 (2026-09-03) — Fix bloc Tableau : boutons + Ligne / + Colonne, redimensionnement
## v4.9.0 (2026-09-04) — Collaboration : commentaires inline, mentions @, notifications
> Implémentation complète du pilier « Collaboration » — basée sur la revue des docs Notion
> (`docs/Guide_Complet_Notion_sharing_collaborartion.md`) : commentaires avec ancres inline,
> mentions `@` avec autocomplétion, centre de notifications in-app et emails SMTP.
### Added
- **Commentaires inline sur les pages** : sélection d'un texte dans l'éditeur → bouton flottant
« 💬 Comment » → commentaire ancré (`block_id` + offsets). Table `comments` étendue
(`target_type`, `target_id`, `anchor_block_id`, `anchor_start`, `anchor_end`) et **migrée**
de son FK `collection_pages` vers un schéma générique (aucune perte de données, idempotente).
- **Panneau de commentaires** dans l'éditeur : liste, résolution (✔/↪), suppression, compteur
dans la topbar.
- **Mentions `@`** : autocomplétion en temps réel (recherche d'utilisateurs), insertion de
`@login` dans un bloc ou un commentaire → notification ciblée à l'utilisateur mentionné.
- **Centre de notifications in-app** : cloche dans la topbar (badge non-lus, polling 30s),
panneau déroulant, « mark as read » / « mark all read ». Table `notifications`.
- **Emails de notification** : service SMTP (`app/services/mailer.py`) + templates HTML ;
préférences email par utilisateur (comments/mentions) réglables dans Settings → Notifications.
Sans SMTP configuré, seules les notifications in-app sont émises (aucune erreur).
- **API** : `GET/POST /api/notifications`, `/api/notifications/read|read-all|prefs`,
`/api/notifications/users/search`, `GET/POST /api/pages/{id}/comments`,
`PUT/DELETE /api/comments/{id}`, `POST /api/pages/{id}/mentions`.
- **Config SMTP** (`SMTP_HOST/PORT/USER/PASSWORD/FROM/USE_TLS`, `APP_BASE_URL`) dans `.env.example`.
### Infra
- `VERSION` → 4.9.0 ; `app/main.py` (log + `version=`) ; router `notifications` + `collaboration`
enregistrés ; exclusions CSRF (`/api/notifications`, `/api/comments`) ; le `RateLimitMiddleware`
respecte désormais `settings.rate_limit_enabled`.
### Tests
- **208 tests verts** (+9 v4.9.0 : table notifications, commentaires inline + mentions, centre de
notifications, préférences, recherche utilisateurs, résolution/suppression, mentions de page).
### Fixed
- **Bouton « + Row » (bas du tableau) inopérant** — le code passait la nouvelle ligne en argument `deleteCount` de `Array.splice` au lieu d'utiliser `splice(index, 0, ligne)` : aucune ligne n'était jamais insérée. Corrigé ; les insertions de lignes (menu contextuel aussi) fonctionnent.