26 Commits

Author SHA1 Message Date
Thomas Fransolet
125813c34e Crédits Studio : un préavis, pas un nouveau plafond (décision 27)
La limite demandée existe déjà deux fois — le solde prépayé est le plafond, et
StudioPerUserDailyCap borne la journée d'un utilisateur. Ce qui manque est
l'alerte : aujourd'hui le premier signal reçu est une génération qui échoue en
InsufficientCredits, et l'expiration à 12 mois fait s'évaporer un solde sans
prévenir. Seuil configurable par instance, mail au franchissement et rappel
d'expiration à J-30.

Carte kanban 282.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-16 15:29:16 +02:00
Thomas Fransolet
fb1d15d0b3 Tags NFC : analyse du troisième déclencheur physique
Deux recadrages par rapport à la demande initiale : le déclencheur n'est pas un
POI (qui est un point sur un GLB) mais une Section, au même endroit que le
beacon ; et l'indirection code → section n'a aucun équivalent existant à
réutiliser — en v1 le tag porte la même URL que le QR, donc zéro entité, zéro
endpoint.

Le vrai coût est ailleurs : ni Universal Links ni App Links n'existent sur nos
domaines, et ce lot-là profite autant au QR, qu'un appareil photo natif n'ouvre
pas dans l'app aujourd'hui. Dépend du déploiement de visitapp-web pour le
fallback sans app installée.

Carte kanban 265.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-16 15:29:16 +02:00
Thomas Fransolet
a227fc9d00 VR : quatre écarts entre l'onglet du manager et le casque
Relevé dans le code le 2026-09-16. Même cause pour les quatre : XR-2 a réutilisé
AppConfigurationLinkScreen tel quel, et cet écran sert quatre canaux qui n'ont
pas les mêmes réglages. Le sélecteur bento ne pilote rien en VR (les spans sont
portés par le lien de configuration, pas par les sections), la notification
annonce « application mobile », la popup d'édition d'un casque est celle du
kiosk avec la moitié des champs morte, et un bento VR suppose des spans par
section jusque dans Unity.

Plan dans v2/vr-menu-bento-plan.md, carte kanban 340.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-16 15:18:40 +02:00
Thomas Fransolet
a588c53549 Studio : ordre de passage du plan de test et socle d'upload
Le plan de test gagne un § 0bis : le lot 0 a réécrit tout le chemin d'upload
(URL V4 signée puis POST /ingest) et rien n'a jamais été déposé depuis un
navigateur, alors que les § 1 à 5 en dépendent tous. Ajout aussi de l'ordre de
passage en quatre séances, de la façon de reporter un échec, et des résultats
déjà obtenus sur le § 0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-16 15:18:40 +02:00
Thomas Fransolet
d879766cae Studio : lot 8f (VR) et repasse des lots 0 à 8 côté casque
Carte 315 : mention IA du lot 6 absente en VR, audio narré et casting à porter, couture ScenePersona vers Persona, Parcours probablement vide sur le casque (à vérifier). Plan et STATUS à jour.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011VxSQeGQYUvPmSEoGdnidA
2026-09-15 23:06:50 +02:00
Thomas Fransolet
78517cb38f Studio : lot 8e ajouté au plan, STATUS, kanban et plan de test à jour
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011VxSQeGQYUvPmSEoGdnidA
2026-09-15 23:00:46 +02:00
Thomas Fransolet
dff2f6ba37 Studio : lot 8 bouclé côté manager, STATUS, kanban et plan de test à jour
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011VxSQeGQYUvPmSEoGdnidA
2026-09-15 22:47:20 +02:00
Thomas Fransolet
a91a20d0e4 Studio : lot 8bis et son plan de test
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011VxSQeGQYUvPmSEoGdnidA
2026-09-15 22:41:41 +02:00
Thomas Fransolet
f9d5e9cb6b Studio : lot 8d et plan de test de la narration
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011VxSQeGQYUvPmSEoGdnidA
2026-09-15 22:18:23 +02:00
Thomas Fransolet
d8d62e7713 Plan Studio : suite du lot 8c
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011VxSQeGQYUvPmSEoGdnidA
2026-09-15 21:46:37 +02:00
Thomas Fransolet
aa80090ef8 Plan Studio : lot 8c côté parcours
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011VxSQeGQYUvPmSEoGdnidA
2026-09-15 21:12:42 +02:00
Thomas Fransolet
96ae59c889 Plan Studio : lot 8b fait
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011VxSQeGQYUvPmSEoGdnidA
2026-09-15 20:54:31 +02:00
Thomas Fransolet
c0b7140f41 Plan Studio : découpage du lot 8, 8a fait
8b pipeline TTS (bouton explicite, crédits Studio, MP3 via ffmpeg), 8c onglet Narrateurs, 8d portrait côté visiteur.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011VxSQeGQYUvPmSEoGdnidA
2026-09-15 20:37:04 +02:00
Thomas Fransolet
b9f1a692ab Studio : lots 5-6 et calibrage §9.4 consignés, unité de crédit, lot 7 en cours
Résultats du calibrage (61 générations, coûts recoupés sur l'export fal),
trois corrections de prompt, unité 1 crédit = 0,015 $ vendue avec marge,
échantillons et figures d'archétypes embarqués ; planches contact dans
outputs/studio-calibrage-2026-09-15. STATUS, roadmap, cartes 280 et 310 à jour.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011VxSQeGQYUvPmSEoGdnidA
2026-09-15 20:09:53 +02:00
Thomas Fransolet
556391cf59 Docs en attente : plan SectionForm, cartes 020 (règles Storage) et 285 (loader)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011VxSQeGQYUvPmSEoGdnidA
2026-09-15 20:09:53 +02:00
Thomas Fransolet
6221978526 Docs en attente : canal VR et contenu immersif livrés, SectionForm, roadmap
Cartes 600, 610 et 620 closes (back-office XR, ressource 360, appairage tablette),
250 et 320 retirées du planifié, 015 et 330 à jour ; STATUS, roadmap, test-plan,
todo-features et plans VR / frontière immersif alignés ; kanban.html regénéré.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011VxSQeGQYUvPmSEoGdnidA
2026-09-15 20:06:34 +02:00
Thomas Fransolet
59939ddb87 Studio : lots 0 à 4 codés, décision 23, cartes 280 et 300 à jour
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-13 21:07:01 +02:00
Thomas Fransolet
1fe76470ab Plan Studio : lot 1 livre, decision 22
Plafond dur organisation retire : avec des credits prepayes, le solde est deja
le plafond. SubscriptionPlan.HasStudio / StudioCreditsGranted et
Instance.StudioProviderRegion ne sont pas crees tant que rien ne les lit. API
credits, schema et etapes du lot 1 alignes sur le code.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-13 19:51:21 +02:00
Thomas Fransolet
d70d851b6f Plan Studio consolide, lot 0 livre
studio-plan.md : section 8 executable pour les lots 0 a 4 (prerequis, etapes,
verifications, gate) et section 9 catalogue v0 (styles, preambule, gabarits,
calibrage). Decisions 14 a 21 : upload par URL signee et ingestion serveur,
MVP texte + image source sur objets et lieux, prix differes et Grant manuel,
une recharge prolonge tout le solde, plafonds d'upload par type, catalogue
calibre fin de lot 3, lignage en colonnes, contrat fournisseur multi-fichier.

Corrige les contradictions laissees par les revisions : Kind retire de
Persona, talking head, API credits, webhook fal.ai signe en ED25519 et non en
HMAC, enum ResourceType deja etendu. Les noms suivent le code du lot 0
(ResourceIngestionService, GetInfoAsync, ReadAllAsync).

immersif-frontiere-plan.md : decisions 1, 4 et 6 marquees reportees.

Kanban : cartes 280 et 300 a jour, carte 305 sur le watermark inactif depuis
l'upload direct.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-13 17:51:23 +02:00
Thomas Fransolet
29da4fcb83 Contenu immersif : la frontiere Studio IA / XR est tranchee
Les deux plans se renvoyaient la balle exactement sur la zone a
construire : studio-plan mettait la 3D en lot 11 en disant "depend du
chantier VR", et vr-quest-unity-plan decrivait les POI sur GLB en
supposant un GLB qui arrive de quelque part. Nouveau document de
frontiere, plus les corrections qu'il impose au plan Studio.

v2/immersif-frontiere-plan.md (neuf)
- Trois couches separees : ressources immersives (360/GLB, se vendent
  sans casque), consommation (SectionModel3D, ImmersiveBackground, app
  Quest), et le Studio comme *source d'approvisionnement* de la couche 1
  et non module parallele.
- Pas d'add-on casque : un seul add-on "Contenu immersif" a 70 EUR, plus
  le hardware et l'onboarding one-shot. Reconfirme l'arbitrage du 31/08.
- Generation de scene : position revisee. Marble (World Labs) a une API
  depuis janvier 2026, ~0,12 $ le monde draft, export GLB. Cadre retenu
  = roomscale stationnaire ~3 m, pas d'environnement navigable : ~500k
  splats de plafond sur Quest 3 standalone, et un cas mesure a 12 fps
  sous Unity la ou une borne doit tenir 72.
- 11 decisions de retro-compat ordonnees par cout de retrofit. Les cinq
  premieres touchent des lots ANTERIEURS a la 3D : pipeline d'ingestion
  unique (l'upload est fait par le navigateur, donc un GLB uploade ne
  traverse aucun traitement alors qu'un GLB genere si), normalisation
  canonique des GLB, invalidation des POI, lignage en colonnes typees,
  renommage des credits.
- Mecaniques de jeu immersives notees, rien de planifie : repondre
  (SectionQuiz existe deja), trouver (marche aussi en web sur pano
  pivotant, donc se vend sans casque), ordonner
  (OrderedTranslationAndResource existe deja), avant/apres.

v2/studio-plan.md
- ImageCredits* -> StudioCredits* : une 3D coute 10 a 50 fois une image,
  le nom aurait menti des le lot 11.
- Credits rechargeables a expiration 12 mois au lieu d'un quota mensuel.
  Un musee genere 200 images en trois semaines pour une expo puis rien
  pendant cinq mois ; un forfait mensuel se gaspille dix mois sur douze.
  Le CreditLedger encaisse sans changement de structure.
- Le critere qui separe les deux monnaies, verifie dans le code :
  consomme en temps reel par le visiteur (chat, vocal) contre produit
  une fois par le client (images, 3D, video, TTS pre-genere). Le TTS
  passe donc cote Studio. Au passage : reindex et insights ne debitent
  rien alors qu'ils coutent.
- Lot 11 ne renvoie plus en boucle au plan VR.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-11 15:44:42 +02:00
Thomas Fransolet
40323b1440 Stockage des médias : le plan était en retard sur le code
Le pré-vol de quota et la suppression du blob sont livrés. Le contrôle
autoritaire à Create ne peut pas exister tel qu'il était écrit :
manager-app crée la ligne en annonçant sizeBytes puis téléverse, donc
il n'y a aucun blob à interroger à cet instant.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 12:05:31 +02:00
Thomas Fransolet
d36394cabd Carte hors ligne : conception du plan illustré, 3e fournisseur
Ni Google ni Mapbox ne donnent un fond hors ligne gratuit, et Mapbox
se facture au nombre de tuiles, pas à la surface. Pour un musée de
plein air comme le Fourneau Saint-Michel, la réponse est son propre
plan dessiné : les repères se posent sur l'image, le plan est une
Resource, donc embarqué par le pipeline hors ligne existant.

Conception seule, rien n'est implémenté. Mapbox est passé fournisseur
par défaut le 04/09.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 12:05:31 +02:00
Thomas Fransolet
851b062668 Update docs, kanban etc 2026-09-04 16:48:04 +02:00
Thomas Fransolet
489ccc6c22 Update docs (v2) and kanban 2026-09-03 14:00:51 +02:00
Thomas Fransolet
83bc8c51ad Arbitrages du 12/08, D2 livré, et deux docs qui affirmaient du faux
Décidé et inscrit : thèmes du lot J complets (job + table d'agrégats, donc le
§8.4 des CGU n'est pas à amender), meterZoneGPS sur mymuseum et visitapp-web,
D3/D4 sans attendre D0, rate limiting et Customer Portal confirmés V1, lunettes
Ray-Ban ramenées en V1, K9 (repasse visuelle de la borne, bento compris),
déclenchement proactif ouvert à tous, miroir de la conversation vocale.

Trois lignes du plan étaient périmées : le nettoyage de manager_api_new et la
sécurité du lot A sont faits depuis un moment, et un PUT ApplicationInstance
existe déjà.

Deux documents affirmaient un fallback Voice vers Mobile qui n'existe pas —
guide-ia-screen-plan.md et le commentaire d'AiController se confirmaient
mutuellement. Le code fait un FirstOrDefault sur le canal exact puis Forbid() :
envoyer AppType.Voice au chat sans ApplicationInstance de ce type rendrait 403
à chaque question. Corrigé côté doc ; le commentaire reste à corriger.

Le vocal n'est donc pas un canal mais un attribut : marqué dans
VisitEvent.Metadata, colonne JSON déjà existante, aucune migration.
AppTypeDistribution compte une entrée par session et tranche sur l'événement le
plus ancien — avec le miroir, une session est mixte, et un canal Voice aurait
mesuré « sessions démarrées en vocal », pas la part du vocal.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 17:47:34 +02:00
Thomas Fransolet
a5a8ecdb20 Documentation interne MyInfoMate / Unov
Import initial de la documentation : statut, roadmap, plans V1/V2,
specs verticales (creche, sport), audits securite, plan de test,
analyse concurrentielle et maquettes de design.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 11:17:01 +02:00