mirror of
https://github.com/Shchoholiev/shopping-assistant-api.git
synced 2025-04-04 16:49:36 +00:00
Merge pull request #15 from Shchoholiev/bug/SA-150-fix-adding-message
bug/SA-150-fix-adding-message
This commit is contained in:
commit
93d2e9e0c2
@ -19,6 +19,10 @@ public class ProductService : IProductService
|
||||
private readonly IOpenAiService _openAiService;
|
||||
|
||||
private readonly IMessagesRepository _messagesRepository;
|
||||
|
||||
private bool mqchecker = false;
|
||||
|
||||
private SearchEventType currentDataType = SearchEventType.Wishlist;
|
||||
|
||||
public ProductService(IOpenAiService openAiService, IWishlistsService wishlistsService, IMessagesRepository messagesRepository)
|
||||
{
|
||||
@ -79,20 +83,26 @@ public class ProductService : IProductService
|
||||
var suggestionBuffer = new Suggestion();
|
||||
var messageBuffer = new MessagePart();
|
||||
var productBuffer = new ProductName();
|
||||
var currentDataType = SearchEventType.Wishlist;
|
||||
var dataTypeHolder = string.Empty;
|
||||
var counter = 0;
|
||||
|
||||
await foreach (var data in _openAiService.GetChatCompletionStream(chatRequest, cancellationToken))
|
||||
{
|
||||
if (data.Contains("["))
|
||||
counter++;
|
||||
if (mqchecker && currentDataType == SearchEventType.Message && messageBuffer != null)
|
||||
{
|
||||
if (dataTypeHolder=="[Message]" && messageBuffer.Text!=null)
|
||||
if (data == "[")
|
||||
{
|
||||
_wishlistsService.AddMessageToPersonalWishlistAsync(wishlistId, new MessageCreateDto()
|
||||
{
|
||||
Text = messageBuffer.Text,
|
||||
}, cancellationToken);
|
||||
mqchecker = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (data.Contains("["))
|
||||
{
|
||||
dataTypeHolder = string.Empty;
|
||||
dataTypeHolder += data;
|
||||
}
|
||||
@ -101,13 +111,17 @@ public class ProductService : IProductService
|
||||
{
|
||||
dataTypeHolder += data;
|
||||
currentDataType = DetermineDataType(dataTypeHolder);
|
||||
if (currentDataType == SearchEventType.Message)
|
||||
{
|
||||
mqchecker = true;
|
||||
}
|
||||
}
|
||||
|
||||
else if (dataTypeHolder=="[" && !data.Contains("["))
|
||||
{
|
||||
dataTypeHolder += data;
|
||||
}
|
||||
|
||||
|
||||
else
|
||||
{
|
||||
switch (currentDataType)
|
||||
@ -118,6 +132,7 @@ public class ProductService : IProductService
|
||||
Event = SearchEventType.Message,
|
||||
Data = data
|
||||
};
|
||||
currentDataType = SearchEventType.Message;
|
||||
messageBuffer.Text += data;
|
||||
break;
|
||||
|
||||
@ -163,6 +178,14 @@ public class ProductService : IProductService
|
||||
}
|
||||
}
|
||||
}
|
||||
if (currentDataType == SearchEventType.Message)
|
||||
{
|
||||
_wishlistsService.AddMessageToPersonalWishlistAsync(wishlistId, new MessageCreateDto()
|
||||
{
|
||||
Text = messageBuffer.Text,
|
||||
}, cancellationToken);
|
||||
mqchecker = false;
|
||||
}
|
||||
}
|
||||
|
||||
private SearchEventType DetermineDataType(string dataTypeHolder)
|
||||
|
@ -46,10 +46,10 @@ public class ProductTests
|
||||
{
|
||||
"[", "Message", "]", " What", " u", " want", " ?", "[", "Options", "]", " USB-C", " ;", " Keyboard", " ultra",
|
||||
" ;", "[", "Options", "]", " USB", "-C", " ;", "[", "Products", "]", " GTX", " 3090", " ;", " GTX",
|
||||
" 3070TI", " ;", " GTX", " 4070TI", " ;", " ?"
|
||||
" 3070TI", " ;", " GTX", " 4070TI", " ;", " ?", "[", "Message", "]", " What", " u", " want", " ?"
|
||||
};
|
||||
|
||||
var expectedMessages = new List<string> { " What", " u", " want", " ?" };
|
||||
var expectedMessages = new List<string> { " What", " u", " want", " ?", " What", " u", " want", " ?" };
|
||||
var expectedSuggestion = new List<string> { " USB-C", " Keyboard ultra", " USB-C" };
|
||||
|
||||
// Mock the GetChatCompletionStream method to provide the expected SSE data
|
||||
|
Loading…
Reference in New Issue
Block a user