清理代码
Some checks failed
ci / release-gate (push) Has been cancelled

This commit is contained in:
2026-08-03 12:31:39 +08:00
parent caea0062b0
commit c497a3ca8d
537 changed files with 14171 additions and 12503 deletions

View File

@@ -1,14 +1,16 @@
using Microsoft.Extensions.Options;
using OpenTelemetry.Metrics;
using Serilog;
using Tiku.Application;
using Tiku.Application.PlatformBilling;
using Tiku.Application.Security;
using Tiku.Application.Storage;
using Tiku.Application.Tenancy;
using Tiku.Infrastructure;
using Tiku.Infrastructure.Assets;
using Tiku.Infrastructure.Storage;
using Tiku.Infrastructure.Observability;
using Tiku.Infrastructure.Security;
using OpenTelemetry.Metrics;
using Tiku.Infrastructure.Storage;
namespace Tiku.Worker;
@@ -17,10 +19,10 @@ internal static class WorkerDependencyInjection
internal static HostApplicationBuilder AddWorkerServices(this HostApplicationBuilder builder)
{
builder.Services.AddSerilog((services, configuration) => configuration
.ReadFrom.Configuration(builder.Configuration)
.ReadFrom.Services(services)
.Enrich.FromLogContext(),
preserveStaticLogger: true);
.ReadFrom.Configuration(builder.Configuration)
.ReadFrom.Services(services)
.Enrich.FromLogContext(),
true);
var connectionString = builder.Configuration.GetConnectionString("Database") ??
builder.Configuration["DATABASE_URL"] ??
@@ -30,26 +32,22 @@ internal static class WorkerDependencyInjection
"Database connection is required outside Development. Configure ConnectionStrings:Database or DATABASE_URL."));
builder.Services.AddApplication();
builder.Services.AddInfrastructure(connectionString);
var redisConnectionString = builder.Configuration.GetConnectionString("Redis") ?? builder.Configuration["REDIS_URL"];
var redisConnectionString =
builder.Configuration.GetConnectionString("Redis") ?? builder.Configuration["REDIS_URL"];
builder.Services.AddOptions<AuthorizationCacheOptions>()
.Bind(builder.Configuration.GetSection(AuthorizationCacheOptions.SectionName));
if (!string.IsNullOrWhiteSpace(redisConnectionString))
{
builder.Services.AddRedisSecurity(redisConnectionString, builder.Environment.EnvironmentName);
}
else if (builder.Environment.IsProduction())
{
throw new InvalidOperationException(
"Redis is required in Production for authorization cache invalidation retries.");
}
var otlpEndpoint = builder.Configuration["OpenTelemetry:OtlpEndpoint"];
var telemetry = builder.Services.AddOpenTelemetry().WithMetrics(metrics =>
metrics.AddMeter(WorkerTelemetry.MeterName, AuthorizationCacheTelemetry.MeterName));
if (Uri.TryCreate(otlpEndpoint, UriKind.Absolute, out var endpoint))
{
telemetry.WithMetrics(metrics => metrics.AddOtlpExporter(options => options.Endpoint = endpoint));
}
builder.Services.Configure<ObjectStorageOptions>(builder.Configuration.GetSection(ObjectStorageOptions.SectionName));
builder.Services.Configure<ObjectStorageOptions>(
builder.Configuration.GetSection(ObjectStorageOptions.SectionName));
builder.Services.Configure<AliyunOssOptions>(builder.Configuration.GetSection(AliyunOssOptions.SectionName));
builder.Services.PostConfigure<ObjectStorageOptions>(options =>
{
@@ -89,21 +87,21 @@ internal static class WorkerDependencyInjection
builder.Services.AddOptions<ObjectStorageOptions>()
.Validate(
options => !builder.Environment.IsProduction() ||
options.DefaultProvider == Tiku.Application.Storage.ObjectStorageProviders.AliyunOss,
options.DefaultProvider == ObjectStorageProviders.AliyunOss,
"Production managed storage must use the configured Aliyun OSS provider.")
.ValidateOnStart();
builder.Services.AddOptions<AliyunOssOptions>()
.Validate<Microsoft.Extensions.Options.IOptions<ObjectStorageOptions>>(
.Validate<IOptions<ObjectStorageOptions>>(
(aliyun, storage) =>
!builder.Environment.IsProduction() ||
storage.Value.DefaultProvider != Tiku.Application.Storage.ObjectStorageProviders.AliyunOss ||
storage.Value.DefaultProvider != ObjectStorageProviders.AliyunOss ||
aliyun.IsConfigured,
"Aliyun OSS credentials and region or endpoint are required when it is the default provider.")
.ValidateOnStart();
builder.Services.AddOptions<ClamAvOptions>()
.Bind(builder.Configuration.GetSection(ClamAvOptions.SectionName))
.Validate(ClamAvOptions.BeValid, "ClamAV settings are invalid.")
.Validate<Microsoft.Extensions.Options.IOptions<ObjectStorageOptions>>(
.Validate<IOptions<ObjectStorageOptions>>(
(clamAv, storage) => clamAv.StreamMaxLength >= storage.Value.MaxUploadBytes,
"ClamAV StreamMaxLength must cover the storage max upload size.")
.ValidateOnStart();
@@ -133,8 +131,10 @@ internal static class WorkerDependencyInjection
return builder;
}
private static string[] SplitLegacyList(string? value, string[] fallback) =>
string.IsNullOrWhiteSpace(value)
private static string[] SplitLegacyList(string? value, string[] fallback)
{
return string.IsNullOrWhiteSpace(value)
? fallback
: value.Split(',', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
}
}
}