Files
Deal/.superpowers/sdd/explicit-interfaces/progress.md
T
Rustam Khalimov 27c7831910
ci / build-test (push) Canceled after 0s
Deal — единая кодовая база
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 зелёные.
2026-09-11 23:56:47 +03:00

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 build 5 sln: 0 warnings / 0 errors.
  • Тесты: core 1340/1340, telegram 130/130, ai 52/52, ml 38/38, storage 9/9.
  • Коммиты: ed25c71 (явные реализации), 93e9100 (маркеры), далее — NSubstitute/доки.