Files
oto-enterprise-os-dtp/05_deliverables_mvp/mobile/app_config/mobile.schema.json
T
Claude Code DTP Worker 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
[DTP-Worker 20260803_030641] Auto exec · session 20260803_030641
2026-08-03 03:21:42 +00:00

309 lines
12 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Config app mobile OTO Enterprise OS (Expo/EAS + navigation par rôle)",
"type": "object",
"additionalProperties": false,
"required": ["app_config", "eas_build", "role_navigation", "store_listing", "manifest"],
"definitions": {
"store_listing_lang": {
"type": "object",
"additionalProperties": false,
"required": ["subtitle", "short_description", "full_description", "keywords"],
"properties": {
"subtitle": {"type": "string", "minLength": 1},
"short_description": {"type": "string", "minLength": 1},
"full_description": {"type": "string", "minLength": 1},
"keywords": {"type": "string", "minLength": 1}
}
}
},
"properties": {
"app_config": {
"type": "object",
"additionalProperties": false,
"required": ["expo"],
"properties": {
"expo": {
"type": "object",
"additionalProperties": false,
"required": [
"name", "slug", "scheme", "version", "orientation",
"userInterfaceStyle", "backgroundColor", "primaryColor", "icon",
"splash", "locales", "ios", "android", "extra", "plugins"
],
"properties": {
"name": {"type": "string", "minLength": 1},
"slug": {"type": "string", "minLength": 1},
"scheme": {"type": "string", "minLength": 1},
"version": {"type": ["string", "null"]},
"orientation": {"type": "string", "enum": ["portrait", "landscape", "default"]},
"userInterfaceStyle": {"type": "string", "enum": ["dark", "light", "automatic"]},
"backgroundColor": {"type": "string", "pattern": "^#[0-9a-fA-F]{6}$"},
"primaryColor": {"type": "string", "pattern": "^#[0-9a-fA-F]{6}$"},
"icon": {"type": ["string", "null"]},
"splash": {
"type": "object",
"additionalProperties": false,
"required": ["backgroundColor", "resizeMode", "image"],
"properties": {
"backgroundColor": {"type": "string", "pattern": "^#[0-9a-fA-F]{6}$"},
"resizeMode": {"type": "string", "enum": ["contain", "cover"]},
"image": {"type": ["string", "null"]}
}
},
"locales": {"type": "object"},
"ios": {
"type": "object",
"additionalProperties": false,
"required": ["bundleIdentifier", "buildNumber", "supportsTablet"],
"properties": {
"bundleIdentifier": {"type": ["string", "null"]},
"buildNumber": {"type": ["string", "null"]},
"supportsTablet": {"type": "boolean"}
}
},
"android": {
"type": "object",
"additionalProperties": false,
"required": ["package", "versionCode"],
"properties": {
"package": {"type": ["string", "null"]},
"versionCode": {"type": ["integer", "null"]}
}
},
"extra": {
"type": "object",
"additionalProperties": false,
"required": ["expoSdkMajor", "defaultLocale", "devises", "eas"],
"properties": {
"expoSdkMajor": {"type": "integer", "minimum": 1},
"defaultLocale": {"type": "string", "minLength": 1},
"devises": {"type": "array", "minItems": 2, "items": {"type": "string"}},
"eas": {
"type": "object",
"additionalProperties": false,
"required": ["projectId"],
"properties": {"projectId": {"type": ["string", "null"]}}
}
}
},
"plugins": {"type": "array"}
}
}
}
},
"eas_build": {
"type": "object",
"additionalProperties": false,
"required": ["cli", "build", "submit"],
"properties": {
"cli": {
"type": "object",
"additionalProperties": false,
"required": ["version", "appVersionSource"],
"properties": {
"version": {"type": ["string", "null"]},
"appVersionSource": {"type": "string", "enum": ["remote", "local"]}
}
},
"build": {
"type": "object",
"additionalProperties": false,
"required": ["development", "preview", "production"],
"properties": {
"development": {"type": "object"},
"preview": {"type": "object"},
"production": {"type": "object"}
}
},
"submit": {
"type": "object",
"additionalProperties": false,
"required": ["production"],
"properties": {
"production": {
"type": "object",
"additionalProperties": false,
"required": ["ios", "android"],
"properties": {
"ios": {
"type": "object",
"additionalProperties": false,
"required": ["appleId", "ascAppId", "appleTeamId"],
"properties": {
"appleId": {"type": ["string", "null"]},
"ascAppId": {"type": ["string", "null"]},
"appleTeamId": {"type": ["string", "null"]}
}
},
"android": {
"type": "object",
"additionalProperties": false,
"required": ["serviceAccountKeyPath", "track"],
"properties": {
"serviceAccountKeyPath": {"type": ["string", "null"]},
"track": {"type": "string", "enum": ["internal", "alpha", "beta", "production"]}
}
}
}
}
}
}
}
},
"role_navigation": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"additionalProperties": false,
"required": ["portail", "label", "icon", "route", "roles_allowed", "n_roles"],
"properties": {
"portail": {"type": "string", "minLength": 1},
"label": {"type": "string", "minLength": 1},
"icon": {"type": "string", "minLength": 1},
"route": {"type": "string", "pattern": "^/[a-z]+$"},
"roles_allowed": {"type": "array", "minItems": 1, "items": {"type": "string"}, "uniqueItems": true},
"n_roles": {"type": "integer", "minimum": 1}
}
}
},
"store_listing": {
"type": "object",
"additionalProperties": false,
"required": ["generated_from", "note", "limits", "limits_source", "langues", "content"],
"properties": {
"generated_from": {"type": "string", "minLength": 1},
"note": {"type": "string", "minLength": 1},
"limits": {
"type": "object",
"additionalProperties": false,
"required": ["subtitle", "short_description", "full_description", "keywords"],
"properties": {
"subtitle": {"type": "integer", "minimum": 1},
"short_description": {"type": "integer", "minimum": 1},
"full_description": {"type": "integer", "minimum": 1},
"keywords": {"type": "integer", "minimum": 1}
}
},
"limits_source": {"type": "string", "minLength": 1},
"langues": {"type": "array", "minItems": 1, "items": {"type": "string"}},
"content": {
"type": "object",
"additionalProperties": false,
"required": ["fr", "en", "es"],
"properties": {
"fr": {"$ref": "#/definitions/store_listing_lang"},
"en": {"$ref": "#/definitions/store_listing_lang"},
"es": {"$ref": "#/definitions/store_listing_lang"}
}
}
}
},
"manifest": {
"type": "object",
"additionalProperties": false,
"required": [
"generated_from", "spec_version", "source_version", "roadmap_ref",
"app", "counts", "brand", "devises", "langues", "a_confirmer",
"identifiants_statut", "portails", "hand_off"
],
"properties": {
"generated_from": {"type": "string"},
"spec_version": {"type": "string"},
"source_version": {"type": "string"},
"roadmap_ref": {"type": "string"},
"app": {
"type": "object",
"additionalProperties": false,
"required": ["name", "slug", "scheme", "expo_sdk_major"],
"properties": {
"name": {"type": "string"},
"slug": {"type": "string"},
"scheme": {"type": "string"},
"expo_sdk_major": {"type": "integer"}
}
},
"counts": {
"type": "object",
"additionalProperties": false,
"required": ["onglets", "portails", "roles_couverts", "langues", "identifiants_a_confirmer"],
"properties": {
"onglets": {"type": "integer", "minimum": 0},
"portails": {"type": "integer", "minimum": 0},
"roles_couverts": {"type": "integer", "minimum": 0},
"langues": {"type": "integer", "minimum": 0},
"identifiants_a_confirmer": {"type": "integer", "minimum": 0}
}
},
"brand": {
"type": "object",
"additionalProperties": false,
"required": ["fond", "accent"],
"properties": {
"fond": {
"type": "object",
"additionalProperties": false,
"required": ["valeur", "source"],
"properties": {"valeur": {"type": "string"}, "source": {"type": "string"}}
},
"accent": {
"type": "object",
"additionalProperties": false,
"required": ["valeur", "source"],
"properties": {"valeur": {"type": "string"}, "source": {"type": "string"}}
}
}
},
"devises": {
"type": "object",
"additionalProperties": false,
"required": ["primaire", "secondaire", "source"],
"properties": {
"primaire": {"type": "string"},
"secondaire": {"type": "string"},
"source": {"type": "string"}
}
},
"langues": {
"type": "object",
"additionalProperties": false,
"required": ["liste", "defaut", "source"],
"properties": {
"liste": {"type": "array", "minItems": 1, "items": {"type": "string"}},
"defaut": {"type": "string"},
"source": {"type": "string"}
}
},
"a_confirmer": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"additionalProperties": false,
"required": ["champ", "raison"],
"properties": {"champ": {"type": "string"}, "raison": {"type": "string"}}
}
},
"identifiants_statut": {"type": "string", "const": "a_confirmer"},
"portails": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"additionalProperties": false,
"required": ["portail", "label", "icon", "nb_roles"],
"properties": {
"portail": {"type": "string"},
"label": {"type": "string"},
"icon": {"type": "string"},
"nb_roles": {"type": "integer", "minimum": 0}
}
}
},
"hand_off": {"type": "string"}
}
}
}
}