From cde6ad77663a80d78d77568428a6287b53347716 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期四, 19 三月 2026 17:19:55 +0800
Subject: [PATCH] feat: 新增API路由缓存预热并完善机器人消息日志
---
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/HostedService/ApiRouteCacheWarmupHostedService.cs | 64 ++++++++++++++++++++++++++++++++
1 files changed, 64 insertions(+), 0 deletions(-)
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/HostedService/ApiRouteCacheWarmupHostedService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/HostedService/ApiRouteCacheWarmupHostedService.cs
new file mode 100644
index 0000000..040d024
--- /dev/null
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/HostedService/ApiRouteCacheWarmupHostedService.cs
@@ -0,0 +1,64 @@
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Logging;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Common.HttpEnum;
+using WIDESEAWCS_Core.Caches;
+
+namespace WIDESEAWCS_Server.HostedService
+{
+ /// <summary>
+ /// Preloads API route mappings into cache at application startup.
+ /// </summary>
+ public class ApiRouteCacheWarmupHostedService : IHostedService
+ {
+ private static readonly (string ConfigKey, string RoutePath)[] ApiRouteMappings =
+ {
+ (nameof(ConfigKey.CreateTaskInboundAsync), "Task/CreateTaskInbound"),
+ (nameof(ConfigKey.GetTasksLocation), "Task/GetTasksLocation"),
+ (nameof(ConfigKey.OutboundFinishTaskAsync), "Task/OutboundFinishTask"),
+ (nameof(ConfigKey.InboundFinishTaskAsync), "Task/InboundFinishTask"),
+ (nameof(ConfigKey.GetOutBoundTrayTaskAsync), "Task/GetOutBoundTrayTask"),
+ (nameof(ConfigKey.CreateTaskInboundTrayAsync), "Task/CreateTaskInboundTray"),
+ (nameof(ConfigKey.GroupPalletAsync), "Stock/GroupPalletAsync"),
+ (nameof(ConfigKey.ChangePalletAsync), "Stock/ChangePalletAsync"),
+ (nameof(ConfigKey.SplitPalletAsync), "Stock/SplitPalletAsync"),
+ (nameof(ConfigKey.UpdateTaskByStatus), "Task/UpdateTaskByStatus"),
+ (nameof(ConfigKey.TransferCheck), "LocationInfo/TransferCheck"),
+ (nameof(ConfigKey.RelocationFinishTask), "Task/RelocationFinishTask"),
+ (nameof(ConfigKey.CreateRobotGroupPalletTask), "Task/CreateRobotGroupPalletTask"),
+ (nameof(ConfigKey.CreateRobotChangePalletTask), "Task/CreateRobotChangePalletTask"),
+ (nameof(ConfigKey.CreateRobotSplitPalletTask), "Task/CreateRobotSplitPalletTask")
+ };
+
+ private readonly ICacheService _cache;
+ private readonly ILogger<ApiRouteCacheWarmupHostedService> _logger;
+
+ public ApiRouteCacheWarmupHostedService(
+ ICacheService cache,
+ ILogger<ApiRouteCacheWarmupHostedService> logger)
+ {
+ _cache = cache;
+ _logger = logger;
+ }
+
+ public Task StartAsync(CancellationToken cancellationToken)
+ {
+ const string cacheKeyPrefix = $"{RedisPrefix.Code}:{RedisName.API}:";
+ int warmedCount = 0;
+
+ foreach ((string configKey, string routePath) in ApiRouteMappings)
+ {
+ _cache.TryAdd($"{cacheKeyPrefix}{configKey}", routePath);
+ warmedCount++;
+ }
+
+ _logger.LogInformation(":API路由缓存预热完成。计数={Count}", warmedCount);
+ return Task.CompletedTask;
+ }
+
+ public Task StopAsync(CancellationToken cancellationToken)
+ {
+ return Task.CompletedTask;
+ }
+ }
+}
--
Gitblit v1.9.3