83 lines
2.5 KiB
C#
83 lines
2.5 KiB
C#
|
|
namespace Service;
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 智能处理服务 - 使用 Agent Framework 重构
|
|||
|
|
/// </summary>
|
|||
|
|
public interface ISmartHandleServiceV2
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 使用 Agent Framework 进行智能分类
|
|||
|
|
/// </summary>
|
|||
|
|
Task<AgentResult<ClassificationResult[]>> SmartClassifyAgentAsync(
|
|||
|
|
long[] transactionIds,
|
|||
|
|
Action<(string type, string data)> chunkAction);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 使用 Agent Framework 解析单行账单
|
|||
|
|
/// </summary>
|
|||
|
|
Task<AgentResult<AgentFramework.TransactionParseResult?>> ParseOneLineBillAgentAsync(string text);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 智能处理服务实现 - Agent Framework 版本
|
|||
|
|
/// </summary>
|
|||
|
|
public class SmartHandleServiceV2(
|
|||
|
|
ClassificationAgent classificationAgent,
|
|||
|
|
ParsingAgent parsingAgent,
|
|||
|
|
ITransactionCategoryRepository categoryRepository,
|
|||
|
|
ILogger<SmartHandleServiceV2> logger
|
|||
|
|
) : ISmartHandleServiceV2
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 使用 Agent Framework 进行智能分类
|
|||
|
|
/// </summary>
|
|||
|
|
public async Task<AgentResult<ClassificationResult[]>> SmartClassifyAgentAsync(
|
|||
|
|
long[] transactionIds,
|
|||
|
|
Action<(string type, string data)> chunkAction)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
logger.LogInformation("开始执行智能分类 Agent,ID 数量: {Count}", transactionIds.Length);
|
|||
|
|
|
|||
|
|
var result = await classificationAgent.ExecuteAsync(transactionIds, categoryRepository);
|
|||
|
|
|
|||
|
|
logger.LogInformation("分类完成:{Summary}", result.Summary);
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
logger.LogError(ex, "智能分类 Agent 执行失败");
|
|||
|
|
throw;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 使用 Agent Framework 解析单行账单
|
|||
|
|
/// </summary>
|
|||
|
|
public async Task<AgentResult<AgentFramework.TransactionParseResult?>> ParseOneLineBillAgentAsync(string text)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
logger.LogInformation("开始解析账单: {Text}", text);
|
|||
|
|
|
|||
|
|
var result = await parsingAgent.ExecuteAsync(text);
|
|||
|
|
|
|||
|
|
if (result.Success)
|
|||
|
|
{
|
|||
|
|
logger.LogInformation("解析成功: {Summary}", result.Summary);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
logger.LogWarning("解析失败: {Error}", result.Error);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
logger.LogError(ex, "解析 Agent 执行失败");
|
|||
|
|
throw;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|