Contexte :
Le pôle Communication de TCL Relation Usagers gère différents espaces pour déployer à la fois les campagnes de communication TCL et celles des partenaires TCL.
Il existe 3 grands types d'espace :
- Les epaces appartenant au réseau TCL. (Ex : les cadres A3 dans les rames de tram).
- Les espaces dont on peut bénéficier gratuitement à certain moment de l'année
- Les espaces payants
Le Pôle Communication utilise actuellement un logiciel pour planifier la réservation des espaces d’autopromotion. Le contrat du logiciel arrive à échéance et celui-ci ne donnant pas pleinement satisfaction, TCL Relation Usagers a décidé de développer un logiciel de gestion des espaces.
Le projet est développé en 6 sprints agiles (85 jours calendaires).
En tant que développeur·se backend junior, vous travaillez, sous la responsabilité du développeur Fullstack Senior de la DSI, sur la construction de l'API REST, du moteur de réservation anticollision et de la migration des données depuis l'ancien système.
Vous serez rattaché au pôle Etude, Outils et Data de la Direction des Systèmes d’Information.
Vous devrez respecter les différents standards, règles et procédures de la DSI TCL Relation Usagers (environnement de développement, sécurité, langage, etc..) fixés par le pôle Infrastructure Exploitation Supervision, Le développeur Fullstack Senior et l’architecte technique.
Vos missions seront :
1. Développement de l'API REST (Fastify + Node.js)
- Implémenter les endpoints définis dans les contrats OpenAPI : catalogue de supports, réservations, projets, exports.
- Écrire les services métier (ReservationService, CatalogService, AuditService) en TypeScript strict, selon les spécifications du Lead Développer.
- Intégrer la validation des données entrantes via les schémas Zod partagés (package @paon/shared).
- Documenter chaque endpoint dans l'annotation Fastify (génération OpenAPI automatique).
2. Base de données & Migrations Prisma
- Écrire et appliquer les migrations Prisma (provider SQL Server — Azure Fabric) selon le schéma défini par le Lead Développer.
- Rédiger des seeds idempotents pour les données de test (supports TCL fictifs, comptes de démonstration).
- Optimiser les requêtes critiques (index, includes Prisma, pagination).
3. Système de verrous anticollision (Azure Managed Redis)
- Implémenter le LockManager (commandes Redis SET NX EX, libération via script Lua) pour prévenir les doubles réservations simultanées.
- Écrire les tests de concurrence Vitest : 10 requêtes simultanées sur le même créneau → exactement 1 doit réussir.
4. Sécurité & RGPD
- Maintenir le middleware RBAC Fastify (5 rôles : PLANIFICATEUR, VALIDEUR, ADMIN, CATALOGUE_ADMIN, PARTENAIRE).
- Veiller à ce que pino-redact masque automatiquement les champs sensibles (email, IP, Authorization) dans tous les logs.
- Respecter les règles RGPD intégrées : jamais de données personnelles dans les JWT, rétention audit logs 5 ans.
5. Tests & qualité
- Atteindre et maintenir une couverture de tests Vitest ≥ 70% sur le backend.
- Respecter les conventions Git et de commit (commitlint, lint-staged, Husky) définies dans la charte de collaboration.
- Participer aux code reviews et aux daily standups (9h15, 15 minutes maxi).