Проверить явную реализацию интерфейсов и дублирование summary #15

Closed
opened 2026-09-13 03:59:44 +03:00 by stepan · 3 comments
Owner

Контекст

Правило код-стайла (§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> на конструкторе не нужны (в частности, у классов, реализующих интерфейс): «Создаёт фабрику …» и так очевидно из сигнатуры и типа. Убрать по проекту.

Критерии приёмки

  • нет неявных реализаций членов интерфейсов в прод-коде (кроме исключений)
  • в реализациях интерфейсов нет XML-доков (ни <summary>, ни <inheritdoc/>)
  • сборка всех решений 0/0, тесты зелёные
  • нет <summary>/<param> на конструкторах
  • отчёт о найденных/исправленных местах (файл:строка)

Затрагивает

  • core, ai, ml, telegram, storage (прод + тесты); фронт не трогаем

Источники

  • Замечание владельца 2026-09-13; docs/spec/Код-стайл-Дейл.md §5, §11; scripts/make_explicit.py
## Контекст Правило код-стайла (§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`
stepan self-assigned this 2026-09-13 03:59:44 +03:00
rust added this to the Deal Board project 2026-09-13 04:17:16 +03:00
rust moved this to To Do in Deal Board on 2026-09-13 04:17:19 +03:00
rust moved this to In Progress in Deal Board on 2026-09-13 04:26:27 +03:00
Author
Owner

Беру в работу. Ветка t15_explicit_ifaces. Проведу аудит явных реализаций интерфейсов и дублей XML-доков по всем решениям.

Беру в работу. Ветка t15_explicit_ifaces. Проведу аудит явных реализаций интерфейсов и дублей XML-доков по всем решениям.
Author
Owner

MR: #19

Отчёт по задаче

Аудит

Проверены все 5 решений (прод + тесты) на неявные (public) реализации членов интерфейсов и на XML-доки в реализациях интерфейсов.

Исправлено

  1. Неявные реализации → явные (прод, 4 файла):
    • src/core/Deal.Infrastructure/Data/TenantContext.csTenantId, HasTenant, SchemaName
    • src/core/Deal.Infrastructure/Integrations/Services/LocalTelegramGateway.csSendCodeAsync, SendPasswordAsync, BackfillAsync
    • src/core/Deal.Modules.Tenants/Application/Services/DefaultPasswordHasher.csHash, Verify
    • src/telegram-service/Deal.Telegram/Telegram/WTelegramSessionClient.csIsAuthorized, IsConnected, ApiId, ApiHash, SessionBytes
  2. Удалены XML-доки у классов-реализаций интерфейсов и их членов: 21 файл, 125 док-блоков. Примеры: AesGcmSecretCipher, GrpcMlClient, GrpcTelegramClient, BudgetedAiClassifier/Tools, GrpcAiClassifier/Tools, LocalAiTools, CbrRateSource, AiConnectionChecker, LocalFileStorage, MinioFileStorage, TenantLimitStore, DiscoveryStore, KanbanStore, DiscoverySearchErrorCounter, LlmHttpClient (ai), CoreIngressClient, RandomBackfillPacer, ClientFactory (telegram).
  3. Обновлён docs/spec/Код-стайл-Дейл.md §11 — формулировка про полный запрет XML-doc в реализациях интерфейсов.

Исключения (по §11, не менялись)

DTO/модели, хелперы, extension-классы, Card, EF-конфигурации, тест-проекты и тестовые дубли (Fake*, Recording*, TestDoubles).

Проверки

  • Сборка всех 5 решений: 0 предупреждений / 0 ошибок.
  • Тесты: core 1342, telegram 130, ai 52, ml 38, storage 9 — зелёные.
  • Дифф относительно main: 29 файлов, +35 / −212.

Вне объёма

  • Неявные реализации в тестовых дублях (Fake*, Recording*) оставлены намеренно как исключения §11.
  • Codemod-скрипты в репозиторий не входят (scripts/ в .gitignore).
MR: https://gitea.khomegeneric.keenetic.pro/rust/Deal/pulls/19 ## Отчёт по задаче ### Аудит Проверены все 5 решений (прод + тесты) на неявные (public) реализации членов интерфейсов и на XML-доки в реализациях интерфейсов. ### Исправлено 1. Неявные реализации → явные (прод, 4 файла): - `src/core/Deal.Infrastructure/Data/TenantContext.cs` — `TenantId`, `HasTenant`, `SchemaName` - `src/core/Deal.Infrastructure/Integrations/Services/LocalTelegramGateway.cs` — `SendCodeAsync`, `SendPasswordAsync`, `BackfillAsync` - `src/core/Deal.Modules.Tenants/Application/Services/DefaultPasswordHasher.cs` — `Hash`, `Verify` - `src/telegram-service/Deal.Telegram/Telegram/WTelegramSessionClient.cs` — `IsAuthorized`, `IsConnected`, `ApiId`, `ApiHash`, `SessionBytes` 2. Удалены XML-доки у классов-реализаций интерфейсов и их членов: 21 файл, 125 док-блоков. Примеры: `AesGcmSecretCipher`, `GrpcMlClient`, `GrpcTelegramClient`, `BudgetedAiClassifier/Tools`, `GrpcAiClassifier/Tools`, `LocalAiTools`, `CbrRateSource`, `AiConnectionChecker`, `LocalFileStorage`, `MinioFileStorage`, `TenantLimitStore`, `DiscoveryStore`, `KanbanStore`, `DiscoverySearchErrorCounter`, `LlmHttpClient` (ai), `CoreIngressClient`, `RandomBackfillPacer`, `ClientFactory` (telegram). 3. Обновлён `docs/spec/Код-стайл-Дейл.md` §11 — формулировка про полный запрет XML-doc в реализациях интерфейсов. ### Исключения (по §11, не менялись) DTO/модели, хелперы, extension-классы, `Card`, EF-конфигурации, тест-проекты и тестовые дубли (`Fake*`, `Recording*`, `TestDoubles`). ### Проверки - Сборка всех 5 решений: 0 предупреждений / 0 ошибок. - Тесты: core 1342, telegram 130, ai 52, ml 38, storage 9 — зелёные. - Дифф относительно `main`: 29 файлов, +35 / −212. ### Вне объёма - Неявные реализации в тестовых дублях (`Fake*`, `Recording*`) оставлены намеренно как исключения §11. - Codemod-скрипты в репозиторий не входят (`scripts/` в `.gitignore`).
Author
Owner

CI по MR #19 — success (прогон #46): сборка всех 5 решений 0/0, тесты core/telegram/ai/ml/storage зелёные, скан уязвимостей и сборка фронта прошли.

CI по MR #19 — success (прогон #46): сборка всех 5 решений 0/0, тесты core/telegram/ai/ml/storage зелёные, скан уязвимостей и сборка фронта прошли.
rust closed this issue 2026-09-13 14:50:45 +03:00
rust moved this to Done in Deal Board on 2026-09-13 14:50:52 +03:00
Sign in to join this conversation.