INetActionExecutionService.cs
4.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
using Rcs.Application.Common;
using Rcs.Application.Services.PathFind.Models;
using Rcs.Domain.Entities;
namespace Rcs.Application.Services.PathFind;
/// <summary>
/// 网络动作执行服务接口
/// 负责执行路径段终点的网络动作(HTTP请求),并管理执行状态
/// @author zzy
/// </summary>
public interface INetActionExecutionService
{
/// <summary>
/// 检查路径段是否需要执行网络动作
/// @author zzy
/// </summary>
/// <param name="request">检查请求</param>
/// <returns>检查结果</returns>
Task<SegmentNetActionCheckResult> CheckSegmentNetActionsAsync(SegmentNetActionCheckRequest request);
/// <summary>
/// 执行网络动作
/// @author zzy
/// </summary>
/// <param name="request">执行请求</param>
/// <returns>执行结果</returns>
Task<NetActionExecuteResult> ExecuteNetActionAsync(NetActionExecuteRequest request);
/// <summary>
/// 批量执行多个网络动作
/// @author zzy
/// </summary>
/// <param name="requests">执行请求列表</param>
/// <returns>执行结果</returns>
Task<NetActionExecuteResult> ExecuteNetActionsAsync(List<NetActionExecuteRequest> requests);
/// <summary>
/// 获取网络动作执行上下文
/// @author zzy
/// </summary>
/// <param name="contextId">上下文ID</param>
/// <returns>执行上下文,不存在返回null</returns>
Task<NetActionExecutionContext?> GetExecutionContextAsync(string contextId);
/// <summary>
/// 处理异步回调
/// @author zzy
/// </summary>
/// <param name="request">回调请求</param>
/// <returns>回调响应</returns>
Task<NetActionCallbackResponse> HandleCallbackAsync(NetActionCallbackRequest request);
/// <summary>
/// 检查指定路径段是否有正在进行的网络动作
/// @author zzy
/// </summary>
/// <param name="robotId">机器人ID</param>
/// <param name="taskId">任务ID</param>
/// <param name="subTaskId">子任务ID</param>
/// <param name="junctionIndex">路口段索引</param>
/// <param name="resourceIndex">资源段索引</param>
/// <returns>是否有进行中的网络动作</returns>
Task<bool> HasInProgressNetActionAsync(
Guid robotId,
Guid taskId,
Guid subTaskId,
int junctionIndex,
int resourceIndex);
/// <summary>
/// 检查指定任务是否有等待异步响应的网络动作
/// @author zzy
/// </summary>
/// <param name="robotId">机器人ID</param>
/// <param name="taskId">任务ID</param>
/// <param name="subTaskId">子任务ID</param>
/// <returns>是否有等待异步响应的网络动作</returns>
Task<bool> HasWaitingAsyncResponseAsync(Guid robotId, Guid taskId, Guid subTaskId);
/// <summary>
/// 尝试继续发送下一段(网络动作执行成功后调用)
/// @author zzy
/// </summary>
/// <param name="contextId">上下文ID</param>
/// <returns>操作结果</returns>
Task<ApiResponse> TryContinueToNextSegmentAsync(string contextId);
/// <summary>
/// 取消指定任务的所有网络动作
/// @author zzy
/// </summary>
/// <param name="robotId">机器人ID</param>
/// <param name="taskId">任务ID</param>
/// <param name="subTaskId">子任务ID</param>
/// <returns>取消的数量</returns>
Task<int> CancelTaskNetActionsAsync(Guid robotId, Guid taskId, Guid subTaskId);
/// <summary>
/// 清理过期的网络动作上下文
/// @author zzy
/// </summary>
/// <returns>清理的数量</returns>
Task<int> CleanExpiredContextsAsync();
/// <summary>
/// 检查并处理超时的异步网络动作
/// @author zzy
/// 2026-02-07 新增
/// </summary>
/// <returns>处理的超时动作数量</returns>
Task<int> CheckAndHandleTimeoutActionsAsync();
/// <summary>
/// 重试失败的网络动作
/// @author zzy
/// 2026-02-07 新增
/// </summary>
/// <param name="contextId">上下文ID</param>
/// <returns>重试结果</returns>
Task<NetActionExecuteResult> RetryNetActionAsync(string contextId);
}