57 Commits

Author SHA1 Message Date
Thomas Fransolet
820cd9efa8 Misc update ressource to mediatheque, refonte visuelle complète (WIP) 2026-09-04 16:50:03 +02:00
Thomas Fransolet
9af4f8e2d8 Lot J : interrupteur de collecte des questions dans l'écran Guide IA
Sans UI, le client ne pouvait pas exercer le refus dont il est pourtant
responsable. Le libellé dit ce que couper coûte (l'onglet cesse de se remplir) et
ce que couper ne fait pas : rien n'est effacé, les questions déjà enregistrées
vivent jusqu'à leur purge à 90 jours.

manager_api_new étendu à la main. flutter build web vert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-13 15:58:36 +02:00
Thomas Fransolet
82cb4cff3e Stats : lire voiceSessions, et l'aperçu cesse de polluer le rapport du client
_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>
2026-08-13 14:32:55 +02:00
Thomas Fransolet
04e73a8832 manager_api_new : AiChatRequest.conversationId
Le champ existait côté serveur depuis le début mais manquait dans le client
généré — c'est ce qui expliquait que personne ne l'envoyait, et donc qu'aucune
question ne soit reliée à la suivante en base.

Édité à la main, générateur non relancé. flutter build web vert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-13 13:39:33 +02:00
Thomas Fransolet
658d4b6e64 manager_api_new : AiChatRequest.isAutoTriggered
Miroir du champ ajouté côté serveur, édité à la main comme le reste du client —
le générateur n'est pas relancé.

Le client est partagé avec mymuseum-visitapp et tablet-app par dépendance
locale, donc vérifié ici aussi : flutter build web vert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-13 13:14:17 +02:00
Thomas Fransolet
cf60c098c4 Lot F : bouton du portail Stripe et diviseur de questions mesuré
Portail de facturation : le bouton manquait, et l'écran n'affichait rien
du tout hors essai — if (isTrialActive) enveloppait le seul bouton, donc
un client payant arrivait sur un écran sans action. Désormais Checkout
pendant l'essai, portail après ; les deux ne coexistent jamais.
Le 409 a son propre message : les instances venues de Mongo n'ont pas de
StripeCustomerId, « réessayez plus tard » les ferait attendre quelque
chose qui n'arrivera jamais.

Diviseur de questions : guide_ia_screen lit aiTokensPerQuestion du serveur
au lieu du /1000 codé en dur, par appel http direct — le motif déjà établi
dans cet écran pour knowledge et insights. Si l'appel échoue, la ligne
« ~N questions » disparaît plutôt que d'afficher un repli : sur une jauge
qui sert à décider d'un achat, pas de chiffre vaut mieux qu'un chiffre
faux, ce que le /1000 faisait depuis le début à un facteur 10 près.

manager_api_new étendu à la main, générateur non relancé.
4 clés i18n FR/EN/NL. flutter analyze lib sans erreur, flutter build web OK.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-13 10:11:06 +02:00
Thomas Fransolet
3429153135 D2 : dateUpdate ajouté à la main dans le client généré
Miroir de ResourceDTO côté serveur. Édition manuelle, conformément à la règle
du projet : manager_api_new ne se régénère pas, la génération écraserait les
patches déjà accumulés dans ce client.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 17:47:01 +02:00
Thomas Fransolet
5066b6c5e3 Lot E : PDF en média d'étape, et QuestionType nommé
PDF en média d'étape — la liste de types du sélecteur de médias devient un
paramètre (`kSliderContentResourceTypes` par défaut) et l'étape de parcours
passe `kGuidedStepResourceTypes`, soit les types du slider plus Pdf.

QuestionType — le client généré nomme ses valeurs number0/1/2, ce qui
poussait le front à comparer des entiers bruts (`?.value == 2 ? 'Puzzle'`).
Alias nommés d'après l'enum serveur ajoutés à la main dans
question_type.dart (simple / multipleChoice / puzzle), `values` inchangé :
ce sont les mêmes trois valeurs. Les 7 usages number* du dialogue de
question sont migrés avec.

Fournisseur de carte (W1) — décision : visitapp-web reste sur Leaflet. Le
champ ne peut pas être masqué pour le web, il est porté par la section et
une même configuration est servie au mobile comme au web ; il est donc
conservé et documenté dans l'interface comme réglage mobile/tablette.

flutter build web , analyse du dossier sans erreur ni warning.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 15:31:07 +02:00
Thomas Fransolet
9d9f4bc395 Nettoyage du client généré et verrouillage de la règle « pas de régénération »
Suppression des 14 fichiers modèle orphelins de manager_api_new/lib/model/
et de leurs 14 stubs de test. api.dart déclarait 139 `part` pour 153
fichiers : les 14 restants portaient `part of openapi.api;` sans être
listés par leur bibliothèque, donc hors du graphe de compilation. Le
compilateur ne les voyait jamais, l'analyzer les lisait — d'où les 68
erreurs de bruit qui rendaient `flutter analyze` inutilisable comme feu
vert.

Suppression de lib/api/openApiTest.dart, qui n'est pas du modèle mort mais
le déclencheur de la génération (@Openapi + build_runner). Le retirer
verrouille la règle du projet : le client s'édite à la main, et un
build_runner lancé par réflexe écrasait onboarding_api.dart, le câblage
d'AIApi et le mapping isGood → isCorrect.

Mesuré avant / après :
- flutter analyze manager_api_new : 67 → 3 issues (les 3 warnings légitimes)
- flutter analyze global : 68 erreurs de bruit → 3, toutes dans
  test/widget_test.dart, cassé et connu
- flutter build web :  inchangé

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 12:12:09 +02:00
Thomas Fransolet
bb4d4fe2d5 Écran Statistiques refondu + Guide IA + onboarding (auth, abonnement) + i18n FR/EN/NL
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.
2026-08-09 22:14:37 +02:00
Thomas Fransolet
8073cced5e refacto to aitoken 2026-07-17 15:20:41 +02:00
Thomas Fransolet
0f2fa9bf3e refacto misc + bento layout 2026-07-14 17:20:20 +02:00
Thomas Fransolet
a54952e5f4 MISC 2026-07-10 16:54:26 +02:00
Thomas Fransolet
205f1ec933 Misc 2026-05-09 00:23:04 +02:00
Thomas Fransolet
2e8b82aa80 Wip manager app, update to support web + fix section event layout 2026-05-07 16:48:58 +02:00
Thomas Fransolet
0059582e9f Multi langues + Assign plan dialog + display quotas + translator IA 2026-04-10 17:17:49 +02:00
Thomas Fransolet
f90f014f36 Add roles garde fou + update gradle + wip sectionAgenda (online and manual) + update EventConfig + missing fields in GuidedSteps update popup + updates in stats screen 2026-03-25 17:41:32 +01:00
Thomas Fransolet
b7bd8588fe To test - role and switch instance 2026-03-13 17:40:55 +01:00
Thomas Fransolet
e8d899310e Update service generation after security (roles + apikey) 2026-03-13 16:29:51 +01:00
Thomas Fransolet
b9ab5238ba Add stat screen (wip) to be tested + ia assistant activation for mobile (todo add to tablet) + SERVICE GENERATION 2026-03-13 15:07:39 +01:00
Thomas Fransolet
e05e5234c8 Update fix for parcours, event bloc call apis + update layout for game (tabs) 2026-03-04 16:42:45 +01:00
Thomas Fransolet
ded4620bf2 Wip changements fantastiquement rapide d'antigravity, très bonne base mais du wip 2026-03-02 09:06:53 +01:00
Thomas Fransolet
9e06afb29e Commit before anti gravity ! :) 2026-02-27 13:52:54 +01:00
Thomas Fransolet
d212f9f31c Fix geopoint doesn't working 2025-11-27 16:51:43 +01:00
Thomas Fransolet
5c318b39dd Updated generation (game etc) 2025-11-27 15:47:21 +01:00
Thomas Fransolet
3449361b76 WIP mobile app view config + updates input container (text form field) + update service generation 2025-09-18 23:22:34 +02:00
Thomas Fransolet
2b0ac1ed0b wip support appconfigLink + update min size for elements in main views 2025-08-14 22:25:33 +02:00
Thomas Fransolet
e2edbfd596 wip mobile submenu + service generation + misc 2025-08-14 16:29:40 +02:00
Thomas Fransolet
dc2ef710f8 Update menu to support drawer for mobile and added new submenu (application) 2025-08-01 16:24:34 +02:00
Thomas Fransolet
edd34ae849 service generation compiling 2025-07-28 16:44:12 +02:00
Thomas Fransolet
986bb7fab2 Wip service generation 2025-07-17 12:11:59 +02:00
Thomas Fransolet
d47dc15688 Fix Menu + misc 2025-05-27 15:04:20 +02:00
Thomas Fransolet
c7396012b3 misc 2025-05-23 17:06:40 +02:00
Thomas Fransolet
4ea07c2bd5 Quiz ok (must be more tested) + menu (wip) 2025-05-22 16:59:29 +02:00
Thomas Fransolet
e16e898140 Map done ! 2025-05-15 15:11:21 +02:00
Thomas Fransolet
e644cd487f misc ! 2025-05-14 17:13:13 +02:00
Thomas Fransolet
4818a1af52 Configuration (create, update, del) + Section (create, update, del)
more test to be sure for section but should be ok
2025-05-13 17:12:04 +02:00
Thomas Fransolet
b04d90a3ad Added image principal geopoint + set centrage localisation mapdto 2024-04-18 17:25:39 +02:00
Thomas Fransolet
4248da3b0d Update service generation 2024-04-10 11:40:42 +02:00
Thomas Fransolet
649955044f Service generation + init new version + Add weather as a section + download resource + filter geoPoint + added new config params 2024-04-10 10:43:09 +02:00
Thomas Fransolet
8824609fad Clean code + add pick location 2024-03-14 14:41:55 +01:00
Thomas Fransolet
15a11b9eb7 Fix translation and ressource not update + PDF fileS + Agenda map provider + Map handling mapBox 2024-03-12 22:58:35 +01:00
Thomas Fransolet
afa9ca4fd5 update max size title + fix map type change + category not showed 2024-03-04 16:24:13 +01:00
Thomas Fransolet
5fd5aa5c53 Update agenda resourceIds + update widget selection 2024-02-28 12:01:25 +01:00
Thomas Fransolet
09c8cc7cfd Added JsonUrl (to test) 2024-01-24 17:08:06 +01:00
Thomas Fransolet
1d81997a99 Handle resource viewer + add rows and cols to puzzle 2023-12-29 14:59:21 +01:00
Thomas Fransolet
a646adc550 update service generation + Update Quiz + Puzzle + Map 2023-12-27 18:11:25 +01:00
Thomas Fransolet
0c526fe53e Add Pdf, puzzle and agenda config + adpat other elements + update service generation 2023-12-26 15:48:36 +01:00
Thomas Fransolet
4b7dac07a8 update service generation + gif and webm + wip select resource 2023-12-23 14:34:28 +01:00
Thomas Fransolet
6b65bcbf66 update service generation 2023-12-22 15:41:51 +01:00