62 Commits

Author SHA1 Message Date
Thomas Fransolet
608231f71c C4 : compression des images à l'upload, 2560 px / JPEG q82
flutter build web vert. Un seul helper, ImageCompressor, appelé par les
DEUX chemins d'upload de resources_screen — c'est le motif qui a fait
diverger Create et Upload côté serveur deux fois de suite : sur
StoragePath en C1, sur le pré-vol de quota en C3.

La compression se fait AVANT resourceCreate, pas avant l'upload. Le
contrôle de quota livré en C3 porte sur sizeBytes à la création : le
faire après aurait fait décider le serveur sur la taille du fichier
d'origine, et compté au quota une image qui n'existe pas. Un quota qui
compte 12x trop se remplit 12x trop vite.

Deux écarts assumés par rapport à l'énoncé « 2560 px / JPEG q82 » :

- Un PNG à canal alpha reste un PNG. Le passer en JPEG remplirait la
  transparence de noir, ce qui abîmerait logos et filigranes. Le
  redimensionnement s'applique dans les deux cas ; seul l'encodage
  diffère, et le type MIME suit — sinon Firebase servirait un JPEG
  étiqueté PNG.
- Si le ré-encodage produit un fichier plus gros que l'original — ce
  qui arrive sur une petite image déjà bien encodée — l'original est
  conservé. Un échec de décodage renvoie aussi l'original plutôt que
  de bloquer l'upload.

Défaut préexistant corrigé au passage : le second chemin d'upload ne
renseignait sizeBytes ni avant ni après. Toutes les ressources créées
par ce chemin comptent donc 0 octet au quota sur l'existant — même
famille que ce que C1 et C3 ont trouvé côté serveur, et un argument de
plus pour le backfill C2.

image 4.2.0 déclarée explicitement : elle était déjà présente en
transitif, dépendre d'un hasard de résolution pour une fonction
utilisateur n'est pas tenable.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 15:52:14 +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
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
0059582e9f Multi langues + Assign plan dialog + display quotas + translator IA 2026-04-10 17:17:49 +02: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
3520d2d3d2 Geometry update, update quill editor, fix save in multiple new features + MISC 2026-03-06 15:23:10 +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
61b3289e35 Wip manager, mobile layout + login and added logo + finetuning menu and drawer etc 2025-10-04 23:24:46 +02:00
Thomas Fransolet
4501aaac9c clean code (main screen) + support routes navigation (not yet detail) 2025-08-20 18:15:00 +02:00
Thomas Fransolet
61fd4a44a1 Fix session not working 2025-08-14 23:24:18 +02:00
Thomas Fransolet
0dacb685b5 Update host to preprod. 2025-06-06 11:43:21 +02:00
Thomas Fransolet
f0efb3a447 update version to 3.0.0 2025-06-06 10:40:32 +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
5b9295ceb2 update title limit characters (for quizz) + update some of plugins 2024-11-21 13:34:15 +01:00
Thomas Fransolet
97363dfae0 init version + remove print in login screen 2024-10-17 11:36:36 +02:00
Thomas Fransolet
a9f9aa81e0 updated snackbar to flushbar + added copy to other languages 2024-07-02 16:22:45 +02:00
Thomas Fransolet
5564810e75 Update gradle, kotlin version to match docker build 2024-06-21 09:47:55 +02:00
Thomas Fransolet
e5a2d4f06a Update tarif to title (more char) + add image geopoint 2024-06-20 16:23:44 +02:00
Thomas Fransolet
b04d90a3ad Added image principal geopoint + set centrage localisation mapdto 2024-04-18 17:25:39 +02:00
Thomas Fransolet
9e0277be6e missing file 2024-04-11 17:36:27 +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
1d81997a99 Handle resource viewer + add rows and cols to puzzle 2023-12-29 14:59:21 +01:00
Thomas Fransolet
dca7474551 Init version 2.0.0 + wip visitNamur request + wip upload resource to firebase 2023-12-14 17:52:07 +01:00
Thomas Fransolet
3a29ec8715 Add language icons + quill editor for title, descriptions 2023-10-31 21:08:49 +01:00
Thomas Fransolet
a7741d8151 Update flutter + dart + all packages + generation + update quill layout (wip) 2023-10-27 16:35:06 +02:00
Thomas Fransolet
2bef54f267 HTML component test + responsive test 2023-06-21 17:21:59 +02:00
2b9e609599 Add version to login screen 2023-04-26 16:09:48 +02:00
ae6dd648c1 increment version to 1.0.1-2 2023-04-26 15:55:33 +02:00
3585a67ee2 Copy QrCode as image + download 2023-04-26 15:42:42 +02:00
9de38c2cfc Fix bug beaconId null 2023-04-17 22:34:45 +02:00
a3a62d1903 Null safety ! 2023-04-01 16:52:13 +02:00
Thomas Fransolet
d3f60bcbe6 Add audio visualisation in resource 2023-03-31 16:45:06 +02:00
11f5e2860f Search fix + fix pdf generation with special character 2023-03-10 19:25:22 +01:00
Thomas Fransolet
798d3ca451 Update policy page text 2023-02-21 08:57:27 +01:00
ed9c4bfc15 Update openapi generation .. + update code + fix issue on authenticate try on build 2022-12-22 17:30:37 +01:00
eddc4005ae Add audio in web + update code for resource .. 2022-10-27 17:32:44 +02:00
5b0f9cc954 Add languages multi select dialog 2022-09-13 18:54:07 +02:00
98e066c712 PDF QRCode download + code clean 2022-06-23 17:48:02 +02:00
7195ebb64f Add Article management ! 2022-06-22 18:54:27 +02:00
cf7fd02599 Import / export config update 2022-03-25 17:42:09 +01:00
d290135ef9 Tentative store password + version 1.3 2022-03-23 20:46:45 +01:00
Thomas Fransolet
6b2c74424a Add filepicker +update size image section 2021-12-23 11:53:36 +01:00
Thomas Fransolet
a69d1aa03f WEB - WIP 2021-11-19 18:54:52 +01:00
Thomas Fransolet
c8fd56ebdc Fix resource bug + flutter update 2021-10-14 19:49:37 +02:00
Thomas Fransolet
4a516d8d29 Add msix, translate in french (wip) 2021-08-25 18:12:49 +02:00
Thomas Fransolet
86e4beb362 Remember me + encrypt password in json file ! 2021-07-29 16:14:39 +02:00
Thomas Fransolet
d9fc06b126 WIP session in json file 2021-07-28 18:11:45 +02:00