Objectif: Créer un service générique de locking pour éviter les conflits d’édition concurrente avec support optimiste et pessimiste.
Responsabilités:
- Implémenter verrouillage optimiste (versioning) et pessimiste (lock explicite avec expiration)
- Heartbeat automatique, notifications temps réel via WebSockets, affichage read-only si locké
- Force unlock (admin), dashboard temps réel des locks actifs, historique complet
- Interface de merge 3-way en cas de conflit, auto-save en draft
- API générique: lock(entityType, entityId, userId), unlock(), isLocked(), getLockInfo()
Livrables attendus:
- Service de locking prêt à l’emploi, UI d’admin et composant de merge
- Documentation, tests de charge et de concurrence
Technologies suggérées: Node.js/NestJS, Redis (distributed locks), Redlock, WebSockets (Socket.io), PostgreSQL, Angular/React, Docker