@@ -14,6 +14,7 @@ public class ChatService : IChatService
1414 {
1515 private readonly IServiceScopeFactory _scopeFactory ;
1616 private readonly ILogger < ChatService > _logger ;
17+ private readonly IChatMetricsService _metricsService ;
1718
1819 private readonly IConversationService _conversationService ;
1920 private readonly ICharacterService _characterService ;
@@ -26,10 +27,12 @@ public class ChatService : IChatService
2627 private readonly ICostTrackingDecorator < ChatLLMProcessor > _llmProcessor ;
2728 private readonly ICostTrackingDecorator < ChatTTSProcessor > _ttsProcessor ;
2829 private readonly ChatResultProcessor _resultProcessor ;
29- private readonly IChatMetricsService _metricsService ;
30- private readonly ChatFailureHandler _failureHandler ;
30+
31+ private readonly ChatSuccessHandler _chatSuccessHandler ;
32+ private readonly ChatFailureHandler _chatFailureHandler ;
3133
3234 public ChatService (
35+ IChatMetricsService metricsService ,
3336 IServiceScopeFactory scopeFactory ,
3437 ILogger < ChatService > logger ,
3538 IConversationService conversationService ,
@@ -41,23 +44,25 @@ public ChatService(
4144 ICostTrackingDecorator < ChatLLMProcessor > llmProcessor ,
4245 ICostTrackingDecorator < ChatTTSProcessor > ttsProcessor ,
4346 ChatResultProcessor resultProcessor ,
44- IChatMetricsService metricsService ,
45- ChatFailureHandler failureHandler
47+
48+ ChatSuccessHandler chatSuccessHandler ,
49+ ChatFailureHandler chatFailureHandler
4650 ) {
51+ _metricsService = metricsService ;
4752 _scopeFactory = scopeFactory ;
4853 _logger = logger ;
54+
4955 _conversationService = conversationService ;
5056 _characterService = characterService ;
5157 _validator = validator ;
5258 _memoryPreprocessor = memoryPreprocessor ;
5359 _inputProcessor = inputProcessor ;
5460 _actionProcessor = actionProcessor ;
55-
5661 _llmProcessor = llmProcessor ;
5762 _ttsProcessor = ttsProcessor ;
5863 _resultProcessor = resultProcessor ;
59- _metricsService = metricsService ;
60- _failureHandler = failureHandler ;
64+ _chatSuccessHandler = chatSuccessHandler ;
65+ _chatFailureHandler = chatFailureHandler ;
6166 }
6267
6368 public async Task < ChatRequestResult > EnqueueChatRequestAsync ( ChatRequestCommand command )
@@ -81,16 +86,14 @@ public async Task<ChatRequestResult> EnqueueChatRequestAsync(ChatRequestCommand
8186 /// </summary>
8287 private async Task < ChatProcessContext > PrepareChatRequestAsync ( ChatRequestCommand command )
8388 {
84- var characterDto = await _characterService . GetCharacterByIdAsync ( command . CharacterId ) ;
85- var conversationHistory = await _conversationService . GetConversationHistoryAsync ( command . UserId , command . CharacterId , 10 ) ;
86-
87- command . SetConversationHistory ( conversationHistory ) ;
8889 await _inputProcessor . ProcessAsync ( command ) ;
8990 await _actionProcessor . ProcessAsync ( command ) ;
90-
91+
92+ var characterInfo = await _characterService . GetCharacterByIdAsync ( command . CharacterId ) ;
93+ var conversationHistoryContext = await _conversationService . GetConversationHistoryAsync ( command . UserId , command . CharacterId , 10 ) ;
9194 var memoryContext = await _memoryPreprocessor . CollectMemoryContextAsync ( command ) ;
9295
93- return new ChatProcessContext ( command , characterDto ! , conversationHistory , memoryContext ) ;
96+ return new ChatProcessContext ( command , characterInfo , conversationHistoryContext , memoryContext ) ;
9497 }
9598
9699 /// <summary>
@@ -99,17 +102,17 @@ private async Task<ChatProcessContext> PrepareChatRequestAsync(ChatRequestComman
99102 private async Task ProcessChatRequestInternalAsync ( ChatProcessContext context )
100103 {
101104 try {
102- //
103105 await _llmProcessor . ProcessAsync ( context ) ;
104106 await _ttsProcessor . ProcessAsync ( context ) ;
105-
107+
108+ await _chatSuccessHandler . HandleAsync ( context ) ;
109+
106110 using var scope = _scopeFactory . CreateScope ( ) ;
107111 var resultProcessor = scope . ServiceProvider . GetRequiredService < ChatResultProcessor > ( ) ;
108- await resultProcessor . SendResultsAsync ( context ) ;
109112 await resultProcessor . PersistResultsAsync ( context ) ;
110113 }
111- catch ( Exception ex ) {
112- await _failureHandler . HandleFailureAsync ( context , ex ) ;
114+ catch ( Exception ) {
115+ await _chatFailureHandler . HandleAsync ( context ) ;
113116 }
114117 finally {
115118 _metricsService . EndChatMetrics ( ) ;
0 commit comments