Merge pull request #453 from iceljc/bugfix/fix-truncate-breakpoint

fix truncate breakpoint
This commit is contained in:
C. Oceania 2024-05-13 15:59:03 -05:00 committed by GitHub
commit 8ef2bb02f1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 7 additions and 9 deletions

View file

@ -17,6 +17,6 @@ public interface IConversationStateService
int activeRounds = -1, string valueType = StateDataType.String, string source = StateSource.User, bool readOnly = false);
void SaveStateByArgs(JsonDocument args);
bool RemoveState(string name);
void CleanStates(params string[] keepStates);
void CleanStates(params string[] excludedStates);
void Save();
}

View file

@ -270,7 +270,7 @@ public class ConversationStateService : IConversationStateService, IDisposable
return true;
}
public void CleanStates(params string[] keepStates)
public void CleanStates(params string[] excludedStates)
{
var routingCtx = _services.GetRequiredService<IRoutingContext>();
var curMsgId = routingCtx.MessageId;
@ -279,7 +279,7 @@ public class ConversationStateService : IConversationStateService, IDisposable
foreach (var key in _curStates.Keys)
{
// skip state
if (keepStates.Contains(key))
if (excludedStates.Contains(key))
{
continue;
}

View file

@ -481,7 +481,7 @@ namespace BotSharp.Core.Repository
// Handle truncated breakpoints
var breakpointDir = Path.Combine(convDir, BREAKPOINT_FILE);
var breakpoints = CollectConversationBreakpoints(breakpointDir);
isSaved = HandleTruncatedBreakpoints(breakpointDir, breakpoints, messageId);
isSaved = HandleTruncatedBreakpoints(breakpointDir, breakpoints, refTime);
// Remove logs
if (cleanLog)
@ -585,10 +585,9 @@ namespace BotSharp.Core.Repository
return isSaved;
}
private bool HandleTruncatedBreakpoints(string breakpointDir, List<ConversationBreakpoint> breakpoints, string refMessageId)
private bool HandleTruncatedBreakpoints(string breakpointDir, List<ConversationBreakpoint> breakpoints, DateTime refTime)
{
var targetIdx = breakpoints.FindIndex(x => x.MessageId == refMessageId);
var truncatedBreakpoints = breakpoints?.Where((x, idx) => idx < targetIdx)?
var truncatedBreakpoints = breakpoints?.Where(x => x.CreatedTime < refTime)?
.ToList() ?? new List<ConversationBreakpoint>();
var isSaved = SaveTruncatedBreakpoints(breakpointDir, truncatedBreakpoints);

View file

@ -452,8 +452,7 @@ public partial class MongoRepository
if (!foundStates.Breakpoints.IsNullOrEmpty())
{
var breakpoints = foundStates.Breakpoints ?? new List<BreakpointMongoElement>();
var targetIdx = breakpoints.FindIndex(x => x.MessageId == messageId);
var truncatedBreakpoints = breakpoints.Where((x, idx) => idx < targetIdx).ToList();
var truncatedBreakpoints = breakpoints.Where(x => x.CreatedTime < refTime).ToList();
foundStates.Breakpoints = truncatedBreakpoints;
}