refactor: split node agent and Go control plane
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
namespace WxAgent.Core;
|
||||
|
||||
public static class WechatDerivedText
|
||||
{
|
||||
// Only consume new text inside the bound message, never an entire window or an unbound OCR popup.
|
||||
public static string? AddedText(IReadOnlyList<string> before, IReadOnlyList<string> after)
|
||||
{
|
||||
var remaining = before.Where(value => !string.IsNullOrWhiteSpace(value))
|
||||
.GroupBy(value => value, StringComparer.Ordinal).ToDictionary(group => group.Key, group => group.Count(), StringComparer.Ordinal);
|
||||
var added = new List<string>();
|
||||
foreach (var value in after.Where(value => !string.IsNullOrWhiteSpace(value)))
|
||||
{
|
||||
if (remaining.GetValueOrDefault(value) > 0) remaining[value]--;
|
||||
else added.Add(value);
|
||||
}
|
||||
if (remaining.Values.Any(count => count > 0) || added.Count == 0) return null;
|
||||
if (added.Any(value => value.Contains("识别中", StringComparison.Ordinal) || value.Contains("转换中", StringComparison.Ordinal)
|
||||
|| value.Contains("转换失败", StringComparison.Ordinal) || value.Contains("识别失败", StringComparison.Ordinal)
|
||||
|| value.Contains("未识别到", StringComparison.Ordinal) || value.Contains("无法转换", StringComparison.Ordinal))) return null;
|
||||
return string.Join(Environment.NewLine, added);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user