Архивация списков #13

Merged
gorbenko.pavel merged 16 commits from archive into main 2026-08-19 09:08:37 +00:00
Showing only changes of commit d8152982d7 - Show all commits
+1 -15
View File
@@ -21,21 +21,14 @@ const string CorsPolicyName = "Frontend";
var builder = WebApplication.CreateBuilder(args);
// Заменяет собой встроенных провайдеров логирования: все ILogger<T> в приложении
// (включая наши логи в ListPartitioning) идут через Serilog в оба синка ниже.
// ReadFrom.Configuration — чтобы Logging:LogLevel в appsettings продолжал работать
// как обычно, без второй, серилоговской системы настройки уровней рядом с ним.
builder.Host.UseSerilog((context, services, configuration) => configuration
.ReadFrom.Configuration(context.Configuration)
.Enrich.FromLogContext()
.WriteTo.Console()
// Один файл на календарный месяц (rollOnFileSizeLimit не включаем — ротация
// только по времени). retainedFileCountLimit: null — логи не подчищаются
// автоматически, ротацией места на диске занимается инфраструктура хоста.
.WriteTo.File(
"logs/log-.txt",
rollingInterval: RollingInterval.Month,
retainedFileCountLimit: null));
retainedFileCountLimit: 6));
builder.Services.Configure<ForwardedHeadersOptions>(options =>
{
@@ -59,8 +52,6 @@ builder.Services.AddApprovalRouteApplication();
builder.Services.Configure<RemindersOptions>(builder.Configuration.GetSection("Reminders"));
builder.Services.Configure<ListPartitioningOptions>(builder.Configuration.GetSection("ListPartitioning"));
// Hangfire на том же Postgres, что и остальные данные. Свои таблицы он создаёт сам
// (схема hangfire) при старте — отдельной EF-миграции для них не нужно.
builder.Services.AddHangfire(configuration => configuration
.SetDataCompatibilityLevel(CompatibilityLevel.Version_180)
.UseSimpleAssemblyNameTypeSerializer()
@@ -68,8 +59,6 @@ builder.Services.AddHangfire(configuration => configuration
.UsePostgreSqlStorage(postgres =>
postgres.UseNpgsqlConnection(builder.Configuration.GetConnectionString("Postgres"))));
// Воркер живёт в процессе API: задач мало (создание списка — редкое событие), и
// отдельный хост под них был бы лишней инфраструктурой.
builder.Services.AddHangfireServer();
builder.Services.AddApprovalRouteAuth(builder.Configuration);
builder.Services.AddScoped<ICurrentUser, CurrentUserAccessor>();
@@ -126,9 +115,6 @@ app.UseCors(CorsPolicyName);
app.UseAuthentication();
app.UseAuthorization();
// Свой Basic Auth, а не схемы из AuthSetup: дашборд Hangfire открывается прямо в
// браузере без похода за токеном Entra, ему нужна отдельная, простая проверка.
// Логин/пароль — в конфигурации (Hangfire:Dashboard), см. appsettings.json.
app.UseHangfireDashboard("/hangfire", new DashboardOptions
{
Authorization =