# Принципы работы Философия, на которой построен этот шаблон. Если вы разработчик — прочитайте это перед тем как писать код. --- ## Глава 1: Правила важнее кода Код можно переписать. Архитектуру можно изменить. Но культура проекта — это то, что остаётся после любой переделки. **Что это значит на практике:** - Прежде чем писать код, узнай правила (`docs/00-rules.md`) - Если не знаешь как сделать — найди похожий пример в проекте и делай так же - Если сомневаешься — **спроси**. Лучше задать 10 вопросов, чем переписывать неделю **Пример из жизни:** В одном проекте разработчик решил "упростить" и не писал docstrings к публичным методам. Через 3 месяца новый разработчик не мог понять что делает половина сервисов. Пришлось переписывать всё с нуля. Правило "docstrings обязательны" появилось после этого. --- ## Глава 2: Слоистая архитектура как образ мысли Проект разделён на слои. Зависимости могут идти **только внутрь**: ``` API → Services → Integrations → Data → Core ``` **Что это значит:** - **API** не знает про БД. Он только принимает запрос и отдаёт ответ. - **Service** не знает про HTTP. Он реализует бизнес-логику. - **Integration** не знает про бизнес-логику. Он только вызывает внешний API. - **Data** не знает про внешний мир. Это модели и запросы к БД. - **Core** — фундамент. Не зависит ни от чего. **Почему так:** - Можно заменить HTTP на gRPC, не трогая сервисы - Можно заменить PostgreSQL на SQLite, не трогая API - Можно тестировать каждый слой изолированно --- ## Глава 3: Агенты — это co-developer, а не опция **Главный урок этого шаблона:** агенты должны жить в проекте с первого коммита. **4 ядерных агента, которые создаются первыми:** | Агент | Что делает | Без него | |-------|-----------|----------| | **DocAgent** | Пишет документацию параллельно с кодом | Документация пишется "потом" → никогда | | **AuditAgent** | Проверяет каждый коммит на правила | Правила есть в файле, но не применяются | | **EvolutionAgent** | Версионирует агентов, управляет развитием | Версии хаотичны, эволюция невозможна | | **SupervisorAgent** | Следит за всеми агентами, их здоровьем | Экосистема агентов не контролируется | **Остальные агенты подключаются по мере необходимости:** - QATesterAgent — когда появились тесты - FixAgent — когда пойман первый баг - BacklogAgent — когда появился техдолг - SecurityAgent — перед production - SpecAgent — перед релизом - RolloutAgent — перед деплоем - ObserverAgent — после запуска - UITestAgent — когда есть UI Каждый агент появляется когда в нём возникает реальная потребность, но ядро — с первого дня. --- ## Глава 4: Документация — это код **Если это не записано — этого не существует.** - **ADR** фиксируют архитектурные решения. Через год никто не вспомнит "почему мы выбрали PostgreSQL". - **CHANGELOG** — это контракт с пользователем. Каждое изменение должно быть задокументировано. - **Decision Log** — лёгкий трекер для каждодневных решений. "Почему мы отложили OAuth". - **Документация пишется параллельно с кодом**, а не после. --- ## Глава 5: Тестирование — не этап, а процесс **Код без тестов — это не код, а предложение.** - Каждый endpoint имеет минимум 1 smoke-тест - Каждый сервис покрыт unit-тестами - Каждый баг превращается в тест (чтобы не повторился) - Покрытие > 80% — обязательно --- ## Глава 6: Саморазвитие Проект должен становиться умнее без участия человека. **Три уровня саморазвития:** 1. **Reactive** — агенты реагируют на события (pre-commit, push) - Audit правил, авто-форматирование, проверка тестов 2. **Proactive** — агенты предлагают улучшения - Анализ кода, предложение рефакторинга, оптимизация БД 3. **Autonomous** — агенты принимают решения - Self-healing, auto-scaling, auto-versioning К концу Stage 3 (cм. `docs/migration-path.md`) проект должен достичь Level 2. --- ## Глава 7: Будущее Шаблон растёт вместе с проектами. Если вы нашли ситуацию, которую шаблон не описывает: 1. Запишите её в `notes/encountered-issues.md` 2. Если есть идея улучшения — добавьте в `notes/improvements.md` с пометкой `[ASK]` 3. Обновите соответствующий `docs/` файл **Шаблон должен стать умнее после каждого проекта.**