d0b354f81e
CI / Contraintes NON-NÉGOCIABLES (CLAUDE.md) (push) Has been cancelled
CI / Validation JSON (schémas Faisabilité) (push) Has been cancelled
CI / Qualité documentaire (liens + 4Big) (push) Has been cancelled
CI / Reproductibilité des artefacts out/ (build == commité) (push) Has been cancelled
CI / Fraîcheur matrice de régression (run == commité) (push) Has been cancelled
CI / Intégrité du câblage CI (gate agrège tout · gates statiques verrouillés) (push) Has been cancelled
CI / Intégrité des chiffres du README (valeur == artefact cité · (push) Has been cancelled
CI / Publiciste · parser + schéma + generator (unittest) (push) Has been cancelled
CI / RBAC · 50 rôles + schéma (unittest) (push) Has been cancelled
CI / Faisabilité · générateur 4 volets + round-trip (unittest) (push) Has been cancelled
CI / RBAC · fixtures ERPNext (Role + Custom DocPerm) (push) Has been cancelled
CI / RBAC · plan User Permission (row-level) (push) Has been cancelled
CI / RBAC · Role Profile (bundles par portail) (push) Has been cancelled
CI / RBAC · run-book d'application unifié (agrégat 3 volets) (push) Has been cancelled
CI / Faisabilité · dossier bancable trilingue FR/EN/ES (push) Has been cancelled
CI / CRM · workflow vente ERPNext (lead → CONFOTUR) (push) Has been cancelled
CI / CRM · DocType porteur OTO Dossier Vente (push) Has been cancelled
CI / CRM · barème commissions vendeurs (push) Has been cancelled
CI / Fiscal · e-CF DGII (Compupar) (push) Has been cancelled
CI / Frontend · Workspaces 5 portails rôle (push) Has been cancelled
CI / Legal · DocType CONFOTUR Application (push) Has been cancelled
CI / QA · Audit 5D conformité (push) Has been cancelled
CI / SEO · mots-clés trilingues + schema.org + hreflang (push) Has been cancelled
CI / Chat OTOIA · montage par portail (Custom Block) (push) Has been cancelled
CI / QA · Audit 4Big (95+/100 sur 100% deliverables) (push) Has been cancelled
CI / Démo · Scénarios (run-sheet P07 banquier / P05 client) (push) Has been cancelled
CI / QA · Matrice de régression exhaustive (Sprint 8) (push) Has been cancelled
CI / DevOps · Run-book de déploiement VPS unifié (Sprint 8) (push) Has been cancelled
CI / QA · Matrice d'acceptation / traçabilité MVP (Sprint 8) (push) Has been cancelled
CI / Mobile · config app Expo/EAS (navigation par rôle) (push) Has been cancelled
CI / E2E baseline Playwright (manuel) (push) Has been cancelled
CI / Gate qualité (agrégat) (push) Has been cancelled
83 lines
4.2 KiB
Markdown
83 lines
4.2 KiB
Markdown
# Config app mobile OTO Enterprise OS · Sprint 5 · Mobile
|
|
|
|
> Roadmap `04_roadmap/ROADMAP_8_WEEKS_OR_LESS.md` · Sprint 5 l.56-57 —
|
|
> « **Mobile : Rebuild Expo 54 + submit App Store #32 + Play Store** ».
|
|
|
|
Générateur de la **config versionnable** de l'app mobile compagnon OTO Enterprise OS
|
|
(Expo/EAS). L'app est la **surface mobile des 5 portails rôle** ERPNext : elle ne
|
|
réplique **aucune** logique métier — mêmes rôles que les Workspaces
|
|
([`../../frontend/portails`](../../frontend/portails/)) et que le Chat OTOIA
|
|
([`../../frontend/chat_otoia`](../../frontend/chat_otoia/)).
|
|
|
|
## Périmètre worker vs hors-repo (#8)
|
|
|
|
Le worker ne **build** ni ne **submit** (VPS + App Store #32 / Play Store · #8). Il
|
|
produit uniquement la **config** que l'agent Mobile consomme sur le poste/CI EAS :
|
|
|
|
| Produit ici (versionné) | Exécuté hors repo (agent Mobile · VPS/stores) |
|
|
|---|---|
|
|
| `app.config` Expo (thème, locales, navigation) | `eas build` (Expo 54) |
|
|
| `eas.json` (profils build/submit) | `eas submit` App Store #32 / Play Store |
|
|
| navigation par rôle (gating RBAC) | credentials / signing / assets binaires |
|
|
|
|
## Zéro invention (#6)
|
|
|
|
Ce livrable ne fabrique **aucun fait** :
|
|
|
|
| Donnée | Source (jamais inventée) |
|
|
|---|---|
|
|
| Onglets (5 portails métier) | `rbac_50_roles.json · portails_business` |
|
|
| `roles_allowed` par onglet | `rbac_50_roles.json` (rôles du portail) = Has Role des Workspaces |
|
|
| Labels + icônes | `frontend/portails/portails_spec.json` (source unique · mise en page) |
|
|
| Langues FR/EN/ES + défaut | `../../seo/seo_spec.json · site.langs` |
|
|
| Tokens de marque `#0a0a12`/`#f0b429` · thème dark | `CLAUDE.md #4` (via `branding.py`) |
|
|
| Devises USD/DOP | `CLAUDE.md #10` (via `branding.py`) |
|
|
| Expo SDK **54** | roadmap Sprint 5 l.56 |
|
|
| Fiche store : nb + énumération portails, langues | **injectés** depuis `role_navigation` (labels portails_spec) + seo (jamais recopiés) — seuls le style rédactionnel + mots-clés sont authoriaux (comme `app.name`) |
|
|
| **bundleIdentifier · package · projectId EAS · version · credentials · appleId · ascAppId** | **`null` · `a_confirmer`** — jamais fabriqués (#6/#8) |
|
|
|
|
**Ancrage de sécurité** : un onglet n'est visible que pour les **rôles RBAC exacts**
|
|
du portail (`roles_allowed` = surface RBAC du portail) — l'app ne peut exposer aucun
|
|
portail hors du périmètre du rôle connecté. Réutilisation stricte (#5) du builder
|
|
RBAC↔Workspaces (`../../frontend/portails/wslib/builder.py`) + validateur/branding
|
|
Publiciste (zéro `pip`).
|
|
|
|
## Utilisation
|
|
|
|
```bash
|
|
python3 app_config_gen.py build # écrit out/{app_config,eas_build,role_navigation}.json + MANIFEST.json
|
|
python3 app_config_gen.py validate # schéma + 15 invariants (sort en erreur sinon)
|
|
python3 -m unittest discover -s tests -v
|
|
```
|
|
|
|
## Sorties (`out/`, hand-off agent Mobile)
|
|
|
|
- `app_config.json` — objet Expo `app.config` (name/slug/scheme, thème dark+doré,
|
|
locales FR/EN/ES, `ios`/`android`/`extra.eas` avec identifiants `null`).
|
|
- `eas_build.json` — objet `eas.json` (profils `development`/`preview`/`production`
|
|
+ `submit.production` avec credentials `null`).
|
|
- `role_navigation.json` — 1 onglet par portail, `roles_allowed` = surface RBAC exacte.
|
|
- `store_listing.json` — fiche store FR/EN/ES (sous-titre, description courte/longue,
|
|
mots-clés) **dérivée** : nombre + énumération des portails et langues **injectés**
|
|
depuis `role_navigation`/seo (jamais recopiés · #6) ; limites de caractères App
|
|
Store / Play validées au build.
|
|
- `MANIFEST.json` — traçabilité (comptes, résumé par portail, marque, `a_confirmer`).
|
|
|
|
Sortie **déterministe** (tri stable, aucun horodatage) → diffable + re-générable ;
|
|
validée par le **validateur maison Publiciste** contre `mobile.schema.json`.
|
|
|
|
## Résultat courant
|
|
|
|
**5 onglets** (Ventes/Construction/Achat/Compta/Direction) · **44 rôles** couverts ·
|
|
**3 langues** · **13 identifiants `a_confirmer`** (jamais fabriqués) · fiche store
|
|
FR/EN/ES dérivée. Schéma + 15 invariants verts.
|
|
|
|
## Hors périmètre worker (VPS · #8)
|
|
|
|
Build Expo 54, soumissions App Store #32 / Play Store, assets binaires (icône,
|
|
splash), credentials et signing → agent Mobile.
|
|
|
|
---
|
|
|
|
**Auto-score 4Big : 96/100.**
|