Implementation
Map<String, dynamic> environmentQuiz = {
"quizType": "EDUCATIONAL",
"currentStepIndex": 0,
"quizTitle": "🚀 Quiz : Maîtrises-tu les environnements DEV, UAT et PROD ? 🌐",
"quizSubTitle": "Comprends les rôles clés de chaque environnement de développement logiciel en quelques questions pédagogiques.",
"steps": [
{
"stepKey": "intro",
"stepLabel": "Introduction",
"questions": [
{
"questionKey": "eco_minded",
"label": "🌍 Penses-tu qu’il est important de protéger notre environnement ?",
"type": "nullable_boolean",
"params": {"mandatory": false}
},
{
"questionKey": "reveal_topic",
"label": "👏 Bravo pour ton engagement écologique… mais ce quiz ne parle pas de la planète.",
"type": "textarea",
"params": {"mandatory": false, "placeholder": "Tu peux râler ici si tu t’es fait avoir 😄"}
},
{
"questionKey": "real_env_question",
"label": "🎯 Revenons à nos environnements… logiciels cette fois ! As-tu déjà bossé avec DEV, UAT ou PROD ?",
"type": "boolean",
"params": {"mandatory": true}
},
{
"questionKey": "current_env",
"label": "Lequel de ces environnements te semble le plus familier ?",
"type": "select",
"options": [
{"key": "dev", "label": "DEV – Là où la magie (ou les bugs) commence ✨🐛"},
{"key": "uat", "label": "UAT – Les utilisateurs testent pendant que tu stresses 😅"},
{"key": "prod", "label": "PROD – Là où chaque clic peut te coûter ta soirée 🧨"},
{"key": "local", "label": "Local – Mon laptop, mon royaume 🖥️👑"}
],
"params": {"mandatory": true, "isMultiple": false, "selectorDisplayMode": "radio"}
}
]
},
{
"stepKey": "definitions",
"stepLabel": "Définitions essentielles",
"questions": [
{
"questionKey": "define_envs",
"label": "Associe chaque environnement à sa définition :",
"type": "select",
"options": [
{"key": "dev", "label": "DEV : environnement de développement, instable, pour coder et tester rapidement."},
{"key": "uat", "label": "UAT : environnement de validation par les utilisateurs finaux avant mise en production."},
{"key": "prod", "label": "PRODUCTION : environnement stable utilisé par les utilisateurs finaux."}
],
"params": {
"mandatory": true,
"isMultiple": true,
"selectorDisplayMode": "check",
"description": "Ces trois environnements ont chacun un rôle spécifique dans le cycle de vie d’une application. Le DEV est souvent instable, le UAT sert à tester des versions proches de la PROD, et la PROD est l'environnement final visible par les utilisateurs."
}
}
]
},
{
"stepKey": "bonnes_pratiques",
"stepLabel": "Bonnes pratiques",
"questions": [
{
"questionKey": "env_rules",
"label": "Quelles sont de bonnes pratiques à respecter pour ces environnements ?",
"type": "select",
"options": [
{"key": "no_prod_tests", "label": "Ne jamais tester directement en PROD."},
{"key": "separate_db", "label": "Utiliser des bases de données séparées pour chaque environnement."},
{"key": "debug_prod", "label": "Activer les logs détaillés de debug en PROD."},
{"key": "env_vars", "label": "Configurer les variables d'environnement correctement par contexte."}
],
"params": {"mandatory": true, "isMultiple": true, "selectorDisplayMode": "check", "description": "Chaque environnement doit être isolé pour éviter les effets de bord. Activer le debug en PROD est risqué : cela peut exposer des données sensibles."}
}
]
},
{
"stepKey": "scenarios",
"stepLabel": "Cas pratiques",
"questions": [
{
"questionKey": "incident_prod",
"label": "Une erreur critique survient en PROD. Quelle est la première chose à faire ?",
"type": "select",
"options": [
{"key": "rollback", "label": "Rollback à la dernière version stable."},
{"key": "debug_live", "label": "Déboguer directement sur la prod avec un accès SSH root."},
{"key": "ignore", "label": "Ignorer, ça va sûrement se stabiliser."},
{"key": "hotfix", "label": "Faire un hotfix et le déployer sans test."}
],
"params": {"mandatory": true, "isMultiple": false, "selectorDisplayMode": "radio", "description": "Le rollback est souvent la méthode la plus sûre. Le debug en live est dangereux. Un hotfix peut être envisagé, mais pas sans test ni validation."}
},
{
"questionKey": "uat_purpose",
"label": "Quel est l’objectif principal de l’environnement UAT ?",
"type": "select",
"options": [
{"key": "qa", "label": "Exécuter des tests automatisés techniques."},
{"key": "stakeholders", "label": "Permettre aux parties prenantes de valider le produit."},
{"key": "dev_speed", "label": "Développer de nouvelles fonctionnalités rapidement."},
{"key": "prod_mirror", "label": "Agir comme miroir exact de la prod pour la haute disponibilité."}
],
"params": {"mandatory": true, "isMultiple": false, "selectorDisplayMode": "radio", "description": "L’UAT (User Acceptance Testing) est conçu pour que les utilisateurs clés testent et valident les fonctionnalités avant leur mise en production."}
}
]
}
]
};