pw.Container délègue canSpan à son enfant, si bien qu'une carte pouvait se
scinder entre deux pages — titre seul en bas de l'une, contenu en haut de
l'autre. Enveloppe le graphique et les groupes de barres dans un widget
non sécable, que MultiPage reporte alors en entier.
Les tableaux restent sécables : un tableau long doit pouvoir se répartir
sur plusieurs pages.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
_voiceSessions lisait appTypeDistribution['Voice'], qui ne se serait jamais
rempli : le vocal est un mode d'interaction, pas une plateforme. Le serveur
expose désormais « sessions ayant utilisé le vocal », qui est vrai.
Et l'aperçu de conversation du Guide IA journalisait chaque essai comme une
question de visiteur : le gestionnaire qui testait sa personnalité polluait son
propre onglet « Ce que demandent vos visiteurs » et gonflait le bloc des
questions sans réponse. isVisitorQuestion: false.
manager_api_new étendu à la main (voiceSessions, renommage isVisitorQuestion).
flutter analyze lib sans erreur, flutter build web vert.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Statistiques — refonte complète, aucun changement backend
statistics_screen.dart réécrit (+1832) : barres horizontales monochromes à la place
des barres verticales tronquées et des deux anneaux, barre de filtres unique avec les
volumes par canal, règle mono-canal, 4 KPI portant chacun leur variation, bandeau
« à retenir », courbe en aire avec bandes de week-end. La période précédente s'obtient
en rappelant le même endpoint.
statistics_report.dart : export PDF généré côté client (paquet pdf Dart), il partage
les valeurs calculées de l'écran — un chiffre ne peut pas diverger entre l'écran et le
document envoyé à la commune. Deux puces du sommaire promettaient des données
inexistantes (parcours terminés, questions au guide IA), retirées.
⚠️ Jamais ouvert dans un navigateur. Cases de test : test-plan.md §8bis / §8ter.
Guide IA
Screens/GuideIa/guide_ia_screen.dart — onglet Configuration. Menu conditionné à
isAssistant, le même drapeau que la garde d'AiController. L'onglet « Ce que demandent
vos visiteurs » n'est pas dans ce commit : le schéma backend est prêt, l'UI non.
Onboarding self-service
Screens/Auth/ (mot de passe oublié, définition du mot de passe),
Screens/Billing/subscription_screen.dart, ai_quota_hint.dart.
⚠️ Aucun parcours joué de bout en bout — test-plan.md §18.
Parcours guidés
progression_mode.dart : 9 booléens sur 3 niveaux remplacés par 3 questions.
Popups GuidedPath / GuidedStep / QuizQuestion mises à jour en conséquence.
Client API (manager_api_new) — édité À LA MAIN, ne pas relancer la génération
onboarding_api.dart, authentication_api.dart (+80), instance_dto (champs Guide*),
guided_step / quiz_question_guided_step (flags morts retirés).
Le // @dart=2.18 manquant dans onboarding_api.dart cassait les 3 apps Flutter d'un
coup — corrigé ici.
i18n : ~180 clés par langue (FR/EN/NL) + fichiers générés.
Tests : progression_mode_test, statistics_report_test (le second a attrapé deux
plantages qui seraient sortis au premier clic).
flutter build web ✅. flutter analyze : 68 erreurs, toutes dans les fichiers modèle
orphelins de manager_api_new — dette connue, pas une régression, ces fichiers ne sont
pas dans le graphe de compilation.