refactor: consolidate backend into modular monolith

This commit is contained in:
2026-07-30 15:37:31 +08:00
parent 30fd159041
commit 7a73dcbd12
55 changed files with 20409 additions and 1728 deletions

View File

@@ -4,9 +4,6 @@ using Tiku.Api.Contracts;
using Tiku.Application.Security;
using Tiku.Infrastructure.Persistence;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Diagnostics.HealthChecks;
using Tiku.Infrastructure.Messaging;
using Tiku.Api.Observability;
namespace Tiku.Api.Controllers;
@@ -17,10 +14,7 @@ namespace Tiku.Api.Controllers;
[Route("api/health")]
public sealed class HealthController(
TikuDbContext dbContext,
IRedisSecurityStore redisSecurityStore,
MessagingOptions messagingOptions,
HealthCheckService healthCheckService,
OutboxBacklogSnapshot outboxSnapshot) : ControllerBase
IRedisSecurityStore redisSecurityStore) : ControllerBase
{
[HttpGet]
[EndpointSummary("健康检查")]
@@ -40,29 +34,12 @@ public sealed class HealthController(
{
var database = await dbContext.Database.CanConnectAsync(cancellationToken);
var redis = !redisSecurityStore.IsConfigured || await redisSecurityStore.PingAsync(cancellationToken);
var rabbitHealth = await healthCheckService.CheckHealthAsync(
registration => registration.Tags.Contains("ready"),
cancellationToken);
var rabbitMq = !messagingOptions.IsConfigured || rabbitHealth.Status == HealthStatus.Healthy;
var outboxPending = outboxSnapshot.Pending;
var outboxOldestAgeSeconds = outboxSnapshot.OldestAgeSeconds;
var outboxAlert = outboxPending >= messagingOptions.OutboxBacklogAlertCount ||
outboxOldestAgeSeconds >= messagingOptions.OutboxOldestMessageAlertSeconds;
var ready = database && redis && rabbitMq;
var ready = database && redis;
var response = new
{
status = ready ? "ready" : "not_ready",
database,
redis = new { configured = redisSecurityStore.IsConfigured, ready = redis },
rabbitMq = new { configured = messagingOptions.IsConfigured, ready = rabbitMq },
outbox = new
{
pending = outboxPending,
oldestAgeSeconds = Math.Round(outboxOldestAgeSeconds, 1),
alert = outboxAlert,
backlogAlertCount = messagingOptions.OutboxBacklogAlertCount,
oldestMessageAlertSeconds = messagingOptions.OutboxOldestMessageAlertSeconds
},
checkedAt = DateTimeOffset.UtcNow
};
return ready ? Ok(response) : StatusCode(StatusCodes.Status503ServiceUnavailable, response);