{ "version": "1.0.0", "roadmap_ref": "04_roadmap/ROADMAP_8_WEEKS_OR_LESS.md · Sprint 5 l.56-57 « Mobile : Rebuild Expo 54 + submit App Store #32 + Play Store »", "generated_from": "rbac_50_roles.json (portails métier + rôles) · frontend/portails/portails_spec.json (labels + icônes) · seo/seo_spec.json (langues FR/EN/ES) · CLAUDE.md #4 (tokens de marque) / #10 (devises)", "description": "Spec machine-lisible de la config de l'app mobile compagnon OTO Enterprise OS (Expo/EAS). Ce fichier ne porte QUE les choix de configuration non dérivables d'une source (nom d'app, slug, scheme, profils EAS, ordre des onglets). La source de vérité des ONGLETS reste les portails métier RBAC (rbac_50_roles.json) ; les labels/icônes viennent de portails_spec.json ; les langues de seo_spec.json ; les tokens de marque de CLAUDE.md #4. Tout identifiant de store/build (bundleIdentifier, package, projectId EAS, version, credentials, appleId, ascAppId) reste `null · a_confirmer` — jamais fabriqué (#6) car déposé hors repo lors des builds/submissions (VPS/stores · #8).", "app": { "name": "OTO Enterprise OS", "name_source": "CLAUDE.md · titre « OTO Enterprise OS · Digital Twin Platform (DTP) »", "slug": "oto-enterprise-os", "scheme": "otoos", "expo_sdk_major": 54, "expo_sdk_source": "roadmap Sprint 5 l.56 « Rebuild Expo 54 »", "orientation": "portrait", "user_interface_style": "dark" }, "eas": { "app_version_source": "remote", "build_profiles": ["development", "preview", "production"] }, "portail_order": ["ventes", "construction", "achat", "compta", "direction"], "a_confirmer": [ {"champ": "app_config.expo.version", "raison": "version de l'app (release) — déposée hors repo au build (#8)"}, {"champ": "app_config.expo.ios.bundleIdentifier", "raison": "identité App Store #32 — jamais fabriquée (#6/#8)"}, {"champ": "app_config.expo.ios.buildNumber", "raison": "auto-incrément côté EAS au build (#8)"}, {"champ": "app_config.expo.android.package", "raison": "identité Play Store — jamais fabriquée (#6/#8)"}, {"champ": "app_config.expo.android.versionCode", "raison": "auto-incrément côté EAS au build (#8)"}, {"champ": "app_config.expo.icon", "raison": "asset image binaire — hors repo texte (#8)"}, {"champ": "app_config.expo.splash.image", "raison": "asset image binaire — hors repo texte (#8)"}, {"champ": "app_config.expo.extra.eas.projectId", "raison": "identifiant projet EAS — créé au premier build (#8)"}, {"champ": "eas_build.cli.version", "raison": "version CLI EAS — épinglée à l'installation runner (#8)"}, {"champ": "eas_build.submit.production.ios.appleId", "raison": "credential App Store Connect — hors repo (#6/#8)"}, {"champ": "eas_build.submit.production.ios.ascAppId", "raison": "identifiant app App Store #32 — hors repo (#6/#8)"}, {"champ": "eas_build.submit.production.ios.appleTeamId", "raison": "identifiant équipe Apple — hors repo (#6/#8)"}, {"champ": "eas_build.submit.production.android.serviceAccountKeyPath", "raison": "clé de service Google Play — secret hors repo (#6/#8)"} ], "store_listing": { "limits": {"subtitle": 30, "short_description": 80, "full_description": 4000, "keywords": 100}, "limits_source": "App Store Connect (sous-titre 30 · mots-clés 100 · description 4000 caractères) · Google Play Console (description courte 80 · complète 4000 caractères)", "placeholders": { "n_portails": "nombre d'onglets = portails métier (len role_navigation)", "portails": "labels des portails joints par ' · ' (source portails_spec via role_navigation) — jamais recopiés à la main", "langues": "langues seo en capitales jointes par '/' (source seo_spec)" }, "content": { "fr": { "subtitle": "Vos portails métier en poche", "short_description": "L'app compagnon de votre ERP OTO : {n_portails} portails métier, sécurisés par rôle.", "full_description": "OTO Enterprise OS est l'application mobile compagnon de la plateforme immobilière OTO.\n\nRetrouvez vos {n_portails} portails métier — {portails} — directement sur votre téléphone.\n\nSécurité par rôle (RBAC) : chaque portail n'expose que les fonctions autorisées à votre profil ; aucune donnée hors de votre périmètre.\n\nInterface luxury sombre et dorée, cohérente avec la console web. Disponible en {langues}. Devises USD et DOP.\n\nL'app ne réplique aucune logique métier : elle est la surface mobile sécurisée de votre ERP OTO Enterprise OS.", "keywords": "immobilier,ERP,CRM,ventes,construction,chantier,compta,portail,RBAC,OTO" }, "en": { "subtitle": "Business portals on the go", "short_description": "The companion app for your OTO ERP: {n_portails} role-secured business portals.", "full_description": "OTO Enterprise OS is the mobile companion app for the OTO real-estate platform.\n\nAccess your {n_portails} business portals — {portails} — right from your phone.\n\nRole-based security (RBAC): each portal only exposes the features your profile is allowed to use; no data outside your scope.\n\nLuxury dark-and-gold interface, consistent with the web console. Available in {langues}. USD and DOP currencies.\n\nThe app replicates no business logic: it is the secure mobile surface of your OTO Enterprise OS ERP.", "keywords": "real estate,ERP,CRM,sales,construction,site,accounting,portal,RBAC,OTO,property" }, "es": { "subtitle": "Tus portales en movilidad", "short_description": "La app complementaria de tu ERP OTO: {n_portails} portales seguros por rol.", "full_description": "OTO Enterprise OS es la aplicación móvil complementaria de la plataforma inmobiliaria OTO.\n\nAccede a tus {n_portails} portales de negocio — {portails} — desde tu teléfono.\n\nSeguridad por rol (RBAC): cada portal solo muestra las funciones que tu perfil tiene permitidas; ningún dato fuera de tu alcance.\n\nInterfaz luxury oscura y dorada, coherente con la consola web. Disponible en {langues}. Monedas USD y DOP.\n\nLa app no replica ninguna lógica de negocio: es la superficie móvil segura de tu ERP OTO Enterprise OS.", "keywords": "inmobiliaria,ERP,CRM,ventas,construcción,obra,contabilidad,portal,RBAC,OTO" } } }, "notes": [ "L'app mobile ne réplique AUCUNE logique métier : elle est la surface mobile des 5 portails rôle ERPNext (mêmes rôles que les Workspaces / le Chat OTOIA).", "Sécurité : un onglet n'est visible que pour les rôles RBAC du portail correspondant (roles_allowed = surface RBAC exacte, ancrée sur le contrat).", "Le build Expo 54 et les soumissions App Store #32 / Play Store sont exécutés hors de ce worker (agent Mobile · #8) : ce livrable ne produit que la CONFIG versionnable." ] }