Разбить Infrastructure и корень Deal.Api по назначению

Integrations -> Abstractions/Exceptions/Extensions/Models/Options/
Services (включая Storage); Persistence-конфигурации -> Configurations;
корень Deal.Api (оркестратор/планировщики/DTO) -> Services/Dtos.
namespace приведён к путям, using добавлены/дедуплицированы, FQN
обновлены.
This commit is contained in:
Rustam Khalimov
2026-09-11 13:20:10 +03:00
parent cd0b3b606b
commit 410194b0cb
289 changed files with 855 additions and 101 deletions
@@ -1,6 +1,11 @@
using Deal.Modules.Kanban.Application.Models;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
using Deal.Infrastructure.Integrations.Services;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Abstractions;
/// <summary>
/// Порт отправки батча обучения в ml-service (RPC TrainBatch, ml.proto L5255) — для MlOutboxFlushScheduler.
@@ -1,4 +1,10 @@
namespace Deal.Infrastructure.Integrations;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
using Deal.Infrastructure.Integrations.Services;
namespace Deal.Infrastructure.Integrations.Exceptions;
/// <summary>
/// Сбой вызова ИИ-сервиса (провайдер недоступен/не ответил корректно либо ответ без разбора) —
@@ -1,6 +1,11 @@
using Grpc.Core;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
using Deal.Infrastructure.Integrations.Services;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Extensions;
/// <summary>
/// Расширения классификации gRPC-исключений клиентов автономных сервисов.
@@ -1,7 +1,12 @@
using System.Net;
using System.Net.Sockets;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
using Deal.Infrastructure.Integrations.Services;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Extensions;
/// <summary>
/// Расширения <see cref="Uri"/> для SSRF-гейта интеграций (проверка приватности адреса).
@@ -1,8 +1,13 @@
using Deal.Grpc.Ai;
using Grpc.Core;
using Grpc.Net.Client;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Options;
using Deal.Infrastructure.Integrations.Services;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Models;
/// <summary>
/// Транспорт gRPC-клиентов ai-service: общий канал + обязательные metadata (Ruling 1, эталон
@@ -1,8 +1,13 @@
using Deal.Grpc.Ml;
using Grpc.Core;
using Grpc.Net.Client;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Options;
using Deal.Infrastructure.Integrations.Services;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Models;
/// <summary>
/// Транспорт gRPC-клиента ml-service: общий канал + обязательные metadata (Ruling 1).
@@ -1,8 +1,13 @@
using System.Net.Security;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Options;
using Deal.Infrastructure.Integrations.Services;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Models;
/// <summary>
/// Загруженный набор сертификатов mTLS внутреннего gRPC (Ruling 6, план Task 13).
@@ -1,4 +1,10 @@
namespace Deal.Infrastructure.Integrations;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Options;
using Deal.Infrastructure.Integrations.Services;
namespace Deal.Infrastructure.Integrations.Models;
/// <summary>
/// Результат health-пробы grpc.health.v1 автономного сервиса (Task 10; формирует <see cref="ServiceHealthProbe"/>).
@@ -1,8 +1,13 @@
using Deal.Grpc.Telegram;
using Grpc.Core;
using Grpc.Net.Client;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Options;
using Deal.Infrastructure.Integrations.Services;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Models;
/// <summary>
/// Транспорт gRPC-клиента telegram-service: общий канал + обязательные metadata (Ruling 1, план Task 14).
@@ -1,4 +1,10 @@
namespace Deal.Infrastructure.Integrations;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Services;
namespace Deal.Infrastructure.Integrations.Options;
/// <summary>
/// Конфигурация клиента AI-сервиса — секция <c>Services:Ai</c> (Ruling 6, план Task 15).
@@ -1,4 +1,10 @@
namespace Deal.Infrastructure.Integrations;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Services;
namespace Deal.Infrastructure.Integrations.Options;
/// <summary>
/// Конфигурация клиента ML-сервиса — секция <c>Services:Ml</c> (Ruling 6, план Task 16).
@@ -1,6 +1,11 @@
using Microsoft.Extensions.Configuration;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Services;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Options;
/// <summary>
/// Конфигурация mTLS-транспорта внутреннего gRPC (Ruling 6, план Task 13).
@@ -1,4 +1,10 @@
namespace Deal.Infrastructure.Integrations;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Services;
namespace Deal.Infrastructure.Integrations.Options;
/// <summary>
/// Конфигурация клиента telegram-service — секция <c>Services:Telegram</c> (Ruling 6, план Task 14).
@@ -4,8 +4,13 @@ using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Services;
/// <summary>
/// HTTP-реализация проверки подключения к AI-провайдеру (Ruling 7; 1:1 settings_routes.py L195219).
@@ -4,8 +4,13 @@ using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Services;
/// <summary>
/// Собирает конфиг активного ИИ-провайдера для запросов ai-service (Ruling 5: ядро расшифровывает
@@ -7,8 +7,13 @@ using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants;
using Microsoft.Extensions.Logging;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Services;
/// <summary>
/// Декоратор бюджетного гейта порта <see cref="IAiClassifier"/> (Ruling 3, Task 9): поверх «платного»
@@ -7,8 +7,13 @@ using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants;
using Microsoft.Extensions.Logging;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Services;
/// <summary>
/// Декоратор бюджетного гейта порта <see cref="IAiTools"/> (Ruling 3, Task 9): поверх «платного»
@@ -5,8 +5,13 @@ using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Microsoft.Extensions.Logging;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Services;
/// <summary>
/// HTTP-источник курсов ЦБ РФ: GET daily_json.js (Ruling 6, Task 8; 1:1 rates.py L4359).
@@ -8,8 +8,13 @@ using Deal.Modules.Pipeline.Application.Services;
using Deal.SharedKernel.Tenants;
using Grpc.Core;
using Microsoft.Extensions.Logging;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Services;
/// <summary>
/// gRPC-адаптер порта <see cref="IAiClassifier"/> к автономному ai-service (Ruling 5/6, план Task 15
@@ -4,8 +4,13 @@ using Deal.Grpc.Ai;
using Deal.SharedKernel.Tenants;
using Grpc.Core;
using Microsoft.Extensions.Logging;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Services;
/// <summary>
/// gRPC-адаптер порта <see cref="IAiTools"/> к автономному ai-service (Ruling 9, план Task 15/18/19).
@@ -19,8 +19,13 @@ using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants;
using Grpc.Core;
using Microsoft.Extensions.Logging;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Services;
/// <summary>
/// gRPC-адаптер порта IMlClient к автономному ml-service (Ruling 4/6, план Task 16 L438445).
@@ -4,8 +4,13 @@ using Deal.Grpc.Telegram;
using Deal.SharedKernel.Tenants;
using Grpc.Core;
using Microsoft.Extensions.Logging;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Services;
/// <summary>
/// gRPC-адаптер порта <see cref="ITelegramGateway"/> к автономному telegram-service (Ruling 6/7, план Task 14).
@@ -5,8 +5,13 @@ using Deal.Modules.Pipeline.Application.Models;
using Deal.Modules.Pipeline.Application.Registrars;
using Deal.Modules.Pipeline.Application.Services;
using Deal.Modules.Pipeline.Application.Parse;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Services;
/// <summary>
/// Локальная реализация <see cref="IAiClassifier"/> без внешнего ИИ-сервиса (Ruling 5, план Task 6 L370388).
@@ -1,7 +1,12 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Models;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Services;
/// <summary>
/// Локальная реализация <see cref="IAiTools"/> без внешнего ИИ-сервиса (Ruling 9, план Task 15).
@@ -17,8 +17,13 @@ using Deal.Modules.Settings.Application.Services;
// Алиас: статический класс ColumnRules лежит в одноимённом пространстве имён (см. CardsService) —
// внутри Deal.Modules.Kanban.Application имя ColumnRules резолвится в пространство.
using KanbanColumnRules = Deal.Modules.Kanban.Application.ColumnRules.ColumnRules;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Services;
/// <summary>
/// Адаптер ИИ-предложений колонок/ключей — детерминированная эвристика этапа 3 (Ruling 3, план Task 14).
@@ -10,8 +10,13 @@ using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Services;
/// <summary>
/// Локальная реализация <see cref="IMlClient"/> без внешнего ML-сервиса (Ruling 4, план Task 5 L266286).
@@ -1,7 +1,12 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Models;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Services;
/// <summary>
/// Локальная заглушка <see cref="ITelegramGateway"/> без telegram-service (Ruling 6, план Task 13/14).
@@ -4,8 +4,13 @@ using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Models;
using Deal.Modules.Kanban.Application.Registrars;
using Deal.Modules.Kanban.Application.Services;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Services;
// Общая запись обучающего сигнала в очередь MlOutbox (ml_client.push L4049) для адаптеров IMlClient.
// Поведение 1:1 с прототипом и с LocalMlClient.PushAsync этапа 3: пустые после trim text/label —
@@ -1,7 +1,12 @@
using System.Collections.Concurrent;
using Deal.Contracts.Integrations.Models;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Services;
/// <summary>
/// Кэш статуса ML-сервиса на тенанта (python ml_client L3031 + refresh_status L127135; Ruling 6).
@@ -1,8 +1,13 @@
using Grpc.Core;
using Grpc.Health.V1;
using Grpc.Net.Client;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Services;
/// <summary>
/// Health-проба grpc.health.v1 автономных сервисов (ml/ai/telegram) для операторского health
@@ -12,8 +12,13 @@ using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Observability;
using Deal.SharedKernel.Tenants;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
namespace Deal.Infrastructure.Integrations;
namespace Deal.Infrastructure.Integrations.Services;
/// <summary>
/// Recorder расхода токенов (Ruling 3 этапа 7; история — этап 10, T2): успешный RPC ai-service
@@ -1,4 +1,7 @@
namespace Deal.Infrastructure.Integrations.Storage;
using Deal.Infrastructure.Integrations.Storage.Options;
using Deal.Infrastructure.Integrations.Storage.Services;
namespace Deal.Infrastructure.Integrations.Storage.Extensions;
/// <summary>
/// Расширения <see cref="MinioStorageOptions"/> (выбор MinIO-адаптера по заполненности секции).
@@ -1,4 +1,7 @@
namespace Deal.Infrastructure.Integrations.Storage;
using Deal.Infrastructure.Integrations.Storage.Options;
using Deal.Infrastructure.Integrations.Storage.Services;
namespace Deal.Infrastructure.Integrations.Storage.Extensions;
/// <summary>
/// Расширения <see cref="string"/> для разбора конфигурационных значений.
@@ -1,4 +1,7 @@
namespace Deal.Infrastructure.Integrations.Storage;
using Deal.Infrastructure.Integrations.Storage.Extensions;
using Deal.Infrastructure.Integrations.Storage.Services;
namespace Deal.Infrastructure.Integrations.Storage.Options;
/// <summary>
/// Локальный режим файлового хранилища — секция <c>Storage:Local</c> (Ruling 4, Task 6).
@@ -1,4 +1,7 @@
namespace Deal.Infrastructure.Integrations.Storage;
using Deal.Infrastructure.Integrations.Storage.Extensions;
using Deal.Infrastructure.Integrations.Storage.Services;
namespace Deal.Infrastructure.Integrations.Storage.Options;
/// <summary>
/// MinIO-режим файлового хранилища — секция <c>Storage:Minio</c> (Ruling 4, Task 6).
@@ -1,4 +1,7 @@
namespace Deal.Infrastructure.Integrations.Storage;
using Deal.Infrastructure.Integrations.Storage.Extensions;
using Deal.Infrastructure.Integrations.Storage.Services;
namespace Deal.Infrastructure.Integrations.Storage.Options;
/// <summary>
/// Настройки файлового хранилища — секция <c>Storage</c> конфигурации (Ruling 4, Task 6).
@@ -2,8 +2,10 @@ using Deal.Contracts.Integrations;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Deal.Infrastructure.Integrations.Storage.Extensions;
using Deal.Infrastructure.Integrations.Storage.Options;
namespace Deal.Infrastructure.Integrations.Storage;
namespace Deal.Infrastructure.Integrations.Storage.Services;
/// <summary>
/// DI-регистрация файлового хранилища: выбор Local/MinIO по конфигурации (Ruling 4, Task 6).
@@ -1,7 +1,9 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Models;
using Deal.Infrastructure.Integrations.Storage.Extensions;
using Deal.Infrastructure.Integrations.Storage.Options;
namespace Deal.Infrastructure.Integrations.Storage;
namespace Deal.Infrastructure.Integrations.Storage.Services;
/// <summary>
/// Локальное файловое хранилище вложений — каталог на диске (Ruling 4, Task 6; 1:1 object_store.py L5479).
@@ -5,8 +5,10 @@ using Minio;
using Minio.DataModel;
using Minio.DataModel.Args;
using Minio.Exceptions;
using Deal.Infrastructure.Integrations.Storage.Extensions;
using Deal.Infrastructure.Integrations.Storage.Options;
namespace Deal.Infrastructure.Integrations.Storage;
namespace Deal.Infrastructure.Integrations.Storage.Services;
/// <summary>
/// Хранилище вложений на MinIO (S3-совместимое) — Minio .NET SDK (Ruling 4, Task 6; 1:1 object_store.py L26107).
@@ -1,6 +1,7 @@
// <auto-generated />
using System;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
@@ -1,6 +1,7 @@
// <auto-generated />
using System;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
@@ -1,6 +1,7 @@
// <auto-generated />
using System;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
@@ -1,6 +1,7 @@
// <auto-generated />
using System;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
@@ -1,6 +1,7 @@
// <auto-generated />
using System;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
@@ -1,6 +1,7 @@
// <auto-generated />
using System;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
@@ -1,6 +1,7 @@
// <auto-generated />
using System;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
@@ -1,6 +1,7 @@
// <auto-generated />
using System;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
@@ -1,6 +1,7 @@
// <auto-generated />
using System;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
@@ -1,6 +1,7 @@
// <auto-generated />
using System;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
@@ -1,6 +1,7 @@
// <auto-generated />
using System;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
@@ -1,6 +1,7 @@
// <auto-generated />
using System;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
@@ -1,6 +1,7 @@
// <auto-generated />
using System;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
@@ -1,6 +1,7 @@
// <auto-generated />
using System;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
@@ -1,6 +1,7 @@
// <auto-generated />
using System;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
@@ -1,6 +1,7 @@
// <auto-generated />
using System;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
@@ -1,6 +1,7 @@
// <auto-generated />
using System;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
@@ -1,6 +1,7 @@
// <auto-generated />
using System;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация записи аудита: таблица audit_log в схеме public (append-only).
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация карточки канбана: таблица Cards (модель без схемы).
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация журнала действий над карточками: таблица CardMoves (модель без схемы).
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация единого контейнера: таблица Containers (модель без схемы).
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация дедуп-хэшей пайплайна: таблица DedupEntries (модель без схемы).
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация каталога диалогов: таблица Dialogs (модель без схемы; Ruling 7).
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация чёрного списка Discovery: таблица DiscBlacklist (модель без схемы; Ruling 9).
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация кандидата Discovery: таблица DiscCandidates (модель без схемы; Ruling 9).
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация лога Discovery: таблица DiscLog (модель без схемы; Ruling 9).
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация задачи поиска Discovery: таблица DiscTasks (модель без схемы; Ruling 9).
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация глобальной (системной) настройки оператора: таблица global_settings
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация приглашения: таблица invites в схеме public.
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация комментария карточки: таблица LeadComments (модель без схемы).
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация очереди обучающих сигналов ML: таблица MlOutbox (модель без схемы).
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация оператора: таблица operators в схеме public.
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация сессии оператора: таблица operator_sessions в схеме public.
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация очереди входящих пайплайна: таблица QueueItems (модель без схемы).
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация счётчика фиксированного окна: таблица rate_limit_counters в схеме public
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация отсева пайплайна: таблица RejectedItems (модель без схемы).
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация сессии: таблица sessions в схеме public.
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация тенанта: таблица tenants в схеме public.
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация лимита тенанта: таблица tenant_limits в схеме public.
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация настройки тенанта: таблица settings в схеме тенанта (модель без схемы).
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация превью-сообщений: таблица TgMessages (модель без схемы; Ruling 7, db.py L6774).
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация события расхода токенов: таблица token_usage_events в схеме public (append-only).
@@ -1,8 +1,10 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
namespace Deal.Infrastructure.Persistence.Configurations;
/// <summary>
/// EF-конфигурация пользователя: таблица users в схеме public.
@@ -1,5 +1,6 @@
using Deal.Infrastructure.Persistence.Entities;
using Microsoft.EntityFrameworkCore;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
@@ -1,5 +1,6 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence;
@@ -1,3 +1,5 @@
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence.Entities;
/// <summary>
@@ -1,4 +1,5 @@
using NpgsqlTypes;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence.Entities;
@@ -1,3 +1,5 @@
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence.Entities;
/// <summary>
@@ -1,4 +1,5 @@
using NpgsqlTypes;
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence.Entities;
@@ -1,3 +1,5 @@
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence.Entities;
/// <summary>
@@ -1,3 +1,5 @@
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence.Entities;
/// <summary>
@@ -1,3 +1,5 @@
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence.Entities;
/// <summary>
@@ -1,3 +1,5 @@
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence.Entities;
/// <summary>
@@ -1,3 +1,5 @@
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence.Entities;
/// <summary>
@@ -1,3 +1,5 @@
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence.Entities;
/// <summary>
@@ -1,3 +1,5 @@
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence.Entities;
/// <summary>
@@ -1,3 +1,5 @@
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence.Entities;
/// <summary>
@@ -1,3 +1,5 @@
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence.Entities;
/// <summary>
@@ -1,3 +1,5 @@
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence.Entities;
/// <summary>
@@ -1,3 +1,5 @@
using Deal.Infrastructure.Persistence.Configurations;
namespace Deal.Infrastructure.Persistence.Entities;
/// <summary>

Some files were not shown because too many files have changed in this diff Show More