Initialisation du dépôt : specs (socle plateforme, modèle de données, site vitrine) et steering

This commit is contained in:
2026-10-12 11:06:57 +02:00
commit 0a33e755ff
12 changed files with 1512 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
{"specId": "8d383a0b-2d6f-42b2-80cc-975c7db17b09", "workflowType": "requirements-first", "specType": "feature"}
+174
View File
@@ -0,0 +1,174 @@
# Requirements Document
**Spec : Site Vitrine SchotzimmO**
## Introduction
Le **Site Vitrine** est le site public de **SchotzimmO**, la plateforme SaaS multi-réseaux destinée aux mandataires immobiliers. Accessible sans authentification sur le domaine **schotzimmo.fr**, il constitue la porte d'entrée commerciale de la Plateforme : il présente l'offre (modules, packs tarifaires, réseaux de mandataire immobilier pris en charge), permet d'essayer une démonstration et oriente le visiteur vers la connexion de l'App.
Le Site Vitrine se présente comme une **page vitrine unique** (one-page, de type tunnel de vente) à défilement et navigation par ancres, surmontée d'un **en-tête persistant** (logo + bouton Connexion) et complétée d'un **pied de page** donnant accès à des **pages séparées** : Contact, Mentions légales, CGU et Politique de confidentialité (RGPD).
Le Site Vitrine ne contient **aucun parcours d'inscription** ni aucun mécanisme d'authentification propre : l'inscription et l'authentification relèvent du socle et de l'App. Le Site Vitrine se contente de **rediriger** le visiteur vers la page d'authentification de l'App (cf. `socle-plateforme`, Requirement 2 — Authentification et session) et vers la **connexion démo** sur le réseau fictif SchotzimmO (cf. `socle-plateforme`, Requirements 2 et 3). Le Site Vitrine ne persiste aucune donnée métier ; le Formulaire_Contact envoie simplement un e-mail via le service d'envoi déjà prévu par la Plateforme.
> **Note** : Ce document exprime le besoin **fonctionnel métier** (attendu fonctionnel, structure du site, contenus et règles de gestion) fourni par le Product Owner business. Les exigences **techniques** dérivées (stack frontend/backend commune à l'App, sous-dossier `Site/`, intégration du service d'envoi d'e-mails, rendu responsive, SEO, redirections d'URL) seront rassemblées dans le document `design-requirements.md`, organisé **en miroir** (même numérotation et même titre, suivis de « — aspects techniques »), à préciser conjointement par le PO business et le PO IT. Chaque exigence renvoie, lorsque pertinent, à son pendant technique dans `design-requirements.md`.
---
## Glossary
- **Site_Vitrine** : Le site public de SchotzimmO, accessible sans authentification sur le domaine schotzimmo.fr, présentant l'offre et orientant le visiteur vers l'App. Distinct de l'App (la Plateforme authentifiée décrite par la spec `socle-plateforme` et les specs Modules).
- **App** : La Plateforme authentifiée SchotzimmO (frontend et backend applicatifs), accessible après connexion, décrite par les specs `socle-plateforme` et Modules.
- **Visiteur** : Toute personne consultant le Site_Vitrine, sans authentification ni Compte requis.
- **Page_Vitrine** : La page unique (one-page) du Site_Vitrine, à défilement vertical et navigation par ancres, regroupant dans un ordre défini l'ensemble des Sections commerciales.
- **Section** : Un bloc de contenu de la Page_Vitrine, repérable par une ancre et atteignable depuis la navigation. Les Sections de la Page_Vitrine sont, dans l'ordre : Hero, Fonctionnalités, Tarifs, Réseaux pris en charge, Démo.
- **Section_Hero** : La première Section de la Page_Vitrine : accroche et présentation générale de SchotzimmO.
- **Section_Fonctionnalités** : La Section présentant les Modules de la Plateforme (Carnet d'adresses, KMS, CRM, Agenda, Facturation).
- **Section_Tarifs** : La Section présentant les trois Packs d'abonnement (Starter gratuit, Pro, Premium) et les Modules inclus dans chacun.
- **Section_Réseaux** : La Section présentant les Réseaux_Pris_En_Charge (IAD au lancement).
- **Section_Démo** : La Section invitant à essayer la démonstration, comportant le Bouton_Démo.
- **En_Tête** : La barre persistante affichée en haut du Site_Vitrine, contenant le logo SchotzimmO et le Bouton_Connexion, visible sur toutes les pages et sections.
- **Pied_De_Page** : La zone de bas de page du Site_Vitrine donnant accès aux Pages_Légales et à la page Contact.
- **Logo** : La marque visuelle SchotzimmO affichée dans l'En_Tête ; un clic sur le Logo ramène en haut de la Page_Vitrine.
- **Bouton_Connexion** : Le contrôle de l'En_Tête redirigeant le Visiteur vers la page d'authentification de l'App (cf. `socle-plateforme`, Requirement 2).
- **Bouton_Démo** : Le contrôle de la Section_Démo redirigeant le Visiteur vers la connexion démo de l'App sur le Réseau_Fictif (cf. `socle-plateforme`, Requirements 2 et 3).
- **Démo** : La démonstration de l'App ouverte au Visiteur, s'appuyant sur le Réseau_Fictif ; disponible en environnement de production et utilisée pour les tests en environnement de développement.
- **Réseau_Fictif** : Le réseau de démonstration SchotzimmO (réseau fictif) servant de support à la Démo (cf. `socle-plateforme`, Requirement 3 — Réseaux).
- **Module** : Une unité fonctionnelle de la Plateforme présentée dans la Section_Fonctionnalités (Carnet_Adresses, KMS, CRM, Agenda, Facturation). Défini au socle (cf. `socle-plateforme`).
- **Pack** : Une formule d'abonnement présentée dans la Section_Tarifs. Trois Packs : Starter (gratuit), Pro, Premium (cf. `socle-plateforme`, Requirement 7).
- **Réseau_Pris_En_Charge** : Un réseau de mandataire immobilier dont les mandataires peuvent utiliser SchotzimmO (IAD au lancement). Le terme « réseau de mandataire immobilier pris en charge » est employé plutôt qu'« affilié », aucun lien contractuel ne liant SchotzimmO à ces réseaux.
- **Formulaire_Contact** : Le formulaire de la page Contact permettant au Visiteur d'adresser un message (notamment pour signaler un nouveau réseau à implémenter), envoyé par e-mail sans aucune persistance.
- **Email_Contact** : L'e-mail engendré par la soumission du Formulaire_Contact, acheminé vers l'adresse de contact de l'exploitant via le service d'envoi d'e-mails de la Plateforme.
- **Page_Contact** : La page séparée (hors Page_Vitrine) hébergeant le Formulaire_Contact.
- **Pages_Légales** : L'ensemble des pages séparées à vocation légale et réglementaire : Mentions légales, CGU (Conditions Générales d'Utilisation) et Politique de confidentialité (RGPD).
- **Navigation_Ancres** : Le mécanisme de navigation interne à la Page_Vitrine amenant, par défilement, de l'En_Tête ou d'un menu vers la Section visée.
---
## Requirements
### Requirement 1: En-tête et accès à la connexion
**User Story:** En tant que visiteur, je veux disposer d'un en-tête persistant avec le logo SchotzimmO et un bouton de connexion, afin d'identifier le service et d'accéder à tout moment à la connexion de l'App.
> Exigences techniques associées (rendu de l'En_Tête, URL d'authentification de l'App, redirection) : `design-requirements.md`, Requirement 1.
#### Acceptance Criteria
1. THE Site_Vitrine SHALL afficher un En_Tête contenant le Logo SchotzimmO et le Bouton_Connexion sur la Page_Vitrine, sur chaque Page_Légale et sur la Page_Contact.
2. WHEN le Visiteur sélectionne le Bouton_Connexion, THE Site_Vitrine SHALL rediriger le Visiteur vers la page d'authentification de l'App.
3. WHEN le Visiteur sélectionne le Logo depuis la Page_Vitrine, THE Site_Vitrine SHALL ramener le Visiteur en haut de la Page_Vitrine.
4. WHILE le Visiteur consulte la Page_Vitrine, une Page_Légale ou la Page_Contact, THE Site_Vitrine SHALL maintenir l'En_Tête visible pendant toute la durée du défilement vertical de la page.
5. WHEN le Visiteur sélectionne le Logo depuis une Page_Légale ou depuis la Page_Contact, THE Site_Vitrine SHALL afficher la Page_Vitrine et positionner le Visiteur en haut de celle-ci.
---
### Requirement 2: Page vitrine unique et navigation
**User Story:** En tant que visiteur, je veux parcourir une page unique claire et ordonnée, consultable sur mobile et en français, afin de découvrir l'offre SchotzimmO sans friction.
> Exigences techniques associées (one-page, ancres, responsive, langue, rendu du Pied_De_Page) : `design-requirements.md`, Requirement 2.
#### Acceptance Criteria
1. THE Site_Vitrine SHALL présenter une Page_Vitrine unique regroupant, dans cet ordre et sans qu'aucune autre Section ne s'intercale, la Section_Hero, la Section_Fonctionnalités, la Section_Tarifs, la Section_Réseaux puis la Section_Démo.
2. THE Site_Vitrine SHALL afficher dans l'En_Tête une Navigation_Ancres comportant un élément cliquable distinct pour chacune des cinq Sections (Section_Hero, Section_Fonctionnalités, Section_Tarifs, Section_Réseaux, Section_Démo).
3. WHEN le Visiteur sélectionne un élément de la Navigation_Ancres, THE Site_Vitrine SHALL faire défiler la Page_Vitrine jusqu'à ce que le haut de la Section correspondante soit visible dans la zone d'affichage, sans recharger la Page_Vitrine.
4. THE Site_Vitrine SHALL afficher un Pied_De_Page contenant quatre liens cliquables distincts donnant accès respectivement à la Page_Contact, aux Mentions légales, aux CGU et à la Politique de confidentialité.
5. THE Site_Vitrine SHALL présenter l'intégralité de ses contenus textuels visibles en langue française uniquement, sans aucun contenu rédigé dans une autre langue.
6. WHERE le Site_Vitrine est consulté depuis un terminal mobile dont la largeur d'écran est inférieure ou égale à 768 pixels, THE Site_Vitrine SHALL adapter sa présentation à la largeur d'écran sans défilement horizontal, tout en conservant l'ordre des cinq Sections ainsi que l'accès à l'En_Tête et au Pied_De_Page.
7. IF le Visiteur sélectionne un élément de la Navigation_Ancres dont la Section cible est absente ou inaccessible, THEN THE Site_Vitrine SHALL maintenir l'affichage courant de la Page_Vitrine sans la recharger.
---
### Requirement 3: Section Fonctionnalités
**User Story:** En tant que visiteur, je veux comprendre les modules proposés par SchotzimmO, afin d'évaluer si la plateforme répond à mes besoins de mandataire.
> Exigences techniques associées (contenu éditorial des Modules, rendu de la Section) : `design-requirements.md`, Requirement 3.
#### Acceptance Criteria
1. THE Section_Fonctionnalités SHALL présenter exactement les cinq Modules suivants, sans en omettre ni en ajouter : Carnet d'adresses, KMS, CRM, Agenda et Facturation.
2. THE Section_Fonctionnalités SHALL associer à chacun des cinq Modules présentés une description distincte de son rôle fonctionnel du point de vue du mandataire, de sorte qu'aucun Module ne reste sans description.
3. THE Section_Fonctionnalités SHALL désigner chaque Module par la dénomination exacte définie au socle (Carnet_Adresses, KMS, CRM, Agenda, Facturation) (cf. `socle-plateforme`).
---
### Requirement 4: Section Tarifs
**User Story:** En tant que visiteur, je veux consulter les formules tarifaires et les modules inclus, afin de choisir le pack adapté à mon activité.
> Exigences techniques associées (contenu éditorial des Packs, rendu de la Section) : `design-requirements.md`, Requirement 4.
#### Acceptance Criteria
1. THE Section_Tarifs SHALL présenter exactement trois Packs, dans cet ordre : Starter (gratuit), Pro puis Premium.
2. THE Section_Tarifs SHALL indiquer, pour chaque Pack, la liste complète des Modules inclus en employant la dénomination des Modules définie au socle (cf. `socle-plateforme`, Requirement 8).
3. THE Section_Tarifs SHALL distinguer visuellement, pour chaque Pack, les Modules inclus des Modules non inclus.
4. THE Section_Tarifs SHALL afficher explicitement, pour le Pack Starter, la mention de sa gratuité et l'absence de coût d'abonnement.
5. THE Section_Tarifs SHALL présenter chaque Pack comme incluant l'ensemble des Modules des Packs de niveau inférieur (le Pack Pro inclut les Modules du Pack Starter ; le Pack Premium inclut les Modules des Packs Pro et Starter), de manière cohérente avec les Packs définis au socle (cf. `socle-plateforme`, Requirements 7 et 8).
---
### Requirement 5: Section Réseaux de mandataire immobilier pris en charge
**User Story:** En tant que visiteur mandataire, je veux savoir quels réseaux de mandataire immobilier sont pris en charge, afin de vérifier que SchotzimmO est compatible avec mon réseau.
> Exigences techniques associées (contenu éditorial des réseaux, rendu de la Section) : `design-requirements.md`, Requirement 5.
#### Acceptance Criteria
1. THE Section_Réseaux SHALL présenter chaque Réseau_Pris_En_Charge de façon identifiable par son nom, incluant le réseau IAD nommé au lancement.
2. THE Section_Réseaux SHALL employer la dénomination « réseaux de mandataire immobilier pris en charge » pour désigner les Réseaux_Pris_En_Charge.
3. THE Section_Réseaux SHALL n'employer en aucun endroit le terme « affiliés » pour désigner les Réseaux_Pris_En_Charge.
4. WHERE un Visiteur souhaite signaler un réseau non encore pris en charge, THE Section_Réseaux SHALL afficher un renvoi explicite vers la Page_Contact.
5. WHEN le Visiteur sélectionne le renvoi vers la Page_Contact depuis la Section_Réseaux, THE Site_Vitrine SHALL afficher la Page_Contact.
---
### Requirement 6: Section Essayer la démo
**User Story:** En tant que visiteur, je veux essayer une démonstration de l'App, afin de me faire une idée concrète avant de m'engager.
> Exigences techniques associées (URL de connexion démo, Réseau_Fictif, environnements prod/dev) : `design-requirements.md`, Requirement 6.
#### Acceptance Criteria
1. WHILE la Section_Démo est affichée, THE Site_Vitrine SHALL afficher un Bouton_Démo portant un libellé invitant le Visiteur à essayer la Démo.
2. WHEN le Visiteur sélectionne le Bouton_Démo, THE Site_Vitrine SHALL rediriger le Visiteur vers la connexion démo de l'App sur le Réseau_Fictif SchotzimmO.
3. IF la redirection vers la connexion démo de l'App ne peut pas aboutir après la sélection du Bouton_Démo, THEN THE Site_Vitrine SHALL maintenir le Visiteur sur la Section_Démo et afficher un message d'erreur indiquant que la Démo est momentanément indisponible.
4. THE Section_Démo SHALL afficher un message visible indiquant que la Démo s'appuie sur le Réseau_Fictif SchotzimmO et ne mobilise aucune donnée réelle de Réseau_Pris_En_Charge.
---
### Requirement 7: Contact par e-mail
**User Story:** En tant que visiteur, je veux adresser un message à l'exploitant SchotzimmO (notamment pour signaler un nouveau réseau à implémenter), afin d'obtenir une réponse par e-mail, sans qu'aucune donnée ne soit conservée.
> Exigences techniques associées (service d'envoi d'e-mails, absence de persistance, validation des champs) : `design-requirements.md`, Requirement 7.
#### Acceptance Criteria
1. THE Page_Contact SHALL présenter un Formulaire_Contact comportant exactement trois champs obligatoires : le nom (1 à 100 caractères), l'adresse e-mail (1 à 254 caractères) et le message (1 à 2000 caractères) du Visiteur.
2. WHEN le Visiteur soumet le Formulaire_Contact avec les trois champs obligatoires renseignés et valides, THE Site_Vitrine SHALL engendrer un Email_Contact contenant le nom, l'adresse e-mail et le message saisis, à destination de l'adresse de contact de l'exploitant.
3. WHEN l'Email_Contact a été engendré avec succès, THE Site_Vitrine SHALL afficher au Visiteur un message de confirmation d'envoi distinct du Formulaire_Contact.
4. THE Site_Vitrine SHALL n'enregistrer aucune donnée du Formulaire_Contact de manière persistante, l'unique traitement des données saisies étant leur transmission dans l'Email_Contact.
5. IF un champ obligatoire du Formulaire_Contact est absent, vide ou dépasse sa longueur maximale autorisée, THEN THE Site_Vitrine SHALL afficher un message d'erreur identifiant chaque champ en défaut, conserver la saisie en cours et n'engendrer aucun Email_Contact.
6. IF l'adresse e-mail saisie ne contient pas un identifiant local suivi d'un caractère « @ » puis d'un nom de domaine comportant au moins un point, THEN THE Site_Vitrine SHALL refuser l'envoi, signaler que l'adresse e-mail est invalide et conserver la saisie en cours.
7. IF l'envoi de l'Email_Contact échoue, THEN THE Site_Vitrine SHALL informer le Visiteur de l'échec de l'envoi, l'inviter à réessayer et conserver l'intégralité de la saisie en cours.
---
### Requirement 8: Pages légales
**User Story:** En tant que visiteur, je veux accéder aux mentions légales, aux CGU et à la politique de confidentialité, afin de connaître mes droits et les conditions d'utilisation du service.
> Exigences techniques associées (pages séparées, routes dédiées, rendu) : `design-requirements.md`, Requirement 8.
#### Acceptance Criteria
1. THE Site_Vitrine SHALL fournir trois Pages_Légales distinctes et indépendantes de la Page_Vitrine : une page pour les Mentions légales, une page pour les CGU et une page pour la Politique de confidentialité (RGPD).
2. WHEN le Visiteur sélectionne un lien de Pied_De_Page vers une Page_Légale, THE Site_Vitrine SHALL afficher la Page_Légale correspondante sur une page séparée de la Page_Vitrine.
3. IF une Page_Légale sélectionnée est indisponible, THEN THE Site_Vitrine SHALL maintenir le Visiteur sur une page comportant le Pied_De_Page et afficher un message indiquant que la page demandée est momentanément indisponible.
4. THE Politique de confidentialité SHALL décrire au minimum la finalité du traitement des données du Formulaire_Contact, leur transmission par e-mail uniquement et l'absence de toute persistance de ces données.
5. THE Site_Vitrine SHALL présenter dans le Pied_De_Page de chaque page (Page_Vitrine, Page_Contact et chaque Page_Légale) un lien actif vers chacune des trois Pages_Légales.