Compare commits

..

2 Commits

Author SHA1 Message Date
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

View File

@ -18,8 +18,10 @@ class AiChatRequest {
this.appType, this.appType,
this.configurationId, this.configurationId,
this.language, this.language,
this.conversationId,
this.history = const [], this.history = const [],
this.isVoice = false, this.isVoice = false,
this.isAutoTriggered = false,
}); });
String? message; String? message;
@ -38,11 +40,20 @@ class AiChatRequest {
String? language; String? language;
/// GUID de session généré par le client, stable sur une conversation.
/// Seul lien entre deux tours côté serveur : sans lui, `AiController` en génère
/// un par appel et chaque question devient une conversation isolée en base.
String? conversationId;
List<AiChatMessage>? history; List<AiChatMessage>? history;
/// true = interaction vocale (lunettes) prompt audio-friendly, pas de navigation /// true = interaction vocale (lunettes) prompt audio-friendly, pas de navigation
bool? isVoice; bool? isVoice;
/// true = tour déclenché par le système (mode proactif), pas demandé par le visiteur.
/// Le backend compte les jetons mais ne journalise pas la question : elle n'en est pas une.
bool? isAutoTriggered;
@override @override
bool operator ==(Object other) => bool operator ==(Object other) =>
identical(this, other) || identical(this, other) ||
@ -100,7 +111,13 @@ class AiChatRequest {
} else { } else {
json[r'history'] = null; json[r'history'] = null;
} }
if (this.conversationId != null) {
json[r'conversationId'] = this.conversationId;
} else {
json[r'conversationId'] = null;
}
json[r'isVoice'] = this.isVoice ?? false; json[r'isVoice'] = this.isVoice ?? false;
json[r'isAutoTriggered'] = this.isAutoTriggered ?? false;
return json; return json;
} }