From d0c604bc661505fbc379da18c9b1490351280a81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D1=80=D0=B8=D0=BC?= Date: Thu, 4 Jun 2026 17:37:16 +0300 Subject: [PATCH] =?UTF-8?q?docs:=20Product=20Vision=20=D0=BF=D0=BB=D0=B0?= =?UTF-8?q?=D1=82=D1=84=D0=BE=D1=80=D0=BC=D1=8B=20(MD=20+=20PPTX,=208=20?= =?UTF-8?q?=D1=81=D0=BB=D0=B0=D0=B9=D0=B4=D0=BE=D0=B2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/PRODUCT_VISION.md | 132 +++++++++++++++++++++++++++++++++++++++ docs/PRODUCT_VISION.pptx | Bin 0 -> 42744 bytes 2 files changed, 132 insertions(+) create mode 100644 docs/PRODUCT_VISION.md create mode 100644 docs/PRODUCT_VISION.pptx diff --git a/docs/PRODUCT_VISION.md b/docs/PRODUCT_VISION.md new file mode 100644 index 0000000..c14233a --- /dev/null +++ b/docs/PRODUCT_VISION.md @@ -0,0 +1,132 @@ +# Product Vision — Автономная фабрика разработки (Orchestrator) + +> Мультиагентная платформа, которая превращает идею или баг в задеплоенный на прод результат — автономно, надёжно и дёшево. + +**Версия:** 1.0 · **Дата:** 2026-06-04 · **Статус:** концепция развития + +--- + +## 1. Зачем это (бизнес-взгляд) + +### Проблема +Классическая разработка — это люди-бутылочное-горлышко на каждом шаге: аналитик, архитектор, разработчик, ревьюер, тестировщик, деплой-инженер. Каждая передача задачи между ними — потеря времени, контекста и денег. Мелкая фича или баг едут днями. + +### Решение +**Orchestrator** — это конвейер из ИИ-агентов, который проводит задачу через все стадии разработки сам: от бизнес-постановки до релиза на прод. Человек ставит задачу и принимает результат. Всё между — автономно. + +### Ценность +- ⚡ **Скорость:** фича проходит полный цикл (анализ → архитектура → код → ревью → тесты → деплой) за ~35 минут без ручных вмешательств. +- 💰 **Стоимость:** работа агентов в разы дешевле команды; адаптивный выбор моделей экономит на простых задачах. +- 🎯 **Автономность:** 0 ручных пинков в штатном прогоне. Человек — постановщик и приёмщик, а не оператор. +- 🛡️ **Надёжность:** многоуровневые гейты качества не пускают недоделку на прод. +- 🔁 **Масштаб:** одна платформа ведёт несколько проектов; саму платформу можно тиражировать на новые хосты. + +--- + +## 2. Как это работает (обзор) + +### Конвейер +``` +created → analysis → architecture → development → review → testing → deploy → done +``` +На каждом переходе стоит **quality gate** — автоматическая проверка, которая не пускает задачу дальше, пока стадия не выполнена честно: + +| Переход | Гейт | Что проверяет | +|---|---|---| +| analysis → architecture | check_analysis_approved | BRD/TRZ/AC готовы + апрув человека | +| architecture → development | check_architecture_done | Архитектура/ADR зафиксированы | +| development → review | check_ci_green | CI зелёный (тесты проходят) | +| review → testing | check_reviewer_verdict | Машинный вердикт ревьюера: APPROVED | +| testing → deploy | check_tests_passed | Машинный вердикт тестера (не подделать) | +| deploy → done | check_deploy_status | Деплой реально успешен, лог в origin/main | + +### Агенты +- **Analyst** — собирает бизнес-требования, пишет BRD/TRZ/критерии приёмки. +- **Architect** — проектирует решение, фиксирует ADR. +- **Developer** — пишет код в изолированном git-worktree. +- **Reviewer** — ревьюит, выносит машинный вердикт. +- **Tester** — прогоняет тесты, фиксирует результат в отчёте. +- **Deployer** — мержит, тегирует, деплоит на прод, пишет deploy-log. + +### Объекты +- **Project** — проект в реестре (Plane project ↔ git-репозиторий ↔ префикс задач). +- **Work-Item** — задача, проходящая конвейер; на каждой стадии накапливает артефакты (00-business-request … 14-deploy-log). +- **Job** — единица работы в очереди (atomic claim, ретраи, restart-safe). + +### Интеграции +- **Plane** — управление задачами, статусы как триггеры конвейера, webhooks. +- **Gitea** — репозитории, PR, защита main (pre-receive hook). +- **Telegram** — живой трекер прогресса, апрувы, уведомления. +- **LLM** — модели агентов (сейчас Claude, в планах мультипровайдерность). + +--- + +## 3. Что уже сделано (фундамент) + +✅ **Автономный конвейер** — подтверждён живым прогоном: задача от issue до Done без ручных вмешательств (~35 мин). +✅ **Очередь задач** — atomic claim, max_concurrency, ретраи, restart-safe. +✅ **Изоляция через git-worktree** — каждая задача в своём дереве, без конфликтов в shared-репо. +✅ **Машинные гейты качества** — вердикты читаются из структурированных артефактов, а не угадываются по тексту. +✅ **Multi-repo** — платформа ведёт несколько проектов (enduro-trails, сам orchestrator). +✅ **Идемпотентность webhooks** — дедуп по delivery-id, защита от дублей. +✅ **Наблюдаемость** — учёт токенов и стоимости каждой задачи. +✅ **Живой Telegram-трекер** — прогресс редактируется в одном сообщении, без спама. + +--- + +## 4. Куда движемся (дорожная карта) + +Развитие сгруппировано в 5 стратегических направлений. + +### 🛡️ Надёжность и безопасность +- **Post-deploy мониторинг + авто-rollback** — следить за продом после релиза, откатывать при деградации. +- **Security-гейт** — secret-scanning + аудит зависимостей перед мержем. +- **Бюджетный circuit-breaker** — хард-лимит стоимости на задачу, защита от «убегающих» расходов. +- **Опциональная human-приёмка** — финальный взгляд человека для критичных фич. + +### 💰 Экономика и интеллект +- **Мультипровайдерность LLM** — Claude, OpenRouter, другие провайдеры на выбор. +- **Оценка задачи** — прогноз стоимости/времени до старта. +- **Адаптивный выбор модели** — по сложности: тривиальное на дешёвой, сложное на сильной. +- **Багфикс-трек** — упрощённый дешёвый путь для багов (без потери качества). + +### 🏗️ Платформа и масштаб +- **Self-hosting** — оркестратор пилит сам себя через собственный конвейер. +- **Саморазвитие** — петля уроков: ловить отклонения → фиксировать → предлагать улучшения. +- **Онбординг проектов** — turnkey-заведение нового проекта в систему. +- **Тиражирование** — развернуть платформу на новой инфраструктуре под ключ. + +### 💬 Взаимодействие с человеком +- **UX/UI дизайнер** — макеты интерфейсов на этапе аналитики. +- **Интерактивный аналитик** — живой диалог для уточнения требований и обсуждения макетов. +- **Единые коммент-артефакты** — все агенты прикладывают результаты с кликабельными ссылками. +- **Прямые ссылки в Telegram** — апрув в один клик, без блужданий. + +### 🧩 Расширение возможностей +- **Тяжёлые расчёты данных** — опциональная стадия для миграций/обработки больших данных. +- **Android-разработка** — мобильный стек через тот же конвейер. +- **Декомпозиция эпиков** — большая фича → подзадачи → сборка. +- **Управление зависимостями** — задача B ждёт задачу A. +- **Code coverage gate** — защита покрытия тестами от деградации. +- **База знаний проекта** — персистентный контекст для агентов. + +--- + +## 5. Принципы (что для нас неизменно) + +1. **Автономность по умолчанию, человек — на ключевых развилках.** Машина делает, человек ставит и принимает. +2. **Качество не приносится в жертву скорости/цене.** Удешевляем аналитику — гейты качества остаются. Урок дорого выученный: срезанная проверка = недоделка на проде. +3. **Машинные вердикты, а не угадывание.** Гейты читают структурированные поля, а не ищут слова в тексте. +4. **Самоизменение — только через PR + ревью + апрув.** Агент, меняющий агентов, всегда под контролем человека. +5. **Документация — сразу, не потом.** Изменил функционал → обновил доки. +6. **Прод — источник правды.** «Деплой прошёл» ≠ «работает». Проверяем реальный результат. + +--- + +## 6. Видение в одну фразу + +> **Самодостаточная фабрика разработки, которая размножается, учится на ошибках, оценивает себя, бережёт бюджет и не ломает прод — превращая намерение человека в работающий продукт почти без его участия.** + +--- + +*Документ поддерживается в репозитории orchestrator. Источник дорожной карты — задачи проекта ORCH в Plane (ORCH-7…ORCH-28).* diff --git a/docs/PRODUCT_VISION.pptx b/docs/PRODUCT_VISION.pptx new file mode 100644 index 0000000000000000000000000000000000000000..d21da982d03d2ed73ea633197a06af7bf244667b GIT binary patch literal 42744 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 bxHgpsPfH3{!3B_}?S+r4FwS~--2CYuwd#xD literal 0 HcmV?d00001