ci / build-test (push) Canceled after 0s
SaaS-мониторинг Telegram: ядро (модули Cards/Kanban/Pipeline/Tenants/Settings/ Discovery, Api, Infrastructure), сервисы telegram/ai/ml/storage, фронт Vue, контракты и grpc-hosting, деплой-конфиги (dev/prod/observability/CI-раннер), Gitea Actions CI, документация (ТЗ, техдок, api-map, код-стайл, планы, бэклог). Текущее состояние: все этапы роадмапа 0–12 закрыты, сборка 5 sln 0/0, тесты 1340/130/52/38/9 зелёные.
2.5 KiB
2.5 KiB
Ledger: explicit-interfaces (2026-09-11, поздний вечер)
Решение владельца: вариант A — явные реализации по умолчанию, классы напрямую не вызываем (исключения: DTO, хелперы, экстеншены), тесты через интерфейсы, моки — NSubstitute, маркерные классы не используем (маркерные интерфейсы).
Итог
- Codemod
scripts/make_explicit.py(идемпотентный): таблицы членов интерфейсов (многострочные сигнатуры), маппинг класс→интерфейсы включая partial-файлы, конвертацияpublic M(→IFoo.M(. Применено: 161 член в 30 прод-файлах. - Исправления компиляторного цикла: недостающие using'и в partial-файлах (скрипт-фиксер), снят
дефолт параметра в явной реализации
ITenantLimitStore.GetOrCreateAsync, самовызовыWTelegramSessionClientквалифицированы((ISessionClient)this), мусорный using вLlmHttpClient. - Тесты: 17 файлов перетипизированы с конкретных классов на интерфейсы (поля, tuple-деконструкции, var/target-typed new); DI-регистрации фейков → регистрация интерфейсных инстансов.
- Маркеры: 10 классов → интерфейсы
IKanbanModule,ICardsModule,IPipelineModule,IDiscoveryModule,ISettingsModule,ITelegramModule,ITenantsModule,IContracts,IInfrastructure,ISharedKernel; тесты наIsInterface. - NSubstitute 6.1.0 добавлен в 5 тест-проектов;
FakePasswordHasherудалён, вместо негоSupport/TestHashers.New()(Substitute.For + детерминированная семантика «fake-hash:»). - Правила владельца зафиксированы в §11 код-стайла; план миграции оставшихся ~30 фейков —
backlog.md(TD-TESTS-NSUBSTITUTE).
Проверка
dotnet build5 sln: 0 warnings / 0 errors.- Тесты: core 1340/1340, telegram 130/130, ai 52/52, ml 38/38, storage 9/9.
- Коммиты: ed25c71 (явные реализации),
93e9100(маркеры), далее — NSubstitute/доки.