# SALSABIL MADRASSAS — P2 AL QIYAM PORTAIL + ADMISSIONS 2026-2027

## Base et nature du patch

- Base officielle : `b841dc13-b1b6-4bf7-9657-88959e6a9627.zip`
- P2 est **cumulatif** : il contient les changements P0 + P1 + P2 nécessaires depuis cette base.
- Extraction : directement à la racine du projet (`src/`, `templates/`, `migrations/`, `public/`, ...).
- Ne contient pas `vendor/`, `var/`, `.env*` ni `public/uploads/`.
- PHP attendu : PHP 8.4.x.

## Objectif P2

P2 ouvre le nouvel Institut Al Qiyam 2026-2027 tout en conservant les deux programmes historiques comme pôles durables :

1. **Internat Islamique de Vacances** — édition 2026 conservée et clôturée ; une édition 2027 pourra être créée plus tard comme nouvelle session.
2. **Madrassa / Formation des femmes** — session 2026 conservée et clôturée ; le pôle reçoit le slug durable `madrassa-femmes` pour les prochaines sessions.
3. **Al Qiyam Institute** — année académique 2026-2027 ouverte aux admissions.

Le tenant général devient **Al Qiyam** ; `Al Qiyam Institute` devient le nom du troisième pôle et non celui de toute l'école.

## Migration P2

Migration Doctrine :

`DoctrineMigrations\\Version20260924233000`

Elle est transactionnelle et :

- ne supprime aucune inscription, aucun étudiant, aucun paiement, aucune échéance et aucun suivi ;
- met les sessions Internat 2026 et Formation femmes 2026 en `active=0 / CLOTUREE` ;
- conserve leurs historiques et leurs identifiants ;
- renomme le pôle femmes en `Madrassa / Formation des femmes` avec le slug `madrassa-femmes` ;
- active la section `institut` ;
- active `Année académique 2026-2027`, rentrée le 12/10/2026 ;
- active les 9 filières et leurs 9 classes 2026-2027 ;
- fixe ces classes à `FEMME / PRESENTIEL / lundi au samedi / 07h30-17h00` ;
- ne crée **aucun tarif Institut** : la grille financière sera traitée séparément lorsqu'elle sera validée ;
- met à jour l'identité éditoriale générale du tenant vers `Al Qiyam` sans modifier les coordonnées techniques/WhatsApp enregistrées en base.

### Filières ouvertes

Département d'Informatique :
- Génie logiciel
- Télécommunications
- Graphiques informatiques et développement Web
- Science des données

Département de Commerce et Finance :
- Finance islamique
- Comptabilité
- Marketing et commerce international
- Banque et finance
- Microfinance

Tronc commun affiché sur le portail : Qur'an, Fiqh, Éthique islamique, Aqeedah et Tawhid, Hadith et Sira, Langue arabe.

## Portail public Al Qiyam

La page publique Al Qiyam est refondue pour présenter les trois pôles côte à côte.

- L'Internat et la Madrassa Femmes restent visibles même lorsqu'aucune nouvelle session n'est ouverte.
- Leur bouton d'inscription reste fermé tant qu'une session propre n'est pas active.
- L'Institut 2026-2027 est le seul pôle ouvert aux admissions immédiatement après P2.
- Les trois flyers officiels FR / EN / AR sont intégrés au thème public.
- Les informations publiques Institut affichées sont : rentrée 12 octobre 2026, lundi-samedi, 07h30-17h00, cadre 100% féminin, Nkolafeme Sud face au Lycée bilingue d'Ekorozok, +237 679 90 24 20 et +237 689 19 39 70.

## Inscription Institut

Le formulaire public Al Qiyam devient sensible à la session/pôle ouvert.

Pour l'Institut :
- seules les candidates femmes sont acceptées ;
- une seule filière professionnelle peut être choisie par dossier ;
- les 9 filières sont proposées, groupées par département ;
- la classe/promotion 2026-2027 correspondant à la filière est affectée automatiquement côté serveur ;
- le mode est fixé à `PRESENTIEL` ;
- le dossier et son parcours sont rattachés à l'année académique Institut 2026-2027 ;
- les anciennes sessions Internat/Femmes ne peuvent pas recevoir de nouvelles inscriptions tant qu'elles sont clôturées.

Les autres écoles (Qamar, Daroul-Ilm, Sahaba) conservent leur comportement historique.

## Contrôle P2

Nouvelle commande :

```bash
php bin/console app:alqiyam:p2-check --phase=before --env=prod
php bin/console app:alqiyam:p2-check --phase=after --env=prod
```

`before` exige l'état P1 attendu avant migration. `after` contrôle notamment :
- tenant `Al Qiyam` ;
- trois pôles présents ;
- historique Internat 2026 clôturé ;
- historique Femmes 2026 clôturé ;
- Institut actif ;
- année 2026-2027 ACTIVE ;
- rentrée du 12/10/2026 ;
- 9 filières actives ;
- 9 classes actives.

## Procédure production recommandée

### 0. Sauvegarde

Faire une sauvegarde SQL complète avant P2. Ne pas considérer un rollback Doctrine comme substitut à cette sauvegarde après réception de nouvelles inscriptions Institut.

### 1. Extraire le ZIP à la racine du projet

Puis :

```bash
php -v
php bin/console cache:clear --env=prod
```

Le CLI doit être en PHP 8.4.x. Sur certains cPanel, utiliser si nécessaire :

```bash
/opt/cpanel/ea-php84/root/usr/bin/php
```

à la place de `php` dans toutes les commandes suivantes.

### 2. Snapshot global avant P2

```bash
php bin/console app:platform:preflight \
  --snapshot=var/audit/platform-preflight-P2.json \
  --env=prod
```

### 3. Contrôle métier avant migration

```bash
php bin/console app:alqiyam:p2-check \
  --phase=before \
  --env=prod
```

**Ne pas poursuivre si cette commande retourne une erreur.**

### 4. Migration

```bash
php bin/console doctrine:migrations:migrate --no-interaction --env=prod
```

### 5. Cache et contrôles après migration

```bash
php bin/console cache:clear --env=prod

php bin/console app:alqiyam:p2-check \
  --phase=after \
  --env=prod

php bin/console app:platform:postflight \
  --snapshot=var/audit/platform-preflight-P2.json \
  --env=prod
```

## Volumes attendus immédiatement après P2

P2 ne crée aucune nouvelle ligne métier : il met à jour l'état des structures préparées en P1.

Sur la production validée après P1, les volumes structurants doivent donc rester :

- sections : 7
- annees_scolaires : 7
- niveaux : 21
- classes : 26
- etudiants : 123
- inscriptions : 129
- paiements : 59
- echeance_paiement : 574
- suivis_journaliers : 815

Dès qu'une première candidate soumettra le nouveau formulaire, le nombre d'inscriptions augmentera naturellement.

## Rollback

La migration `down()` refuse volontairement de revenir à P1 si des données métier Institut existent déjà. Une fois les admissions réellement utilisées, le rollback opérationnel sûr est la **restauration du backup SQL pré-P2** avec le code correspondant.

## Important

- Ne pas relancer `php bin/console app:seed:alqiyam` après P1/P2 : cette ancienne commande est neutralisée lorsqu'elle détecte l'architecture multi-pôles.
- P2 ne crée aucun échéancier ni règle de frais Institut.
- Les numéros/adresse des flyers sont affichés au niveau du portail Institut mais les coordonnées techniques de l'entité `ecoles` et la configuration WhatsApp ne sont pas remplacées automatiquement.
- Les incohérences historiques signalées par P0 dans Daroul-Ilm/Sahaba ne sont pas corrigées par P2.
