# 05 — Roadmap & phases

> Étapes d'implémentation. Statut détaillé par module dans [07 — Suivi](07-suivi.md).

## Vue d'ensemble

| Phase | Thème | Statut |
|---|---|---|
| **0** | Socle sécurité & portail (RBAC, chiffrement, alertes, détection menaces) | ✅ Livré |
| **1** | Connexion DB par boutique + chiffrement + test de connexion | ✅ Livré |
| **1.5** | Client de test AmansaShop + tests fonctionnels de l'auth API | ✅ Livré |
| **2** | **Fondations POS** : catalogue, stock, ventes (dont anonymes), caisse & paiements | ✅ Fondations livrées (catalogue, ventes, caisse Z, stock — API v1 + écrans PWA) ; raffinements (remises, avoirs, multi-paiements, inventaires) à venir |
| **3** | **Compléments POS** : clients/CRM, rapports, achats/fournisseurs, promotions, facturation/taxes | ✅ Livré (rapports, CRM, achats, remises, facturation PDF, **avoirs/retours**) ; raffinements restants : promos avancées (codes/règles), taxes multiples, remboursement partiel |
| **4** | **E-commerce** : connecteur **WooCommerce** (données), enrichissement catalogue, **design des sites clients** ; projection central→base client (Messenger) | ✅ Canal WooCommerce livré (chantiers E1 et E2) ; 🚧 design des sites (E3) ; ⬜ canal projection (non retenu pour l'instant) |
| **5** | **API PWA** : endpoints métier v1, `/api/mobile/*`, offline/idempotence, OpenAPI | À faire |
| **6** | **Intégration Ionic** (projet `../yima-shop/`) + sites e-commerce Symfony | 🚧 Démarré (socle + auth PWA livrés) |
| **7** | **Industrialisation** : backups par tenant, provisioning auto, CI, observabilité | À faire |

## Détail des phases à venir

### Phase 2 — Fondations POS
Dépend de : RBAC, modèle de données central.
- Modules : [Catalogue](modules/catalogue-produits.md), [Stock](modules/stock-inventaire.md), [POS/Ventes](modules/pos-ventes.md), [Caisse & paiements](modules/caisse-paiements.md).
- Livrables : entités + CRUD web + endpoints API v1 + permissions seedées + tests.
- Jalon : encaisser une **vente (dont anonyme)** de bout en bout (produit → panier → paiement → ticket → mouvement de stock → session de caisse).

**Incréments livrés (2026-07-24)** :
- **Catalogue** : entités `Product`/`ProductCategory`, API v1 `/api/v1/products` & `/api/v1/categories`, fixtures de démo, écran PWA Produits. Détails : [fiche Catalogue §0](modules/catalogue-produits.md).
- **POS/Ventes** : entités append-only `Sale`/`SaleLine`/`Payment`, API `/api/v1/sales` (prix serveur, idempotence), écran PWA Vente (encaissement anonyme espèces de bout en bout). Détails : [fiche POS §0](modules/pos-ventes.md).
- **Caisse** : entité `CashSession`, rattachement des ventes à la session ouverte, API `/api/v1/cash-sessions` (open/current/close), écran PWA Caisse (ouverture, totaux live, clôture Z avec écart). Détails : [fiche Caisse §0](modules/caisse-paiements.md).
- **Stock** : entités `StockItem`/`StockMovement`, `StockService` (sortie auto à la vente), API `/api/v1/stock` (+ mouvements manuels), stock affiché au catalogue/vente et décrémenté à la vente. Détails : [fiche Stock §0](modules/stock-inventaire.md).

**Jalon phase 2 atteint** : encaisser une vente anonyme de bout en bout (produit → panier → paiement → ticket → **mouvement de stock** → **session de caisse**). Raffinements restants : ventilation multi-paiements, remises ligne/ticket, avoirs/retours, inventaires & seuils d'alerte, sélection client.

### Phase 3 — Compléments POS
- Modules : [Clients/CRM](modules/clients-crm.md), [Rapports](modules/rapports-analytics.md), [Achats/Fournisseurs](modules/fournisseurs-achats.md), [Promotions](modules/promotions.md), [Facturation/Taxes](modules/facturation-taxes.md), [Notifications](modules/notifications.md).
- Jalon : clôturer une journée (Z de caisse), réapprovisionner via un fournisseur, appliquer une promotion, éditer une facture conforme (NINEA/RCCM, TVA).

### Phase 4 — E-commerce

Le canal retenu est le **connecteur WooCommerce**, en mode *pull* piloté par licence ([ADR-008](notes/decisions.md)).
La phase se déroule en chantiers successifs, détaillés dans le [suivi](07-suivi.md).

- **Chantier E1 — Connecteur & licences** ✅ ([licences](modules/licences-comptes.md) · [connecteur](modules/woocommerce-connector.md)) : licences + écrans admin (E1‑A), API connecteur licence + HMAC (E1‑B), plugin `yima-wc-connector/` (E1‑C), synchro produits bidirectionnelle par SKU (E1‑D), stock temps réel (E1‑E), rupture = masquage + WhatsApp (E1‑F), boutique en ligne pilotée depuis la PWA (E1‑G), publication produit + stats + WhatsApp instantané (E1‑H).
- **Chantier E2 — Catalogue e-commerce enrichi** ✅ : catégories dans la synchro (E2‑A), champs SEO / publication produit (E2‑B).
- **Chantier E3 — Design des sites clients** ✅ ([fiche](modules/design-templates.md), [ADR-009](notes/decisions.md)) : plugin `yima-wc-design/` — socle jetons + en-tête/pied Elementor + widgets (E3‑A), bibliothèque de kits et importeur idempotent + kit Mode (E3‑B), kits Alimentation et Électronique (E3‑C), vérification en réel + retrait de kit et cohabitation HFE (E3‑D). **Validé de bout en bout** sur WordPress 7.0 / Astra / Elementor 4.2 gratuit / WooCommerce.
- **Canal alternatif — Projection** ⬜ ([fiche](modules/ecommerce-projection.md)) : synchro central→`CompanyDatabase` pour les clients **sans** site. Non retenu tant que WooCommerce couvre le besoin.
- Jalon : une boutique avec WooCommerce gère ses produits depuis yima, voit ses commandes en ligne remonter dans le POS, **et** obtient un site habillé en quelques minutes, retouchable dans Elementor.

### Phase 5 — API PWA
- Endpoints métier v1 complets, `/api/mobile/*` (device-bound), `Idempotency-Key`, pagination, OpenAPI.
- Jalon : la PWA peut tout faire (login, vendre hors-ligne, consulter).

### Phase 6 — Intégration Ionic & sites e-commerce
- Intégrer les specs PWA (déposées dans [integration-ionic/](integration-ionic/README.md)).
- Bootstrap des sites e-commerce Symfony par client (lecture base projetée).

**Incrément 1 livré (2026-07-24)** : socle de la PWA `../yima-shop/` (Angular 20 / Ionic 8) — HttpClient + intercepteur JWT (Bearer + refresh sur 401), guards, service worker/PWA, localisation FR/FCFA — et **authentification complète** contre l'API existante (login + flux 202 appareil/pays/IP/2FA, `/me`, refresh, logout) + shell à onglets. Détails : [`yima-shop/README.md`](../yima-shop/README.md). Les écrans métier (vente/catalogue/caisse) attendent les endpoints des phases 2 et 5.

### Phase 7 — Industrialisation
- Backups par tenant (généraliser `DatabaseBackupService`), provisioning auto (`CREATE DATABASE` + schéma), pipeline CI (tests), observabilité.

## Dépendances

```
Phase 2 (POS) ──► Phase 3 (compléments) ──► Phase 4 (projection) ──► Phase 6 (e-commerce)
      └──────────────► Phase 5 (API PWA) ──► Phase 6 (Ionic)
Transverse : Phase 7 (industrialisation)
```

## Principe de livraison

Chaque phase = incrément **testé** (tests verts), **documenté** (fiche module + suivi à jour), **non destructif** (schéma additif, vérifié `--dump-sql`). Une décision structurante ⇒ une entrée ADR.

## Suite

Plan de tests : [06 — Plan de tests](06-plan-de-tests.md).
