feat(gating): multi-profils (Base+) non destructif #300

Closed
opened 2026-07-19 21:18:20 +00:00 by maximus · 1 comment
Owner

Gating multi-profils (Base+), NON destructif : un Free garde son profil actif, les autres sont verrouilles mais conserves ; la creation est verrouillee.

Fichiers concernes

  • src/components/profile/ProfileSwitcher.tsx (modifier) — cadenas sur profils au-dela de l'actif.
  • src/components/profile/ProfileFormModal.tsx (modifier) — gate la creation (point unique).
  • src/pages/ProfileSelectionPage.tsx (modifier) — l'autre entree vers la creation.

Depends on

  • #297 (useEntitlement)
  • #298 (UpsellGate)

Criteres d'acceptation

  • Un Free avec plusieurs profils : le profil actif reste accessible ; les autres affichent un cadenas (et ready) -> upsell.
  • La creation d'un profil est verrouillee pour un Free ayant deja >= 1 profil.
  • Le gate vit au point unique ProfileFormModal (createProfile), ouvert depuis ProfileSwitcher ET ProfileSelectionPage (ou les 2 boutons d'entree sont desactives).
  • NON destructif : rien n'est retire de profiles.json ; apres upgrade Base, tous les profils reapparaissent intacts.

Review caveats (/review-spec — a respecter)

  • Le point unique de creation est ProfileFormModal (pas ProfileSwitcher seul) — gater la, sinon ProfileSelectionPage contourne.

Decisions prises en planification

  • Durcissement sec NON destructif (donnees conservees, blocage d'acces seulement).

Spec source

spec-decisions-feature-gating.md + spec-plan-feature-gating.md (racine, force-add ; verdict /review-spec jaune, corrections integrees).

Gating multi-profils (Base+), NON destructif : un Free garde son profil actif, les autres sont verrouilles mais conserves ; la creation est verrouillee. ## Fichiers concernes - `src/components/profile/ProfileSwitcher.tsx` (modifier) — cadenas sur profils au-dela de l'actif. - `src/components/profile/ProfileFormModal.tsx` (modifier) — gate la creation (point unique). - `src/pages/ProfileSelectionPage.tsx` (modifier) — l'autre entree vers la creation. ## Depends on - #297 (useEntitlement) - #298 (UpsellGate) ## Criteres d'acceptation - [ ] Un Free avec plusieurs profils : le profil actif reste accessible ; les autres affichent un cadenas (et `ready`) -> upsell. - [ ] La creation d'un profil est verrouillee pour un Free ayant deja >= 1 profil. - [ ] Le gate vit au point unique `ProfileFormModal` (createProfile), ouvert depuis ProfileSwitcher ET ProfileSelectionPage (ou les 2 boutons d'entree sont desactives). - [ ] NON destructif : rien n'est retire de profiles.json ; apres upgrade Base, tous les profils reapparaissent intacts. ## Review caveats (/review-spec — a respecter) - Le point unique de creation est ProfileFormModal (pas ProfileSwitcher seul) — gater la, sinon ProfileSelectionPage contourne. ## Decisions prises en planification - Durcissement sec NON destructif (donnees conservees, blocage d'acces seulement). ## Spec source spec-decisions-feature-gating.md + spec-plan-feature-gating.md (racine, force-add ; verdict /review-spec jaune, corrections integrees).
maximus added this to the planned-2026-07-19-feature-gating milestone 2026-07-19 21:18:20 +00:00
maximus added the
status:ready
type:feature
source:human
labels 2026-07-19 21:18:20 +00:00
Author
Owner

Correction /review-spec :

  • Le point unique de creation est ProfileFormModal (createProfile), ouvert depuis ProfileSwitcher ET ProfileSelectionPage — gater la (ou desactiver les 2 boutons d entree), pas seulement dans ProfileSwitcher. Ajouter ProfileFormModal.tsx + ProfileSelectionPage.tsx aux fichiers.
Correction /review-spec : - Le point unique de creation est **`ProfileFormModal`** (`createProfile`), ouvert depuis `ProfileSwitcher` ET `ProfileSelectionPage` — gater la (ou desactiver les 2 boutons d entree), pas seulement dans `ProfileSwitcher`. Ajouter `ProfileFormModal.tsx` + `ProfileSelectionPage.tsx` aux fichiers.
maximus added
status:review
and removed
status:ready
labels 2026-07-21 02:25:06 +00:00
maximus added
status:approved
and removed
status:review
labels 2026-07-21 12:11:34 +00:00
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: maximus/Simpl-Resultat#300
No description provided.