Page:
Спека 2026 09 11 структура проектов design
Pages
API карта
Home
Архитектура 05 deal architecture design
Архитектура 09 unified card
Архитектура 10 operator analytics contract
Архитектура 10 unified api contract
Бэклог
Инструкция пользователя
Код стайл аудит 2026 09 11
Код стайл
План 2026 09 04 channel discovery
План 2026 09 11 codestyle остатки
План roadmap
План scaffold
План stage1 tenancy
План stage10 operator analytics
План stage11 i18n
План stage12 observability hardening
План stage2 settings
План stage3 kanban
План stage4 pipeline
План stage5 projects
План stage6 services
План stage7 saas
План stage9 unified card
Ревью 2026 09 08 code quality review
Ревью 2026 09 10 docs audit
Ревью 2026 09 10 tz compliance audit
Ревью 2026 09 11 docs final sweep
Спека 2026 09 04 channel discovery design
Спека 2026 09 11 source attachments вопросы
Спека 2026 09 11 source contract design
Спека 2026 09 11 структура проектов design
Статус разработки
ТЗ
Техническая документация
Clone
1
Спека 2026 09 11 структура проектов design
stepan edited this page 2026-09-13 00:17:00 +03:00
Перенесено из репозитория (
docs/superpowers/specs/2026-09-11-структура-проектов-design.md). Актуальная версия — здесь, в вики.
Дизайн: разбиение проектов на логические папки (namespace = папка)
Дата: 2026-09-11. Статус: согласовано владельцем (решения 1–5).
1. Цель
Упорядочить код по назначению: вместо «свалки» файлов разных видов в одной папке с единым
namespace — подпапки по назначению, при этом namespace соответствует пути папки.
2. Таксономия папок (по назначению)
| Папка | Что кладём |
|---|---|
Abstractions/ |
интерфейсы I*.cs |
Services/ |
прикладная логика: *Service, *WorkerService.*, *Guard, *Pacer, *Evaluator, *Counter, *Detector, *Normalizer, *Matcher, *Composer, *Cleaner, *Classifier, *Mapper, *Builder, *Writer, *Recomputer, *Suggester, *Filler, *Generator, *Hasher и аналогичные исполнители |
Models/ |
доменные типы: сущности, value-объекты, enum, статусы/виды, константные реестры (*Statuses, *Kinds, *Prefixes, *Keys, *Events, *Periods, *Sources, *Field, *Defaults) |
Dtos/ |
транспортные типы: *Dto, *Request, *Response, *Patch |
Extensions/ |
*Extensions |
Options/ |
*Options |
Exceptions/ |
*Exception |
Registrars/ |
*ModuleRegistrar |
Существующие feature-папки (ColumnRules, Parse, существующие Models) сохраняются.
3. Правила
namespaceстрого соответствует пути папки.- Имена типов и публичные контракты не меняются — только расположение и
namespace. - Один тип = один файл (уже соблюдается).
- Частичные классы (
Foo.cs,Foo.Part.cs) переносятся вместе. - Тестовые проекты группируются по областям:
Modules/<X>,Api,Infrastructureи т.п.,namespace=Deal.Tests.Unit.<Область>.
4. Механика переноса (на проект)
- Классифицировать файлы по таблице §2.
- Перенести файлы в подпапки и заменить
namespace. - Миграция
using: в файлах-потребителях заменить несуществующий старыйusing <OldNs>;наusingвсех новых подпространств (пере-добавление безопасно; при коллизии имён — ручное разрешение). Файлы внутри проекта-источника получаютusingсоседних подпространств. dotnet build→ исправить остатки (полные имена,cref),dotnet test.- Отдельный коммит (русский) после каждого проекта.
5. Порядок
Пилот — Deal.Modules.Cards (чистый домен). Далее: остальные Deal.Modules.*, затем
Deal.Infrastructure, Deal.Api, Deal.Contracts/Deal.SharedKernel, сервисы telegram/ai/ml,
затем тестовые проекты. После каждого шага — сборка + тесты + коммит.
6. Риски
- Коллизия простых имён при пере-добавлении
using→ разрешается вручную по ошибкам сборки. - Не забыть
cref/полные имена в XML-док иnameof— выявляются сборкой.