70 Commits

Author SHA1 Message Date
Thomas Fransolet
a1701e216a Telecharger une ressource la telecharge, au lieu de l'ouvrir
L'attribut `download` d'un lien est ignore quand la cible est sur une autre
origine — Firebase Storage ici. Le navigateur se contentait donc d'ouvrir la
ressource dans un onglet, et le nom de fichier calcule par
`downloadFileNameFor` ne servait a rien.

Le fichier est d'abord recupere en blob et le lien pointe sur l'URL d'objet.
Repli sur l'ouverture en onglet si la requete echoue (CORS, reseau) : le
comportement d'avant, faute de mieux — a surveiller, c'est le chemin qui
reintroduit le bug sans rien dire.

Le telechargement groupe attend chaque fichier au lieu de lancer toute la
selection en parallele.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 16:55:06 +02:00
Thomas Fransolet
820cd9efa8 Misc update ressource to mediatheque, refonte visuelle complète (WIP) 2026-09-04 16:50:03 +02:00
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
eb8e8497c8 Socle visuel et écran Guide IA à deux onglets
Socle visuel (constants.dart)
- 11 rôles typographiques, 8 espacements, 5 rayons, paddings de carte et de page,
  extraits du CSS des maquettes validées (DOCS/claude design/).
- Les couleurs restent celles de l'app : un écran neuf se fond dans manager-app,
  il n'y ouvre pas une seconde palette. Seules les valeurs sans équivalent
  existant sont reprises — remplissages discrets, bordures, gris atténué, ambre.
- Mesuré avant : 11 tailles de police différentes dans lib/Components/, de 9 à 25 px.

Écran Guide IA
- Coquille à deux onglets : Configuration / Ce que demandent vos visiteurs.
- Aperçu de conversation branché sur le vrai POST /api/AI/chat, pas une simulation.
- Carte « Ce que connaît votre guide » sur GET /api/Ai/knowledge/{id} : mesuré sur
  l'index vectoriel, pas sur les tables de contenu — une section désactivée en est
  purgée. Les « points d'intérêt » de la maquette deviennent « morceaux de contenu » :
  les points d'une carte sont indexés dans le texte de leur SectionMap.
- Onglet des questions visiteurs alimenté par GET /api/Ai/insights/{id}. Une carte
  sans données se masque au lieu d'afficher un cadre creux.

Client API
- AIApi était dans le client généré mais exposé nulle part dans client.dart, où
  les 18 autres façades le sont. Câblé.

34 clés i18n FR/EN/NL. flutter analyze propre, flutter build web .

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 10:48:40 +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
2b0ac1ed0b wip support appconfigLink + update min size for elements in main views 2025-08-14 22:25:33 +02:00
Thomas Fransolet
d47dc15688 Fix Menu + misc 2025-05-27 15:04:20 +02:00
Thomas Fransolet
7263303b7e Service worker update {{}} - menu working ! + clean code 2025-05-23 15:17:01 +02:00
Thomas Fransolet
e16e898140 Map done ! 2025-05-15 15:11:21 +02:00
Thomas Fransolet
214fe574e6 Update to add ressource on detail view 2024-06-21 22:44:26 +02:00
Thomas Fransolet
e5a2d4f06a Update tarif to title (more char) + add image geopoint 2024-06-20 16:23:44 +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
fb0a8674d1 Wait 2 sec before refresh ressources (on create) 2024-03-14 15:04:43 +01:00
Thomas Fransolet
8824609fad Clean code + add pick location 2024-03-14 14:41:55 +01:00
Thomas Fransolet
09c8cc7cfd Added JsonUrl (to test) 2024-01-24 17:08:06 +01:00
Thomas Fransolet
57c7d56306 clean code + accept empty for descriptions 2024-01-16 16:05:43 +01:00
Thomas Fransolet
1d81997a99 Handle resource viewer + add rows and cols to puzzle 2023-12-29 14:59:21 +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
Thomas Fransolet
0ffe261e86 Add audio, video, image, pdf and json files (online and local) 2023-12-17 16:14:39 +01:00
Thomas Fransolet
9d099a201c Wip handle new entities and updates for visitNamur 2023-12-15 17:00:57 +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
ff18f37b1b Add pinCode to manager + show devices tab (fort logic) 2023-12-05 14:38:47 +01:00
a3a62d1903 Null safety ! 2023-04-01 16:52:13 +02:00
Thomas Fransolet
407fe28ead Add update resource label possibility + update layout 2023-03-31 17:13:34 +02:00
Thomas Fransolet
d3f60bcbe6 Add audio visualisation in resource 2023-03-31 16:45:06 +02:00
fb4f5e504d Update 2mb to 1.5mb 2023-03-10 20:16:43 +01:00
11f5e2860f Search fix + fix pdf generation with special character 2023-03-10 19:25:22 +01:00
246cb0739a Fix search not working 2023-03-10 17:54:59 +01:00
fb5973d016 View audio title on audio selection + add possibility to choose null on select resource 2023-03-10 17:42:31 +01:00
1cbf67d94b Fix image error loading 2023-01-27 21:06:28 +01:00
ed9c4bfc15 Update openapi generation .. + update code + fix issue on authenticate try on build 2022-12-22 17:30:37 +01:00
99aaad3f50 Add local storage + update audioIds for Article + fix small layout bugs 2022-12-22 14:32:43 +01:00
412746e39a WIP audioplayer view support but not supported, need project upgrade 2022-10-27 22:27:44 +02:00
eddc4005ae Add audio in web + update code for resource .. 2022-10-27 17:32:44 +02:00
ddda68c911 Show only title translations on article images + audio resourcetype + Nom to Identifiant 2022-10-26 17:14:11 +02:00
42c442b145 Update logic 2022-10-20 16:18:57 +02:00
24ab7796e2 Add instance generation service + dto + not show title and description for article 2022-10-06 17:06:08 +02:00
7450e1762f Update error color 2022-09-14 18:00:20 +02:00
d30223eb1f Clean code + add icons (mymuseum) 2022-09-14 17:48:58 +02:00
85db23ee76 Update loading 2022-09-10 23:10:05 +02:00
98e066c712 PDF QRCode download + code clean 2022-06-23 17:48:02 +02:00
358a035408 Add Quizz handle ! 2022-03-19 01:18:27 +01:00
Thomas Fransolet
54091ea2db upload multiple files Windows and Web + if web no remember me 2021-12-23 13:48:46 +01:00
Thomas Fransolet
c8fd56ebdc Fix resource bug + flutter update 2021-10-14 19:49:37 +02:00
Thomas Fransolet
2674233113 Add import/export config + add duration for notification + update service generation (no more detail resource) 2021-08-24 18:07:32 +02:00
Thomas Fransolet
3323aae3ed Clean code + fix image section bug + change windows title + add host field login (and update client) 2021-07-28 17:33:41 +02:00