diff --git a/BeWo/Styles/Features/AIChatStyles.xaml b/BeWo/Styles/Features/AIChatStyles.xaml index f4021819b..3aa3583b2 100644 --- a/BeWo/Styles/Features/AIChatStyles.xaml +++ b/BeWo/Styles/Features/AIChatStyles.xaml @@ -389,7 +389,38 @@ Header="Speichern" /> - + + + + + + + + + + + + + diff --git a/BeWo/ViewModel/AiConversationMessageVM.cs b/BeWo/ViewModel/AiConversationMessageVM.cs index 19bf5ef1a..753108c73 100644 --- a/BeWo/ViewModel/AiConversationMessageVM.cs +++ b/BeWo/ViewModel/AiConversationMessageVM.cs @@ -51,6 +51,7 @@ namespace BeWo.ViewModel public int Duration => DataContract.Duration ?? 0; public string DurationSec => ((double)Duration / 1000).ToString("0.#"); public DateTime Created => DataContract.Created; + public bool ShowMessage => DataContract.ShowMessage; protected override void InitByDataContract(AiConversationMessageDC pDataContract) { diff --git a/BeWo/ViewModel/ListViewModel/AiConversationListVM.cs b/BeWo/ViewModel/ListViewModel/AiConversationListVM.cs index ab03822db..dbbab7a2c 100644 --- a/BeWo/ViewModel/ListViewModel/AiConversationListVM.cs +++ b/BeWo/ViewModel/ListViewModel/AiConversationListVM.cs @@ -59,7 +59,8 @@ namespace BeWo.ViewModel.ListViewModel { Created = DateTime.Now, Message = "N. Dies ist eine Design Frage: Du sollst ganz viele Sachen machen. Dabei sollst du auf ganz viele Sachen achten: Zum Beispiel:\r\nSache 1\r\nSchritt 2", - Role = BS.Shared.AiConversationMessageRole.User + Role = BS.Shared.AiConversationMessageRole.User, + ShowMessage = true }; var message_dc3 = new AiConversationMessageDC() diff --git a/BeWo/ViewModel/View/AI/AiConversationChatViewModel.cs b/BeWo/ViewModel/View/AI/AiConversationChatViewModel.cs index 97c6eeaa6..953f560b7 100644 --- a/BeWo/ViewModel/View/AI/AiConversationChatViewModel.cs +++ b/BeWo/ViewModel/View/AI/AiConversationChatViewModel.cs @@ -203,7 +203,8 @@ namespace BeWo.ViewModel.View.AI new AiConversationMessageDC() { Message = message, - Role = AiConversationMessageRole.User + Role = AiConversationMessageRole.User, + ShowMessage = true } }; @@ -238,6 +239,7 @@ namespace BeWo.ViewModel.View.AI msg_dc.Message = MessageInput; msg_dc.Role = BS.Shared.AiConversationMessageRole.User; msg_dc.Created = DateTime.Now; + msg_dc.ShowMessage = true; var msg_vm = new AiConversationMessageVM(msg_dc); @@ -549,9 +551,10 @@ namespace BeWo.ViewModel.View.AI var msg_dc = new AiConversationMessageDC(); - msg_dc.Message = msg; + msg_dc.Message = prompt.ShowPrompt ? msg : null; msg_dc.Role = BS.Shared.AiConversationMessageRole.User; msg_dc.Created = DateTime.Now; + msg_dc.ShowMessage = prompt.ShowPrompt; var msg_vm = new AiConversationMessageVM(msg_dc); @@ -645,13 +648,14 @@ namespace BeWo.ViewModel.View.AI custom_viewContext.Secondary = ViewContext.Secondary; } - var msg = routine.Steps.VMList[step].PromptReference.Prompt; + var step_prompt = routine.Steps.VMList[step].PromptReference; var msg_dc = new AiConversationMessageDC { - Message = msg, + Message = step_prompt.ShowPrompt ? step_prompt.Prompt : null, Role = AiConversationMessageRole.User, - Created = DateTime.Now + Created = DateTime.Now, + ShowMessage = step_prompt.ShowPrompt }; var msg_vm = new AiConversationMessageVM(msg_dc); diff --git a/Data/Entities/AiConversationMessage.cs b/Data/Entities/AiConversationMessage.cs index 6779c7d19..76c935d17 100644 --- a/Data/Entities/AiConversationMessage.cs +++ b/Data/Entities/AiConversationMessage.cs @@ -20,5 +20,7 @@ namespace BeWo.Data.Entities public virtual AiConversation AiConversation { get; set; } public virtual int? Duration { get; set; } public virtual string ModelName { get; set; } + /// null = anzeigen (Bestandsdaten und normale Chat-Nachrichten) + public virtual bool ShowMessage { get; set; } } } diff --git a/Data/Mappings/AiConversationMessage.hbm.xml b/Data/Mappings/AiConversationMessage.hbm.xml index d716cc4be..367823be4 100644 --- a/Data/Mappings/AiConversationMessage.hbm.xml +++ b/Data/Mappings/AiConversationMessage.hbm.xml @@ -18,6 +18,7 @@ + diff --git a/Host/Host.csproj.user b/Host/Host.csproj.user index 16d56484a..8fd09928c 100644 --- a/Host/Host.csproj.user +++ b/Host/Host.csproj.user @@ -3,7 +3,7 @@ C:\Projects\Bewo\BeWo - Main\Host\Properties\PublishProfiles\FolderProfile.pubxml true - Release|Any CPU + Debug|Any CPU diff --git a/Model/Changes_2026-07-10 AiConversationMessage ShowMessage.txt b/Model/Changes_2026-07-10 AiConversationMessage ShowMessage.txt new file mode 100644 index 000000000..5e8904d6f --- /dev/null +++ b/Model/Changes_2026-07-10 AiConversationMessage ShowMessage.txt @@ -0,0 +1,7 @@ +INSERT INTO `.executedscripts` +VALUES ('Changes_2026-07-10 AiConversationMessage ShowMessage', CURDATE()); + +ALTER TABLE `aiconversationmessage` +ADD COLUMN `ShowMessage` TINYINT NULL DEFAULT NULL AFTER `ModelName`; + +UPDATE `aiconversationmessage` SET `ShowMessage` = TRUE; \ No newline at end of file diff --git a/Service/DCEntityMapper/AiConversationMessageDC_AiConversationMessage.cs b/Service/DCEntityMapper/AiConversationMessageDC_AiConversationMessage.cs index ff61d3503..c698e1f08 100644 --- a/Service/DCEntityMapper/AiConversationMessageDC_AiConversationMessage.cs +++ b/Service/DCEntityMapper/AiConversationMessageDC_AiConversationMessage.cs @@ -18,11 +18,13 @@ namespace BeWo.Service.DCEntityMapper pDataContract.Oid = pEntity.Oid; pDataContract.Version = pEntity.Version; pDataContract.Notice = pEntity.Notice; - pDataContract.Message = pEntity.Message; pDataContract.Role = pEntity.Role; pDataContract.Created = pEntity.Created; pDataContract.Duration = pEntity.Duration; pDataContract.ModelName = pEntity.ModelName; + pDataContract.ShowMessage = pEntity.ShowMessage; + + pDataContract.Message = pDataContract.ShowMessage ? pEntity.Message : null; return pDataContract; } diff --git a/Service/Plugins/AiService2.cs b/Service/Plugins/AiService2.cs index 9f61f6297..e5286ec7d 100644 --- a/Service/Plugins/AiService2.cs +++ b/Service/Plugins/AiService2.cs @@ -205,6 +205,7 @@ namespace BeWo.Service.Plugins clone_msg.Role = msg.Role; clone_msg.Duration = msg.Duration; clone_msg.ModelName = msg.ModelName; + clone_msg.ShowMessage = msg.ShowMessage; clone_conv.Messages.Add(clone_msg); clone_msg.AiConversation = clone_conv; @@ -411,13 +412,14 @@ namespace BeWo.Service.Plugins msg.AiConversation = conversation; msg.Role = AiConversationMessageRole.System; msg.Created = DateTime.Now; + msg.ShowMessage = true; conversation.Messages.Add(msg); return msg; } - protected virtual AiConversationMessageDC[] sendNewMessage(AiConversation conv, string message, bool save = true) + protected virtual AiConversationMessageDC[] sendNewMessage(AiConversation conv, string message, bool save = true, bool show_message = true) { CheckPermissions(conv.ActionType); @@ -440,6 +442,7 @@ namespace BeWo.Service.Plugins user_msg.AiConversation = conv; user_msg.Role = BS.Shared.AiConversationMessageRole.User; user_msg.Created = DateTime.Now; + user_msg.ShowMessage = show_message; conv.Messages.Add(user_msg); @@ -514,6 +517,7 @@ namespace BeWo.Service.Plugins assi_msg.Created = dt_before_request; assi_msg.Duration = duration ?? 0; assi_msg.ModelName = model; + assi_msg.ShowMessage = true; conv.Messages.Add(assi_msg); @@ -620,7 +624,7 @@ namespace BeWo.Service.Plugins } // Server Request - sendNewMessage(new_conv, prompt.Prompt, false).ToList(); + sendNewMessage(new_conv, prompt.Prompt, false, prompt.ShowPrompt).ToList(); var result = new List { diff --git a/Shared/DataContracts/Feature/AI/AiConversationMessageDC.cs b/Shared/DataContracts/Feature/AI/AiConversationMessageDC.cs index d4ec5ff0c..d719978c7 100644 --- a/Shared/DataContracts/Feature/AI/AiConversationMessageDC.cs +++ b/Shared/DataContracts/Feature/AI/AiConversationMessageDC.cs @@ -17,5 +17,6 @@ namespace BS.Shared.DataContracts.Feature.AI [DataMember] public DateTime Created { get; set; } [DataMember] public string ModelName { get; set; } [DataMember] public int? Duration { get; set; } + [DataMember] public bool ShowMessage { get; set; } } }