Projets, Applications et Mission Control
Dans TkushPatch, chaque application mobile est identifiée par son app_id (souvent calqué sur le bundle ID Android/iOS, ex. com.sara.money ou com.entreprise.agent) et rattachée de manière isolée à une organisation (tenant_id).
1. Création d'un projet (CreateProjectModal)
Un projet peut être créé de deux manières complémentaires :
A. Depuis la console web (CreateProjectModal.tsx)
Accessible depuis le bouton Nouvelle Application sur /apps ou depuis le menu déroulant ProjectSwitcher de l'en-tête :
- Nom d'affichage (
name) : Nom lisible de l'application (ex.Sara Money Retail). - Identifiant technique (
appId) : Identifiant unique au format package (ex.com.sara.money). Un générateur automatique suggère un identifiant à partir du nom saisi. - Plateformes cibles (
platforms) : Sélection entreAndroid & iOS,Android uniquementouiOS uniquement. - Environnement / Canal par défaut :Initialisé sur
stable,stagingetdev. - Commandes d'initialisation CLI : Une fois créé, le projet génère l'extrait
shorebird.yamlprêt à copier et la commandetk-ota-push initcorrespondante.
B. Découverte automatique depuis la CLI (ProjectContext.tsx)
Lorsqu'un développeur publie directement une première release via tk-ota-push release android ou POST /api/admin/v1/releases, le composant ProjectContext détecte automatiquement le nouvel appId lors de l'appel à GET /api/admin/v1/releases?tenant_id=... et l'ajoute au registre des projets de la console avec le badge Auto-découvert.
2. Catalogue des applications (/apps)
La page /apps (src/app/apps/page.tsx) présente la vue portefeuille de toutes les applications mobiles de l'organisation :
- Cartes d'applications : Chaque carte affiche le nom du projet, son
appIden police monospace, les badges de plateformes (ANDROID,IOS), le nombre total de releases verrouillées, le nombre de patchs actifs (APPROVED_AND_SIGNED) et la dernière version en production. - Indicateurs globaux : Nombre total d'applications gérées, total des releases et total des patchs déployés sur le tenant.
- Filtrage instantané : Recherche par nom d'application ou par
appId. - Accès direct : Un clic sur une carte ouvre le centre de commandement Mission Control (
/apps/[appId]).
3. Barre d'onglets contextuelle (AppTabs)
Dès que l'opérateur navigue sous /apps/[appId]/*, le composant AppTabs (src/components/layout/AppTabs.tsx) s'affiche sous l'en-tête principal et propose 8 onglets dédiés à l'application sélectionnée :
| Position | Onglet (FR / EN) | Route Next.js | Fonctionnalité |
|---|---|---|---|
| 1 | Mission Control | /apps/[appId] | Vue synthétique de l'application, dernière release, patch actif et guide shorebird.yaml |
| 2 | Releases | /apps/[appId]/releases | Liste des versions de l'application (consolidée multi-ABI) et publication de release/patch |
| 3 | Insights | /apps/[appId]/insights | Courbes d'adoption des patchs, taux de succès d'installation et santé du Circuit-Breaker |
| 4 | Dynamic Assets | /apps/[appId]/assets | Gestion des assets graphiques et configurations JSON OTA propres à l'application |
| 5 | Clés & SDK | /apps/[appId]/catalog | Clé publique signature numérique (patch_public_key), configuration shorebird.yaml et gouvernance Store |
| 6 | Collaborators | /apps/[appId]/collaborators | Équipe assignée à l'application et matrice des permissions RBAC |
| 7 | Tracks | /apps/[appId]/tracks | Gestion des canaux (dev, staging, stable, canaux personnalisés) et promotion 1-clic |
| 8 | Settings | /apps/[appId]/settings | Renommage de l'application, quotas spécifiques et suppression locale du registre |
4. Mission Control (/apps/[appId])
La page /apps/[appId] (src/app/apps/[appId]/page.tsx) constitue le tableau de bord opérationnel d'une application mobile :
- Cartes KPI de l'application :
- Releases verrouillées : Nombre de versions binaires de base enregistrées et dernière version active (ex.
3.28.5+99). - Patchs OTA déployés : Nombre de patchs
APPROVED_AND_SIGNEDvs patchs en attenteSTAGEDou révoquésROLLED_BACK. - Couverture d'architectures (ABI) : Détection des architectures couvertes (
aarch64,arm,x86_64). - Statut Store & Sécurité : Indique si la dernière release est
LIVE_ON_STORE,IN_STORE_REVIEW(bouclier actif) ouDEPRECATED.
- Releases verrouillées : Nombre de versions binaires de base enregistrées et dernière version active (ex.
- État vide guidé (Onboarding SDK) :
- Si l'application ne comporte encore aucune release, Mission Control affiche un assistant d'intégration en 3 étapes :
- Récupération automatique de la clé publique RSA (
GET /api/admin/v1/crypto/public-key). - Génération du fichier
shorebird.yamlpré-rempli avecapp_id,base_urletpatch_public_key. - Commandes CLI exactes pour enregistrer la première release (
tk-ota-push release android) puis pousser un premier patch (tk-ota-push patch android).
- Récupération automatique de la clé publique RSA (
- Si l'application ne comporte encore aucune release, Mission Control affiche un assistant d'intégration en 3 étapes :
- Historique récent et actions rapides :
- Accès en un clic à la dernière release (
/apps/[appId]/releases/[version]), aux pistes de déploiement (/apps/[appId]/tracks) et aux approbations 4-Yeux.
- Accès en un clic à la dernière release (