chore(infra): update compose configurations, mqtt health bridge, and export scripts

This commit is contained in:
2026-09-01 17:38:57 +02:00
parent 2fe8cc0dca
commit 567ddea46a
9 changed files with 76 additions and 62 deletions
+26
View File
@@ -9,6 +9,7 @@ using FinlyticBackend.Database;
using FinlyticBackend.Hubs;
using FinlyticBackend.Services;
using FinlyticBackend.Settings;
using FinlyticCore.Dtos;
using FinlyticCore.Dtos.Bot;
using FinlyticCore.Dtos.Logging;
using FinlyticCore.Dtos.News;
@@ -104,6 +105,11 @@ public class BackendMqttBridge : ManagedMqttClient, IHostedService
MqttTopics.RequestFilter(MqttTopics.Channels.BackendGetAggregatedFavorites),
HandleGetAggregatedFavoritesRpcAsync);
// Username lookup RPC Endpoint for FinlyticNotify
await SubscribeRpcAsync<UserIdRequest, string?>(
MqttTopics.RequestFilter(MqttTopics.Channels.BackendGetUsername),
HandleGetUsernameRpcAsync);
// FinlyticBackend previously never broadcast its OWN structured logs at all (it only relayed other
// services' logs received on MqttTopics.LogsWildcard, subscribed above) - it never used
// IFinlyticLogger<T>, so FinlyticLogBroadcaster.Broadcast was never invoked for anything happening
@@ -286,4 +292,24 @@ public class BackendMqttBridge : ManagedMqttClient, IHostedService
"[BackendMqttBridge] Responded to backend_GetAggregatedFavorites with {Count} unique ISINs. [CorrelationId: {CorrelationId}]", isins.Count, correlationId);
return isins;
}
private async Task<string?> HandleGetUsernameRpcAsync(UserIdRequest? req, string correlationId)
{
if (req == null || req.UserId == Guid.Empty) return null;
using var scope = _scopeFactory.CreateScope();
var dbContext = scope.ServiceProvider.GetRequiredService<BackendDbContext>();
var user = await dbContext.Users
.AsNoTracking()
.FirstOrDefaultAsync(u => u.Id == req.UserId);
if (user == null) return null;
string username = !string.IsNullOrWhiteSpace(user.FullName)
? user.FullName.Trim().ToLowerInvariant().Replace(" ", "_")
: user.Email.Split('@')[0].Trim().ToLowerInvariant();
return username;
}
}