Регистраторы AddDealPersistence, AddDealIntegrations, AddDealSecurity, AddDealFileStorage переведены на фабрики; DiscoveryWorkerService больше не имеет fallback new DiscoverySearchErrorCounter() (счётчик — обязательная DI-зависимость).
Правило фабрик/билдеров и список исключений добавлены в docs/spec/Код-стайл-Дейл.md (§4.1).
Добавлен тест FileStorageFactoryTests (выбор Local/MinIO).
Исключения (осознанно вне правила)
EF-конфигурации IEntityTypeConfiguration — метаданные модели EF;
Ai/Ml/TelegramGrpcConnection — обёртки ресурсов с IDisposable без порт-интерфейса;
статичные хэлперы и объекты без порт-интерфейса, создаваемые контейнером.
Проверки
Сборка 5 решений: 0 предупреждений / 0 ошибок.
Тесты: core 1342, telegram 130, ai 52, ml 38, storage 9 — зелёные.
Затрагивает core (инфраструктура, регистраторы, Discovery); фронт не трогался.
https://gitea.khomegeneric.keenetic.pro/rust/Deal/issues/12
## Что сделано
- Создание сервисов с порт-интерфейсом перенесено в фабрики `IXxxFactory`/`XxxFactory` (метод `Create()` возвращает интерфейс готового объекта):
- `ISecretCipherFactory` — `AesGcmSecretCipher`;
- `ITenantLimitStoreFactory` — `TenantLimitStore`;
- `IAiClassifierFactory` — `BudgetedAiClassifier`;
- `IAiToolsFactory` — `BudgetedAiTools`;
- `IFileStorageFactory` — `LocalFileStorage`/`MinioFileStorage`.
- Регистраторы `AddDealPersistence`, `AddDealIntegrations`, `AddDealSecurity`, `AddDealFileStorage` переведены на фабрики; `DiscoveryWorkerService` больше не имеет fallback `new DiscoverySearchErrorCounter()` (счётчик — обязательная DI-зависимость).
- Правило фабрик/билдеров и список исключений добавлены в `docs/spec/Код-стайл-Дейл.md` (§4.1).
- Добавлен тест `FileStorageFactoryTests` (выбор Local/MinIO).
## Исключения (осознанно вне правила)
- EF-конфигурации `IEntityTypeConfiguration` — метаданные модели EF;
- `Ai/Ml/TelegramGrpcConnection` — обёртки ресурсов с `IDisposable` без порт-интерфейса;
- статичные хэлперы и объекты без порт-интерфейса, создаваемые контейнером.
## Проверки
- Сборка 5 решений: 0 предупреждений / 0 ошибок.
- Тесты: core 1342, telegram 130, ai 52, ml 38, storage 9 — зелёные.
Затрагивает core (инфраструктура, регистраторы, Discovery); фронт не трогался.
Создание сервисов с порт-интерфейсом перенесено в IXxxFactory:
шифр секретов, хранилище лимитов, ИИ-классификатор, ИИ-инструменты,
файловое хранилище (Local/MinIO). Регистраторы и DiscoveryWorkerService
больше не создают реализации напрямую. Добавлен тест FileStorageFactory.
TelegramIngressTestHost больше не мутирует процессную переменную
DEAL_SERVICE_TOKEN: токен задаётся in-memory конфигурацией хоста.
Три ingress-тест-класса шли параллельно и перетирали env друг другу.
По код-стайлу §11 метод Create реализуется явно
(ISecretCipher ISecretCipherFactory.Create()), интерфейс вызывается
только по порту; тест фабрики типизирован интерфейсом.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
#12
Что сделано
IXxxFactory/XxxFactory(методCreate()возвращает интерфейс готового объекта):ISecretCipherFactory—AesGcmSecretCipher;ITenantLimitStoreFactory—TenantLimitStore;IAiClassifierFactory—BudgetedAiClassifier;IAiToolsFactory—BudgetedAiTools;IFileStorageFactory—LocalFileStorage/MinioFileStorage.AddDealPersistence,AddDealIntegrations,AddDealSecurity,AddDealFileStorageпереведены на фабрики;DiscoveryWorkerServiceбольше не имеет fallbacknew DiscoverySearchErrorCounter()(счётчик — обязательная DI-зависимость).docs/spec/Код-стайл-Дейл.md(§4.1).FileStorageFactoryTests(выбор Local/MinIO).Исключения (осознанно вне правила)
IEntityTypeConfiguration— метаданные модели EF;Ai/Ml/TelegramGrpcConnection— обёртки ресурсов сIDisposableбез порт-интерфейса;Проверки
Затрагивает core (инфраструктура, регистраторы, Discovery); фронт не трогался.