Правило код-стайла (§5 «Комментирование», §11 «Интерфейсы»): XML-<summary> пишется один раз — в интерфейсе; в реализациях интерфейсов XML-doc не пишем вообще (ни <summary>, ни <inheritdoc/>). Явная реализация интерфейсов — по умолчанию. <summary> допустим для public/protected членов без интерфейса (статика, константы, расширения) и в интерфейсах.
Владелец нашёл нарушение в недавних фабриках (метод Create реализован неявно) — исправлено в MR #14. Нужно проверить остальной проект.
Что проверить и исправить
Неявные (public) реализации членов интерфейсов в прод-коде — перевести на явные (scripts/make_explicit.py, идемпотентный codemod).
То же в тест-проектах core/telegram/ai/ml/storage (с учётом исключений: DTO/модели, хелперы, extension-классы).
В классах-реализациях интерфейсов убрать любые XML-доки (<summary> и <inheritdoc/>) — и у самого класса, и у членов: описание живёт только в интерфейсе.
<summary> на членах без интерфейса, не относящихся к public/protected (private/internal), а также на реализациях — убрать; оставить для public/protected, статики, констант, расширений.
Конструкторы не документируем — <summary>/<param> на конструкторе не нужны (в частности, у классов, реализующих интерфейс): «Создаёт фабрику …» и так очевидно из сигнатуры и типа. Убрать по проекту.
Критерии приёмки
нет неявных реализаций членов интерфейсов в прод-коде (кроме исключений)
в реализациях интерфейсов нет XML-доков (ни <summary>, ни <inheritdoc/>)
сборка всех решений 0/0, тесты зелёные
нет <summary>/<param> на конструкторах
отчёт о найденных/исправленных местах (файл:строка)
Затрагивает
core, ai, ml, telegram, storage (прод + тесты); фронт не трогаем
## Контекст
Правило код-стайла (§5 «Комментирование», §11 «Интерфейсы»): XML-`<summary>` пишется один раз — в интерфейсе; в реализациях интерфейсов XML-doc не пишем вообще (ни `<summary>`, ни `<inheritdoc/>`). Явная реализация интерфейсов — по умолчанию. `<summary>` допустим для public/protected членов без интерфейса (статика, константы, расширения) и в интерфейсах.
Владелец нашёл нарушение в недавних фабриках (метод `Create` реализован неявно) — исправлено в MR #14. Нужно проверить остальной проект.
## Что проверить и исправить
1. Неявные (public) реализации членов интерфейсов в прод-коде — перевести на явные (`scripts/make_explicit.py`, идемпотентный codemod).
2. То же в тест-проектах core/telegram/ai/ml/storage (с учётом исключений: DTO/модели, хелперы, extension-классы).
3. В классах-реализациях интерфейсов убрать любые XML-доки (`<summary>` и `<inheritdoc/>`) — и у самого класса, и у членов: описание живёт только в интерфейсе.
4. `<summary>` на членах без интерфейса, не относящихся к public/protected (private/internal), а также на реализациях — убрать; оставить для public/protected, статики, констант, расширений.
5. **Конструкторы не документируем** — `<summary>`/`<param>` на конструкторе не нужны (в частности, у классов, реализующих интерфейс): «Создаёт фабрику …» и так очевидно из сигнатуры и типа. Убрать по проекту.
## Критерии приёмки
- [x] нет неявных реализаций членов интерфейсов в прод-коде (кроме исключений)
- [x] в реализациях интерфейсов нет XML-доков (ни `<summary>`, ни `<inheritdoc/>`)
- [x] сборка всех решений 0/0, тесты зелёные
- [x] нет `<summary>`/`<param>` на конструкторах
- [x] отчёт о найденных/исправленных местах (файл:строка)
## Затрагивает
- core, ai, ml, telegram, storage (прод + тесты); фронт не трогаем
## Источники
- Замечание владельца 2026-09-13; `docs/spec/Код-стайл-Дейл.md` §5, §11; `scripts/make_explicit.py`
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.
Контекст
Правило код-стайла (§5 «Комментирование», §11 «Интерфейсы»): XML-
<summary>пишется один раз — в интерфейсе; в реализациях интерфейсов XML-doc не пишем вообще (ни<summary>, ни<inheritdoc/>). Явная реализация интерфейсов — по умолчанию.<summary>допустим для public/protected членов без интерфейса (статика, константы, расширения) и в интерфейсах.Владелец нашёл нарушение в недавних фабриках (метод
Createреализован неявно) — исправлено в MR #14. Нужно проверить остальной проект.Что проверить и исправить
Неявные (public) реализации членов интерфейсов в прод-коде — перевести на явные (
scripts/make_explicit.py, идемпотентный codemod).То же в тест-проектах core/telegram/ai/ml/storage (с учётом исключений: DTO/модели, хелперы, extension-классы).
В классах-реализациях интерфейсов убрать любые XML-доки (
<summary>и<inheritdoc/>) — и у самого класса, и у членов: описание живёт только в интерфейсе.<summary>на членах без интерфейса, не относящихся к public/protected (private/internal), а также на реализациях — убрать; оставить для public/protected, статики, констант, расширений.Конструкторы не документируем —
<summary>/<param>на конструкторе не нужны (в частности, у классов, реализующих интерфейс): «Создаёт фабрику …» и так очевидно из сигнатуры и типа. Убрать по проекту.Критерии приёмки
<summary>, ни<inheritdoc/>)<summary>/<param>на конструкторахЗатрагивает
Источники
docs/spec/Код-стайл-Дейл.md§5, §11;scripts/make_explicit.pyБеру в работу. Ветка t15_explicit_ifaces. Проведу аудит явных реализаций интерфейсов и дублей XML-доков по всем решениям.
MR: #19
Отчёт по задаче
Аудит
Проверены все 5 решений (прод + тесты) на неявные (public) реализации членов интерфейсов и на XML-доки в реализациях интерфейсов.
Исправлено
src/core/Deal.Infrastructure/Data/TenantContext.cs—TenantId,HasTenant,SchemaNamesrc/core/Deal.Infrastructure/Integrations/Services/LocalTelegramGateway.cs—SendCodeAsync,SendPasswordAsync,BackfillAsyncsrc/core/Deal.Modules.Tenants/Application/Services/DefaultPasswordHasher.cs—Hash,Verifysrc/telegram-service/Deal.Telegram/Telegram/WTelegramSessionClient.cs—IsAuthorized,IsConnected,ApiId,ApiHash,SessionBytesAesGcmSecretCipher,GrpcMlClient,GrpcTelegramClient,BudgetedAiClassifier/Tools,GrpcAiClassifier/Tools,LocalAiTools,CbrRateSource,AiConnectionChecker,LocalFileStorage,MinioFileStorage,TenantLimitStore,DiscoveryStore,KanbanStore,DiscoverySearchErrorCounter,LlmHttpClient(ai),CoreIngressClient,RandomBackfillPacer,ClientFactory(telegram).docs/spec/Код-стайл-Дейл.md§11 — формулировка про полный запрет XML-doc в реализациях интерфейсов.Исключения (по §11, не менялись)
DTO/модели, хелперы, extension-классы,
Card, EF-конфигурации, тест-проекты и тестовые дубли (Fake*,Recording*,TestDoubles).Проверки
main: 29 файлов, +35 / −212.Вне объёма
Fake*,Recording*) оставлены намеренно как исключения §11.scripts/в.gitignore).CI по MR #19 — success (прогон #46): сборка всех 5 решений 0/0, тесты core/telegram/ai/ml/storage зелёные, скан уязвимостей и сборка фронта прошли.