1. Parties
1.1 Le Prestataire
| Raison sociale | Jeremy Bouznah LTD | גרמי בוזנה בע"מ |
| Numero d'immatriculation | 517110912 |
| Adresse | 71 Rue Shahal, Jerusalem, Israel |
| Telephone | 058.59.65.171 |
| bouznahjeremy@gmail.com | |
| Representant | Jeremy Bouznah, Gerant |
1.2 Le Donneur d'Ordre
| Raison sociale | VO2 Israel (filiale de VO2 GROUP) |
| Adresse | Jaffa St 224, Jerusalem, Israel |
| Site web | https://www.vo2-group.com/ |
| jerusalem@vo2-group.com | |
| Secteur | Services et conseil en informatique |
| Maison mere | VO2 GROUP (Paris, France) - Fondee en 2011, 700+ consultants, Pure player Salesforce |
| Chef de projet | Ouriel OHANA |
1.3 Le Client Final
| Raison sociale | Merkazei HaTenis VeHaHinukh BeIsrael | מרכזי הטניס והחינוך בישראל |
| Activite | Reseau de centres de tennis et d'education sportive en Israel |
| Site web | https://tennis.org.il/ |
| Siege | Carrefour du Village Vert, Ramat HaSharon, Israel |
| Tel national | *6227 |
2. Objet de la Mission
2.1 Contexte du projet global
Merkaz Tennis migre son CRM actuel ("Center") vers Salesforce et developpe une application mobile (React Native) pour la reservation de terrains. Le projet se decompose en deux phases. La Phase 1, prevue pour septembre 2026, couvre la reservation de terrains et la mise en place du CRM Salesforce. La Phase 2, jusqu'a janvier 2027, couvre l'inscription aux cours, la gestion des entraineurs et l'espace client complet.
2.2 Perimetre de la mission
La presente mission couvre exclusivement la section 2.4.1 du RFP ("Reservation de terrains dans le systeme existant / Experience client pour la reservation en ligne") et comprend la conception et la realisation de :
- Ecran 1 : Grille Emploi du Temps des terrains (Looze Migrashim) - interface back-office
- Ecran 2 : Detail d'une reservation (ecran d'ouverture au clic sur une cellule de la grille)
- Ecran 3 : Affichage public sur ecrans TV (entrees des centres)
- Ecran 4 : Design de la resolution de conflits (chevauchements de creneaux)
2.3 Exclusions explicites
Sont exclus du perimetre de cette mission :
- Le developpement / codage Salesforce LWC
- L'integration et le branchement au backend Salesforce
- La formation des utilisateurs
3. Conditions d'Execution
3.1 Nature du contrat
La presente mission est un forfait au livrable. Le montant est fixe et defini pour la livraison des livrables decrits a l'article 4. Il n'est pas conditionne au nombre d'heures ou de jours effectivement consommes. La base de 45 heures est une estimation indicative de l'effort necessaire.
3.2 Montant forfaitaire
| Poste | Montant |
|---|---|
| Base estimative | 45 heures (5 jours x 9 heures) |
| Taux horaire de reference | 225 NIS HT / heure |
| Montant forfaitaire HT | 10 125 NIS |
| TVA (18%) | 1 822,50 NIS |
| Montant forfaitaire TTC | 11 947,50 NIS |
3.3 Modalites de paiement
| Echeance | Montant | Declencheur |
|---|---|---|
| Acompte | 50% du montant TTC (5 973,75 NIS) | A la signature de la presente lettre de mission |
| Solde | 50% du montant TTC (5 973,75 NIS) | A la livraison du livrable final valide |
3.4 Delai de livraison
- livraison sous 5 jours ouvres a compter de la date de signature
3.5 Processus de validation
- Le Prestataire livre un premier prototype interactif
- Le Donneur d'Ordre et/ou le Client Final effectue(nt) leurs retours
- Le Prestataire integre les retours et livre une version affinee
- 2 allers-retours de modifications sont inclus dans le forfait
- Tout aller-retour supplementaire sera facture sur devis
4. Livrables
4.1 Prototype HTML interactif et fonctionnel
Un prototype complet en HTML/CSS/JavaScript comprenant :
- Les 4 ecrans decrits dans le perimetre (grille, detail, TV, conflits)
- Drag & drop fonctionnel
- Navigation interactive (clics, etats, transitions)
- Code couleur conforme aux exigences du client
- Auto-scroll temporel sur l'ecran TV
- Testable dans tout navigateur web sans installation
4.2 Document d'annotations fonctionnelles
Le present cahier des charges (Partie II) faisant partie integrante de cette lettre de mission, detaillant l'ensemble des specifications fonctionnelles, le modele de donnees, et les contraintes techniques.
4.3 Conversion Figma (option)
Sur demande du Donneur d'Ordre, le Prestataire peut fournir une conversion des ecrans au format Figma editable.
| Poste | Montant |
|---|---|
| Montant HT | 1000 NIS |
| TVA (18%) | 180 NIS |
| Montant TTC | 1180 NIS |
Cette option n'est pas incluse dans le forfait de base.
4.4 Stack technique
| Element | Technologie |
|---|---|
| Prototypage | HTML5, CSS3, JavaScript (ES6+) |
| Interactivite | HTML5 Drag and Drop API, DOM manipulation native |
| Responsive | CSS Grid, Flexbox |
| Compatibilite cible | Chrome, Edge, Safari (versions actuelles) |
| Conversion Figma | Via plugin html.to.design (si option activee) |
5. Propriete Intellectuelle et Confidentialite
5.1 Cession des droits
A la livraison finale et au paiement integral du solde, le Prestataire cede au Donneur d'Ordre l'ensemble des droits de propriete intellectuelle sur les livrables produits dans le cadre de cette mission, y compris le droit de reproduction, de modification et d'adaptation.
5.2 Confidentialite (NDA)
Le Prestataire s'engage a :
- Maintenir la confidentialite de toutes les informations communiquees dans le cadre de cette mission
- Ne pas divulguer, reproduire ou utiliser les documents du RFP, du transcript de workshop, ou toute autre information relative au projet a des fins autres que l'execution de la presente mission
6. Responsabilite et Garantie
Le Prestataire garantit que les livrables seront conformes aux specifications definies dans le present cahier des charges. En cas de non-conformite constatee lors de la validation, le Prestataire s'engage a corriger les elements concernes dans le cadre des allers-retours prevus a l'article 3.5.
7. Resolution des Litiges et Droit Applicable
| Element | Detail |
|---|---|
| Droit applicable | Droit israelien |
| Resolution amiable | En cas de differend, les parties s'engagent a recourir en premier lieu a une procedure de conciliation devant un Din Torah |
| Juridiction | A defaut de resolution amiable, les tribunaux competents de Tel Aviv seront saisis |
8. Signatures
| Le Prestataire | Le Donneur d'Ordre | |
|---|---|---|
| Nom | Jeremy Bouznah | [A completer] |
| Societe | Jeremy Bouznah LTD | VO2 Israel |
| Date | ||
| Signature |
9. Contexte Metier
9.1 Presentation de Merkaz Tennis
Merkaz Tennis (ITEC - Israel Tennis Education Centers) exploite 19 centres sportifs en Israel totalisant 215 terrains (tennis, paddle, pickleball, squash, football). L'organisation gere 8 antennes regionales et propose des programmes pour tous ages, des enfants aux seniors.
9.2 Ecosysteme technique existant
| Systeme | Usage |
|---|---|
| Center (CRM) | CRM interne custom - systeme actuel a remplacer |
| SAP | Comptabilite (code SAP = section budgetaire) |
| Salesforce | Module donateurs (existant, a etendre) |
| Smoove / FlowReach | Marketing Automation |
| Office 365 | Mail, Sharepoint, stockage fichiers |
| Notion | Gestion de plans professionnels |
| Atanix | Gestion presence employes |
| Hergel | Systeme de paie |
| Yesh Kisui | Gestion achats |
9.3 Problematiques actuelles
- CRM "Center" extremement rigide, aucune flexibilite de configuration
- Modifications mineures necessitant l'intervention du developpeur (delais importants)
- Ecran d'emploi du temps (Looze) obsolete : pas de header fige, pas d'auto-scroll
- Ecrans TV dans les centres : gommettes physiques pour identifier les terrains, scroll manuel par les standardistes
- Absence de dashboard de controle en temps reel
- Impossibilite de creer des categories sportives de maniere autonome
9.4 Objectifs du nouveau systeme
Fournir un ecran de gestion des terrains moderne dans Salesforce (LWC) qui permette :
- Une gestion visuelle et intuitive de l'emploi du temps
- Le respect du code couleur existant (20 ans d'habitudes)
- Une flexibilite totale dans la configuration (centres, categories, terrains)
- Un affichage public professionnel sur les ecrans TV des centres
- Des indicateurs de performance en temps reel (taux d'occupation)
10. Ecran 1 : Grille Emploi du Temps (Looze Migrashim)
Cet ecran est le composant central du module de gestion des terrains. Il est utilise quotidiennement par les standardistes de chaque centre pour gerer les reservations, et par la direction pour le suivi global.
Reference visuelle - Systeme actuel :
(Capture d'ecran du RFP page 25 : grille avec colonnes numerotees 1 a 25+, lignes horaires de 7:00 a 8:30, cellules colorees par type de reservation. En haut : filtres par centre, boutons de categories sportives avec codes couleur. A gauche : labels des categories en hebreu avec fonds de couleur correspondants)
Systeme actuel - Grille Looze Migrashim (Planning des terrains)
10.1 Barre de navigation et filtres
10.1.1 Picklist de selection du centre
- Type : Liste deroulante (dropdown)
- Contenu : Liste de tous les centres Merkaz Tennis
- Comportement selon le role :
- Standardiste / employe de centre : picklist verrouillee sur son propre centre (pas de choix)
- Manager de centre : picklist verrouillee sur son propre centre + possibilite de consulter d'autres centres en lecture seule
- Direction / Mate : acces a tous les centres
- Super User : acces a tous les centres avec droits de modification
- Valeur par defaut : le centre de l'utilisateur connecte
10.1.2 Multi-boutons de filtrage par categorie sportive
- Type : Boutons multi-selection (plusieurs peuvent etre actifs simultanement)
- Style : Boutons avec la couleur de fond correspondant a la categorie
- Categories actuelles a valider par le client :
| Categorie | Couleur de fond | Code hex (a confirmer) |
|---|---|---|
| Tennis | [a definir] | [a definir] |
| Paddle | [a definir] | [a definir] |
| Squash | [a definir] | [a definir] |
| Pickleball | [a definir] | [a definir] |
| Football | [a definir] | [a definir] |
| Fitness / Salle | [a definir] | [a definir] |
| Studio | [a definir] | [a definir] |
[A VALIDER] : Liste definitive des categories sportives par centre. Chaque centre peut avoir un sous-ensemble different de categories.
- Comportement : Au clic, filtre les colonnes de la grille pour n'afficher que les terrains de la/des categorie(s) selectionnee(s)
- Etat par defaut : Toutes les categories du centre sont affichees
10.1.3 Navigation temporelle
- Selecteur de date : Calendrier avec la date du jour selectionnee par defaut
- Boutons de navigation : Jour precedent / Jour suivant
- Vue : Vue journaliere (une journee a la fois)
10.2 Structure de la grille
10.2.1 Colonnes = Terrains
- Chaque colonne represente un terrain physique du centre
- Header de colonne : Numero du terrain + categorie sportive
- Numerotation : Par categorie (Tennis 1, Tennis 2, ... Paddle 1, Paddle 2, ...)
- Tri : Groupes par categorie sportive
- Couleur de fond du header : Couleur de la categorie du terrain
10.2.2 Lignes = Creneaux horaires
- Intervalle : 30 minutes
- Plage horaire : Selon les heures d'ouverture du centre selectionne (ex: 6:00 - 23:00)
- Duree minimale de reservation : 1 heure
- Durees possibles : 1h, 1h30, 2h (configurable par categorie sportive)
10.2.3 Header fige (sticky)
- OBLIGATOIRE : Le header avec les numeros de terrain reste visible en permanence lors du scroll vertical
- C'est un point douloureux majeur du systeme actuel (le header disparait au scroll, les centres ont mis des gommettes sur la TV)
10.2.4 Auto-scroll vers l'heure actuelle
- OBLIGATOIRE : A l'ouverture de l'ecran, la grille scrolle automatiquement pour afficher l'heure actuelle en haut de la zone visible
- Le systeme actuel ne le fait pas : les standardistes doivent scroller manuellement toutes les 2 heures
10.3 Code couleur obligatoire des cellules
Le code couleur est un element critique. Le personnel travaille avec ces couleurs depuis 20 ans. Elles doivent etre respectees imperativement.
| Couleur | Code | Type de reservation | Informations affichees dans la cellule |
|---|---|---|---|
| Vert clair (רקע ירוק בהיר) | ~#A5D6A7 (approximatif, a confirmer) | Promotion / reduction active sur le terrain | Nom du client, horaire, indication promo |
| Vert (ירוק) | ~#4CAF50 (approximatif, a confirmer) | Cours / entrainement adultes-seniors (Gil Chichimi) | Nom du cours, nom du prof |
| Bleu (כחול) | ~#42A5F5 (approximatif, a confirmer) | Groupes enfants et communaute (Keita/Kehila) | Nom du groupe, tranche d'age |
| Gris (אפור) | ~#BDBDBD (approximatif, a confirmer) | Reservation de terrain standard | Nom du client, horaire |
| Jaune (צהוב) | ~#FFF176 (approximatif, a confirmer) | Terrain bloque / Migrash Hassoum (travaux, evenement, anniversaire, Maccabiah) | Motif du blocage |
| Mauve/violet clair (אפור כהה) | ~#CE93D8 (approximatif, a confirmer) | Entrainement personnel / Imoun Ishi | Nom de l'entraineur + Nom du client |
[A VALIDER] : Les codes hexadecimaux exacts de chaque couleur. Extraire des captures d'ecran du systeme actuel si disponibles.
10.3.1 Icone speciale : Reservation interne (Shiboutz Atzmi)
- Quand une icone specifique apparait dans une cellule, cela signifie que le terrain a ete reserve en interne (par un employe/prof) et non par un client externe
- [A DEFINIR] : Icone exacte a utiliser
10.3.2 Jour sans activite (Yom Lelo Peulot)
- Quand un jour est marque "sans activite" (pas de cours), les terrains restent disponibles a la reservation
- Le tarif passe automatiquement au tarif soir/weekend
- Visuellement : indication claire que c'est un jour special
10.4 Contenu des cellules de reservation
Chaque cellule occupee dans la grille affiche :
| Donnee | Obligatoire | Contextuel |
|---|---|---|
| Nom du client / groupe | Oui | - |
| Horaire (debut - fin) | Oui | - |
| Numero de terrain | Non (implicite par la colonne) | - |
| Type de reservation (couleur) | Oui (via couleur de fond) | - |
| Nom de l'entraineur | - | Si cours ou entrainement personnel |
| Icone shiboutz atzmi | - | Si reservation interne |
| Indication promo | - | Si promotion active |
| Motif de blocage | - | Si terrain bloque (jaune) |
10.5 Fonctionnalites interactives
10.5.1 Drag & drop
- Deplacer une reservation : L'utilisateur peut glisser une cellule de reservation d'un creneau/terrain vers un autre creneau/terrain
- Verification automatique : Le systeme verifie la disponibilite du creneau cible avant d'accepter le deplacement
- Annulation : Si le creneau cible est occupe, la cellule revient a sa position d'origine et un message d'erreur s'affiche
- Restrictions : Le drag & drop respecte les permissions de l'utilisateur (un standardiste ne peut pas deplacer des reservations d'un autre centre)
10.5.2 Clic sur un creneau vide = Creation rapide
- Un clic sur un creneau vide ouvre l'ecran 2 (Detail de reservation) avec les champs pre-remplis :
- Terrain : celui de la colonne cliquee
- Horaire : celui de la ligne cliquee
- Duree : par defaut 1h (modifiable)
10.5.3 Reservations repetitives (recurrence)
- Possibilite de creer une reservation recurrente : "Tous les lundis a 10h sur le terrain 5"
- Interface : Checkbox "Recurrence" + selection des jours + date de fin
- La recurrence cree automatiquement les creneaux sur la periode definie
[A VALIDER] : Dans le systeme actuel, la recurrence hebdomadaire est reservee aux abonnes uniquement (checkbox 'למנויים: הקצאה כסדרה שבועית'). Cette restriction doit-elle etre maintenue dans le nouveau systeme ?
10.5.4 Bouton de reservation directe
- Un bouton "Reserver" accessible sans passer par le Looze (comme dans Google Calendar)
- Ouvre le meme ecran de detail (Ecran 2) mais sans champs pre-remplis
- L'utilisateur selectionne manuellement le centre, le terrain, la date, l'horaire
10.5.5 Gestion visuelle des conflits
- Si deux reservations se chevauchent sur le meme terrain, la grille affiche un indicateur visuel de conflit (voir Ecran 4)
10.6 Lien vers Dashboard d'occupation
- Bouton en bas ou dans le header de la grille : "Taux d'occupation"
- Action : Ouvre le report Salesforce standard (hors scope de ce design) montrant le pourcentage de terrains reserves en temps reel sur la journee
- Seul le bouton/lien est dans le scope ; le contenu du dashboard est hors perimetre
11. Ecran 2 : Detail d'une Reservation (Clic sur cellule)
Cet ecran s'ouvre en modal / side panel quand l'utilisateur clique sur une cellule de la grille (occupee ou vide).
Reference visuelle - Systeme actuel :
(Capture du RFP page 25 : formulaire "Hashkarat Migrash Tennis" avec champs Nom, Date debut, Heure, Duree, Type (Imoun Ishi), zone Commentaires, boutons Ajouter/Annuler)
Systeme actuel - Formulaire de reservation back-office (CRM Center)
11.1 Mode "Creneau vide" (Nouvelle reservation)
11.1.1 Champs pre-remplis (depuis la grille)
| Champ | Source | Modifiable |
|---|---|---|
| Centre | Picklist de la grille | Non |
| Terrain | Colonne cliquee | Oui (dropdown) |
| Date | Date affichee dans la grille | Oui (datepicker) |
| Heure de debut | Ligne cliquee | Oui (timepicker) |
| Duree | 1h par defaut | Oui (1h / 1h30 / 2h) |
[A VALIDER] : Le formulaire actuel permet la reservation de plusieurs terrains simultanement (champ 'מגרש/ים להשכרה'). Cette fonctionnalite doit-elle etre conservee dans le nouveau systeme ?
11.1.2 Recherche et selection du client
- Champ de recherche : Recherche par nom, prenom, telephone ou email
- Resultats : Liste des comptes Salesforce correspondants
- Selection : Clic sur un resultat remplit automatiquement les informations client
11.1.3 Creation rapide d'un nouveau client
Si le client n'existe pas dans le systeme :
Mode Guest (rapide) :
| Champ | Obligatoire |
|---|---|
| Prenom | Oui |
| Nom | Oui |
| Telephone | Oui |
| Non |
Mode Complet :
| Champ | Obligatoire |
|---|---|
| Prenom | Oui |
| Nom | Oui |
| Teudat Zehout (ID) | Oui |
| Date de naissance | Oui |
| Genre | Oui |
| Telephone | Oui |
| Oui | |
| Adresse | Non |
- Le mode Guest cree un compte minimal dans Salesforce
- Le mode Complet cree un compte standard
11.1.4 Type de reservation
- Dropdown : Reservation standard / Entrainement personnel / Blocage terrain / Cours collectif
- Le choix influence la couleur de la cellule dans la grille
11.1.5 Zone commentaires
- Champ texte libre pour notes internes
11.1.6 Bouton de validation
- "Reserver" : Cree la reservation et l'affiche dans la grille
- "Reserver et Payer" : Cree la reservation et enchaine vers le paiement
11.1.7 Enchainement vers le paiement
[EN SUSPENS] : L'ecran de paiement PelCard (via iframe) est-il dans le scope de cette mission ?
- Si oui : designer le flux de paiement integre
- Si non : le bouton "Payer" renvoie vers le module de paiement existant
- A confirmer avec VO2 / Merkaz Tennis
11.2 Mode "Creneau occupe" (Consultation/Modification)
Quand l'utilisateur clique sur une cellule deja occupee :
11.2.1 Informations affichees
| Donnee | Affichage |
|---|---|
| Nom du client | Texte + lien vers la fiche Salesforce |
| Telephone | Texte |
| Terrain | Numero + categorie |
| Date | JJ/MM/AAAA |
| Horaire | HH:MM - HH:MM |
| Duree | Xh |
| Type | Couleur + label |
| Commentaires | Texte |
| Reserve par | Nom de l'agent + date/heure de creation |
11.2.2 Actions disponibles
- Modifier : Ouvre le formulaire en mode edition
- Annuler la reservation : Avec confirmation ("Etes-vous sur ?")
- Deplacer : Ouvre un selecteur de creneau alternatif
Contexte : Wizard de reservation client actuel
Etape 1 - Choix du centre, type, jour, heure, duree
Etape 2 - Selection du terrain + carte du centre
Etape 3 - Paiement avec timer + VIP
12. Ecran 3 : Affichage Public TV (Entrees des centres)
Cet ecran est affiche en permanence sur les ecrans geants a l'entree de chaque centre. Les clients qui arrivent pour jouer consultent cet ecran pour connaitre leur numero de terrain.
12.1 Objectif et contexte
- Utilisateurs : Clients physiquement presents dans le centre
- Interaction : Aucune (lecture seule, pas de souris/clavier)
- Taille d'ecran : Grands ecrans TV (42" a 65")
- Distance de lecture : 2 a 5 metres
- Priorite : Lisibilite maximale, design epure, style "ecran d'information" (reference : ecrans des restaurants fast-food, ecrans d'aeroport)
12.2 Contenu affiche
L'ecran affiche les reservations en cours et a venir (fenetre glissante de 2 a 3 heures).
12.2.1 Par type de reservation
| Type | Informations affichees | Couleur |
|---|---|---|
| Reservation standard | Nom, Prenom, Numero de terrain | Gris |
| Cours collectif (Keita) | Nom du professeur, Numero de terrain | Bleu |
| Cours particulier (Imoun Ishi) | Nom du coach + Nom du client, Numero de terrain | Mauve |
| Terrain bloque | "Terrain indisponible", Numero de terrain | Jaune |
| Promotion active | Nom, Prenom, Numero de terrain, Badge "Promo" | Vert clair |
12.2.2 Donnees NON affichees sur l'ecran TV
- Pas de liste d'eleves des groupes
- Pas d'ages
- Pas de commentaires internes
- Pas de details financiers
12.3 Auto-scroll temporel
- OBLIGATOIRE : L'ecran defile automatiquement pour que l'heure actuelle soit toujours visible
- Fenetre : Affiche les 2-3 prochaines heures de reservations
- Frequence de rafraichissement : Toutes les 60 secondes (minimum) pour refleter les nouvelles reservations
12.4 Design
- Police : Grande, lisible a distance (minimum 24pt equivalent) - a definir police exact a fournir par le client
- Contraste : Fort (fond sombre, texte clair OU fond clair, texte sombre - a tester)
- Organisation : Par categorie sportive (liserets colores) puis par terrain
- Pas de header complexe : Juste le nom du centre + l'heure actuelle
- Mode plein ecran : S'ouvre en mode fullscreen dans le navigateur
12.5 Elements en suspens pour l'ecran TV
[A VALIDER] : Design exact souhaite par le client (style McDo ? Style aeroport ? Style tableau des scores ?)
[A VALIDER] : Faut-il afficher les creneaux vides (terrains disponibles) ou seulement les creneaux occupes ?
[A VALIDER] : Filtrage par categorie sportive sur l'ecran TV ou affichage de toutes les categories ?
[A VALIDER] : Affichage du nom complet ou seulement initiales/prenom pour la confidentialite ?
13. Ecran 4 : Resolution de Conflits (Chevauchements)
13.1 Detection visuelle
Quand deux reservations se chevauchent sur le meme terrain et le meme creneau :
- Les cellules en conflit sont encadrees en rouge vif
- Une icone d'alerte (triangle avec exclamation) apparait
- Un compteur de conflits s'affiche dans le header de la grille
13.2 Modal de resolution
Au clic sur une cellule en conflit, une modal specifique s'ouvre avec :
| Information | Affichage |
|---|---|
| Reservation A | Nom client, horaire, type, date de creation |
| Reservation B | Nom client, horaire, type, date de creation |
| Terrain concerne | Numero + categorie |
| Type de conflit | Chevauchement total / partiel |
13.3 Options de resolution
- Deplacer la reservation A : Ouvre un selecteur de creneau alternatif pour A
- Deplacer la reservation B : Ouvre un selecteur de creneau alternatif pour B
- Annuler la reservation A : Supprime A (avec confirmation)
- Annuler la reservation B : Supprime B (avec confirmation)
- Forcer (conserver les deux) : Maintient le conflit (utilisateur averti, decision volontaire, necessite un profil avec permission)
[A VALIDER] : Y a-t-il une regle de priorite automatique ? (ex: premier arrive premier servi, cours collectif prioritaire sur individuel, etc.)
14. Modele de Donnees
14.1 Entite : Centre (Merkaz)
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| ID | Auto | Oui | Identifiant unique |
| Nom | Texte | Oui | Nom du centre (ex: Jerusalem, Haifa, Ramat HaSharon) |
| Ville | Texte | Oui | Ville |
| Adresse | Texte | Non | Adresse complete |
| Telephone | Texte | Non | Numero de contact |
| Heure d'ouverture | Heure | Oui | Heure de debut d'activite |
| Heure de fermeture | Heure | Oui | Heure de fin d'activite |
| Statut | Picklist | Oui | Ouvert / Ferme / Restreint |
| GPS Latitude | Nombre | Non | Pour geolocalisation |
| GPS Longitude | Nombre | Non | Pour geolocalisation |
14.2 Entite : Categorie Sportive
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| ID | Auto | Oui | Identifiant unique |
| Nom | Texte | Oui | Tennis, Paddle, Squash, Pickleball, Football, Studio, Fitness |
| Couleur | Hex | Oui | Code couleur d'affichage |
| Icone | Image/SVG | Non | Icone representative |
| Actif | Boolean | Oui | Categorie active dans le systeme |
14.3 Entite : Terrain (Migrash)
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| ID | Auto | Oui | Identifiant unique (API Name) |
| Numero d'affichage | Texte | Oui | Numero visible (ex: "Paddle 1", "Tennis 3") |
| Centre | Lookup | Oui | Reference vers le Centre |
| Categorie | Lookup | Oui | Reference vers la Categorie Sportive |
| Heure d'ouverture | Heure | Non | Override des heures du centre |
| Heure de fermeture | Heure | Non | Override des heures du centre |
| Statut | Picklist | Oui | Actif / En maintenance / Ferme |
| Couvert | Boolean | Non | Terrain couvert ou decouvert |
| Eclairage | Boolean | Non | Terrain eclaire (pour jeu en soiree) |
14.4 Entite : Reservation (Hazmana)
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| ID | Auto | Oui | Identifiant unique |
| Terrain | Lookup | Oui | Reference vers le Terrain |
| Client | Lookup | Oui | Reference vers le Compte client |
| Date | Date | Oui | Date de la reservation |
| Heure de debut | Heure | Oui | Heure de debut |
| Heure de fin | Heure | Oui | Heure de fin |
| Duree (minutes) | Nombre | Oui | 60, 90 ou 120 |
| Type | Picklist | Oui | Standard / Entrainement personnel / Blocage / Cours collectif / Promotion |
| Statut | Picklist | Oui | Confirmee / En attente / Annulee / En cours |
| Entraineur | Lookup | Non | Reference vers le Coach (si applicable) |
| Shiboutz Atzmi | Boolean | Non | True si reservation interne |
| Commentaires | Texte long | Non | Notes |
| Cree par | Utilisateur | Oui | Agent qui a cree la reservation |
| Date de creation | DateTime | Oui | Horodatage |
| Recurrence | Lookup | Non | Reference vers une regle de recurrence |
| Montant | Devise | Non | Montant facture |
| Methode de paiement | Picklist | Non | CB / Cartisia / Manoui / Cash / Aucun |
14.5 Entite : Regle de Blocage (Chissima)
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| ID | Auto | Oui | Identifiant unique |
| Niveau | Picklist | Oui | Organisation / Centre / Categorie / Terrain |
| Centre | Lookup | Conditionnel | Si niveau Centre ou inferieur |
| Categorie | Lookup | Conditionnel | Si niveau Categorie ou Terrain |
| Terrain | Lookup | Conditionnel | Si niveau Terrain |
| Date de debut | DateTime | Oui | Debut du blocage |
| Date de fin | DateTime | Oui | Fin du blocage (retour automatique a la normale) |
| Motif | Texte | Oui | Raison du blocage |
| Impact reservations | Boolean | Oui | Bloque aussi les reservations existantes ? |
| Impact cours | Boolean | Oui | Annule aussi les cours programmes ? |
| Tarif special | Lookup | Non | Tarif derogatoire pendant le blocage |
| Cree par | Utilisateur | Oui | Qui a cree la regle |
| Statut | Picklist | Oui | Active / Expiree / Annulee |
14.6 Entite : Client (Lakhoah)
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| ID | Auto | Oui | Identifiant Salesforce |
| Prenom | Texte | Oui | |
| Nom | Texte | Oui | |
| Teudat Zehout | Texte | Non (Guest) / Oui (Complet) | Numero ID israelien |
| Date de naissance | Date | Non | |
| Genre | Picklist | Non | Homme / Femme |
| Telephone | Texte | Oui | |
| Texte | Non (Guest) / Oui (Complet) | ||
| Centre de reference | Lookup | Non | Centre habituel |
| Type | Picklist | Oui | Guest / Standard / Abonne / VIP |
| Solde Arnak (Wallet) | Devise | Non | Solde du porte-monnaie numerique |
14.7 Schema relationnel (vue simplifiee)
Centre 1--N Terrain | Centre 1--N Categorie Sportive
Terrain 1--N Reservation | Client 1--N Reservation
Entraineur 1--N Reservation
Centre/Categorie/Terrain ← Regle de Blocage
15. Contraintes Techniques Salesforce LWC
Le prototype HTML devra etre concu en tenant compte des contraintes suivantes, documentees par Salesforce pour les Lightning Web Components.
15.1 Shadow DOM et CSS
- Les styles CSS sont confines au composant (Shadow DOM) : impossible de styler un composant enfant depuis un composant parent
- Le theming doit passer par des CSS Custom Properties (variables CSS)
- Les selecteurs d'ID ne fonctionnent pas en LWC (les IDs sont transformes en runtime)
15.2 Drag & Drop
- Pas d'API native de drag & drop dans LWC
- Implementation requise via l'API HTML5 Drag and Drop (dragstart, dragover, drop)
- Contrainte critique : les evenements drag ne traversent PAS les frontieres du Shadow DOM
15.3 Performance et volumes
- Maximum recommande : 1 000 lignes x 5 colonnes pour un datatable standard
- Pour la grille planning (ex: 20 terrains x 34 creneaux de 30 min = 680 cellules) : dans les limites acceptables
- Si plus de 25 terrains : envisager la pagination par categorie sportive ou le lazy loading
- Pas de composant standard datatable avec fusion de cellules : le composant grille devra utiliser du positionnement CSS absolu pour les blocs de reservation
15.4 Librairies tierces
- Upload en Static Resource obligatoire (max 5 MB par fichier)
- Interdit :
eval(),new Function(), injection de<script> - React, Vue, Angular : inutilisables dans LWC
- FullCalendar : v4 compatible avec
lwc:dom="manual", v5/v6 incompatibles - D3.js, Chart.js : compatibles sous LWS
15.5 Temps reel
- Mises a jour via Platform Events ou Change Data Capture (lightning/empApi)
- Latence inherente (near real-time, pas real-time strict)
- Maximum 2 000 souscripteurs concurrents par organisation
15.6 iframes (pour PelCard)
- LWS restreint les
srca http:// et https:// - Cross-origin : meme politique que le navigateur
- Integration PelCard possible via iframe avec
postMessagepour la communication
15.7 Calendrier standard Salesforce
- Limite a 150 evenements : inutilisable pour ce cas d'usage
- Composant custom obligatoire pour la grille de planning
16. Elements en Suspens (A Confirmer)
Les elements suivants necessitent une validation de VO2 et/ou du client final Merkaz Tennis avant la finalisation des maquettes :
| # | Element | Question | Impact |
|---|---|---|---|
| 1 | Ecran TV public | Design exact souhaite (style McDo, aeroport, tableau des scores ?) | Design ecran 3 |
| 2 | Ecran TV public | Afficher les creneaux vides ou seulement les occupes ? | Contenu ecran 3 |
| 3 | Ecran TV public | Nom complet ou initiales pour confidentialite ? | Donnees ecran 3 |
| 4 | Paiement PelCard | L'ecran de paiement est-il dans le scope de cette mission ? | Ecran 2 - flow post-reservation |
| 5 | Codes couleur hex | Codes hexadecimaux exacts des couleurs actuelles | Ecrans 1, 2, 3 |
| 6 | Categories sport | Liste definitive des categories par centre | Ecran 1 - filtres |
| 7 | Icone Shiboutz Atzmi | Icone exacte a utiliser pour les reservations internes | Ecran 1 - cellules |
| 8 | Regle de priorite conflits | Y a-t-il une hierarchie automatique pour resoudre les conflits ? | Ecran 4 |
| 9 | Permissions par role | Matrice detaillee des droits par role utilisateur | Tous les ecrans |
| 10 | Durees par categorie | Quelles durees sont disponibles pour chaque sport ? | Ecran 2 |
17. Glossaire
| Terme hebreu | Transcription | Traduction / Signification |
|---|---|---|
| לוח מגרשים | Looze Migrashim | Emploi du temps / Planning des terrains |
| מגרש | Migrash | Terrain |
| מרכז | Merkaz | Centre |
| השכרה | Hashkara | Location / Reservation |
| שיבוץ עצמי | Shiboutz Atzmi | Assignation interne (reservation par un employe) |
| מגרש חסום | Migrash Hassoum | Terrain bloque |
| אימון אישי | Imoun Ishi | Entrainement personnel |
| קהילה | Kehila | Communaute |
| קייטה | Keita | Programme / Camp pour enfants |
| כרטיסייה | Cartisia | Carte multi-reservations |
| מנוי | Manoui | Abonne / Abonnement |
| ארנק | Arnak | Porte-monnaie / Wallet |
| תעריף | Taarif | Tarif |
| הקפאה | Hakpaa | Gel (suspension d'un compte/abonnement) |
| ביטול | Bittoul | Annulation |
| גיל שלישי | Gil Chichimi | 3eme age / Seniors |
| מתאמן | Mitamen | Sportif / Personne qui s'entraine |
| מאמן | Meamen | Entraineur / Coach |
| יום ללא פעילות | Yom Lelo Peulot | Jour sans activite (fermeture partielle) |
| חסימה | Hassima | Blocage |
| דין תורה | Din Torah | Procedure de conciliation rabbinique |