32 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
762448c654 Lot F : écran d'audit log et compteur d'utilisateurs
Écran « Activité » sur GET /api/Audit, réservé au SuperAdmin comme la policy
de l'endpoint (menuId 13, conditionné à role.value == 0). Filtres instance,
type d'entité, utilisateur et plage de dates, pagination 50, clic sur une
ligne pour le détail avant/après en table plutôt que le JSON brut. Les ids
d'instance et d'utilisateur sont résolus en noms, un id absent de l'annuaire
restant affiché tel quel : le journal doit rester lisible après la
suppression de ce qu'il décrit.

manager_api_new n'est pas touché. L'écran passe par un http.get direct au
Bearer, comme _loadKnowledge / _loadInsights / _reindex du Guide IA : une
lecture seule ne justifie pas d'étendre un client qui s'édite à la main, et
le déclencheur de génération n'existe plus depuis le lot A.

Côté utilisateurs, compteur « X / 5 » et bouton d'ajout désactivé au
plafond. Le SuperAdmin en est exclu : son GET /api/User renvoie toutes les
instances, compter cette liste contre un plafond par instance n'aurait
aucun sens. Le masquage du rôle SuperAdmin pour un InstanceAdmin, resté en
question dans todo-features.md, était déjà fait — _allowedRoles filtre sur
r >= callerRole.

Trois pièges relevés en câblant :

- AuditController renvoie les entités brutes, pas un DTO — les champs sont
  ceux d'AuditLog en camelCase.
- invokeAPI ne lève pas sur un code d'erreur et son résultat était ignoré
  dans users_screen : un e-mail déjà utilisé (409) ou un rôle refusé (403)
  ne produisait aucun message. Le statut est désormais testé et le corps
  affiché, ce qui rendra visible sans retouche le futur 422 du plafond.
- DropdownButtonFormField ne relit pas initialValue sur reconstruction
  (FormField.didUpdateWidget ne traite que forceErrorText) : « Réinitialiser
  les filtres » vidait la requête sans vider l'affichage. Remplacé par un
  DropdownButton piloté.

40 clés i18n FR/EN/NL, flutter gen-l10n relancé. flutter analyze propre sur
les dossiers travaillés, flutter build web vert.

Deux dettes serveur restent ouvertes, hors périmètre de ce commit : le
plafond de 5 n'est pas appliqué par UserController (ce qui est livré ici est
un garde-fou d'interface, un POST direct passe toujours), et aucune section
n'est journalisée — AuditedTypes.Contains exige l'égalité exacte alors que
Section est abstraite. Détail dans DOCS/todo-features.md et v1-plan.md lot F.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 11:04:40 +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
a54952e5f4 MISC 2026-07-10 16:54:26 +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
1de0e2ec27 layout update + enable all section type for all + added missing loader for kiosk mode (tablet) + update section type 2025-11-21 15:08:42 +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
807d599910 Web, video, pdf, agenda, puzzle, weather + MISC 2025-05-15 17:20:34 +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
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
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
09c8cc7cfd Added JsonUrl (to test) 2024-01-24 17:08:06 +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
4dbbd2a335 Handle new language (Arab + Ukrainian) 2023-01-12 16:34:36 +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
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
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
2b145f757c Generation update + add checkInputContainer (IsTablet, IsOffline, IsMobile) 2022-06-22 16:59:12 +02:00
358a035408 Add Quizz handle ! 2022-03-19 01:18:27 +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
b5387880b1 Add filter type in resource screen 2021-05-26 18:14:16 +02:00
Thomas Fransolet
171fce5e24 Add menu detail view + add show modal edit subsection 2021-05-23 15:44:50 +02:00
Thomas Fransolet
6037b287d7 Map details done + change translations modal 2021-05-22 00:04:59 +02:00
Thomas Fransolet
6e2dac52d1 Add device service generation (code + in client) + update devices screen + section icons + sectio detail screen (WIP) 2021-05-04 19:13:09 +02:00
Thomas Fransolet
1a043ec675 Add side menu + children (devices, configurations & resources) 2021-04-21 18:26:37 +02:00
Thomas Fransolet
ea7f3876c1 Add login screen + logic + appcontext + redirection to main 2021-04-20 17:10:15 +02:00
Thomas Fransolet
0ff1f78572 Project creation + service generation 2021-04-07 17:51:47 +02:00