История изменений MindRoot.ru
Формат: дата · этап · что сделано. Дата — по календарю проекта (2026).
2026-10-26 — LLM-разбор задач, боевой apply, история запусков, T-Bank и Bitrix24 OAuth
- LLM-разбор формулировок (
server/runtime.py::_llm_route): задачи
проходят через сервис chat LLM-плагинов (приоритет: боевые ключи → плаги контура → остальные, гигачат затем yandexgpt). Промпт роутера (MINDROOT_ROUTER_V1) несёт меню команд с описаниями (топ эвристики первым); ответ модели проверяется на допустимость, любая ошибка — тихий откат на эвристику. Ответ задачи несёт engine (LLM-разбор (mr_x) либо «эвристика без LLM»), счётчик llm_routes и событие аудита llm_route. Демо-ротация на стенде: demo_api._llm_reply по маркеру отвечает выбором команды по описаниям; боевой токен поднимает хосты в live_hosts.
- Боевой провижининг (
server/provisioning.py,web/org.html):
endpoints apply/status/rollback для deployment — реальный terraform (init/apply/destroy с журналом apply.log и историей apply-state.json), а при отсутствии бинаря или кредов — честный dry-run с диагнозом чего не хватает; rollback только после боевого apply. В кабинете у карточки контура кнопки «Применить», «Статус apply», «Откат».
- История запусков в кабинете (
/api/orgs/current/runs): агрегация
аудитов контуров организации — задачи, ошибки, LLM-разборы, средняя длительность, оценка стоимости (~2,5 ₽/задачу), лента событий и выгрузка аудита CSV/JSON (BOM для Excel). Секция в web/org.html.
- Плагин T-Bank (Т-Бизнес T-API), 11-й (
plugins/mr_tbank): счета
(/api/v3/bank-accounts), выписки (/api/v1/statement), платёж контрагенту с подтверждением (/api/v1/payment/ruble-transfer/pay), статус платежа. Извлечение банковских реквизитов из формулировки (счёт списания/получателя, БИК, КПП, банк по марке) — в _extract_arguments.
- Bitrix24 OAuth: настройки
BITRIX24_CLIENT_ID/CLIENT_SECRET/OAUTH_URL,
сервис b24_oauth_token (code→token и refresh), демо-эндпоинт oauth.bitrix24.com/oauth/token в демотранспорте.
- Существующие контуры при обновлении получают новые демо-ключи плагинов
(досыпание без перезаписи боевых секретов).
- Проверки:
check_multitenancy79/79,check_plugins
11 плагинов / 80 команд / 16 сервисов / 0 ошибок, demo_scenario — зелёный.
2026-10-08 — Админка платформы и фикс витрины
- Админка
/admin.html(server/admin.py): вход по ключу
MARKETPLACE_ADMIN_KEY (cookie, 12 ч), сводка платформы, организации с тарифами/сотрудниками/контурами/последним входом, пользователи с ролями и историей входов, активность контуров (задачи, команды, записи за сутки), объединённый журнал событий, очередь оплат и история платежей (заготовка биллинга), смена тарифа любой организации.
- Глобальные настройки (
data/admin/settings.json): стартовый тариф
регистраций, закрытие регистрации (403), режим обслуживания (прикладные API → 503, витрина/вход/админка живы) с текстом для клиентов. Поле plan при регистрации больше не используется — иначе можно было бы оформить Enterprise бесплатно.
- Платежи (
data/admin/payments.json): отметка оплаты администратором,
аудит payment_recorded в организации, очистка журнала при удалении организации.
- Фикс витрины: правило
[hidden] { display: none !important }—
авторский display: flex у drawer перебивал атрибут hidden, из-за чего панель плагина была видна при загрузке главной и не закрывалась.
- Автотест расширен разделом «Администрирование платформы» — 79 из 79
проверок (вход/выход админа, обзор, самосогласованность счетов, платежи, настройки без побочных изменений).
- Форма регистрации: выбор тарифа убран (tariff задаётся платформой);
README и docs/INSTALL.md дополнены разделом про админку.
2026-10-08 — Этап 2 завершён: приёмка мультиарендности
- Автотест
scripts/check_multitenancy.py— 79 HTTP-проверок в 8 разделах:
публичность витрины, матрица пяти ролей, изоляция организаций, квоты и апгрейд тарифа, API-ключи, шифрование и ротация ключа, журнал действий, админка платформы. Тестовую организацию скрипт удаляет за собой.
- Сквозной демо-сценарий
scripts/demo_scenario.py— журнал прогона в
docs/DEMO.md: четыре организации, задача агенту, подтверждение операции человеком (наблюдателю 403, оператор подтверждает, токен одноразовый), отказ по правам и политикам, чужой контур 404, выход → 401.
- Удаление организации —
DELETE /api/orgs/currentс подтверждением
названием (confirm): контуры с секретами, ключ шифрования, API-ключи, сессии и учётные записи. Только владелец. Проверено на организации с работающим контуром.
- Маршруты
/login.htmlи/org.html— отдаются без токена (из формы
входа нечем добыть токен), но с Cache-Control: no-store; данные кабинета приходят только через защищённый API, без сессии страница сама уводит на вход.
- Защита
key_path— пустойorg_idдаёт отказ 400 вместо создания
мусорного файла data/accounts/keys/.key.
- Документация: README — раздел «Проверки», строка API для удаления
организации; web/docs/api.html — 12-й эндпоинт и заметка про удаление; docs/STRATEGY.md — итоги приёмки в §2.5 и Этапе 2.
- Убрана мусорная тестовая организация и три синтетических каталога контуров;
суточный лимит записей демо-контура Ромашки поднят 3 → 20.
2026-10-07 — Этап 2: доступ и изоляция
- Cookie-сессии:
mindroot_session(httponly, samesite=lax, TTL 7 дней),
ставится при входе и регистрации; чтение токена — Authorization → x-api-key → cookie. Контекст зрителя в панели /c/<id>/ (шапка «Организация · Роль»).
- API-ключи организации
mrk_*: назначение, роль (кроме владельца),
на сервере только SHA-256, отзыв немедленный.
- Ключ шифрования на организацию: AES-256-GCM, ключ контура =
HKDF-SHA256(org_key, info=dep_id), ротация с перешифровкой секретов всех контуров, права файлов 0600/0700.
- Квоты тарифов: freemium/team/enterprise — контуры, задачи в месяц,
сотрудники, срок хранения, доступные типы контуров; превышение → 402.
- Кабинет организации
web/org.html: сводка, тариф и квоты, контуры,
сотрудники и роли, API-ключи, безопасность и ротация, журнал действий; рендер по правам, ключ показывается один раз.
- Страница входа
web/login.html: вход/регистрация, демо-аккаунты,
тарифы, карточки ролей. Витрина: кнопка «Личный кабинет», подпись организации, раздел «Аккаунт», «Войти»/«Кабинет» в документации.
2026-10-06 — Этап 1: работающий контур и провижининг
- Провижининг:
POST /api/provisioning/plan— ресурсы и смета по
статьям; POST .../deploy — target=local (живой контур) или пакет IaC (Terraform, Kubernetes, Helm, runbook on-premise, чек-лист 152-ФЗ) в режиме dry-run; история и карточки контуров, выдача файлов и .zip.
- Рантайм контура
server/runtime.py: исполнение команд плагинов,
политики (read_only, allowed_hours по МСК, max_writes_per_day, подтверждение записи), очередь подтверждений ap-*, аудит state/audit.jsonl, маскирование ПДн, отчёт /api/report, живучесть после перезапуска.
- Демо-транспорт
server/demo_api.py: детерминированные ответы 10
вендоров (Битрикс24, amoCRM, 1С, СБИС, Фокус, Метрика, Директ, VK Реклама, GigaChat, YandexGPT); появление боевого токена переводит вызов в живую сеть без правки кода плагина.
- Панель агента
/c/<id>/: задача, история, карточки подтверждений с
кнопками, отчёт по счётчикам и политикам.
2026-10-05 — Этап 1: плагины и конструктор
- 10 плагинов, 76 команд, 14 сервисов, автопроверка контракта
scripts/check_plugins.py (0 замечаний): 1С, amoCRM, Битрикс24, СБИС, Контур.Фокус, Яндекс.Метрика, Яндекс.Директ, VK Реклама, GigaChat, YandexGPT.
- Плагин YandexGPT (completion + эмбеддинги, Bearer IAM/Api-Key) и
плагин Яндекс.Директ API v5 (объекты, отчёты, ставки) — по документации провайдеров.
- Конструктор
web/builder.html: drag-and-drop сценария из команд
плагинов, выбор модели (GigaChat/YandexGPT/локальная LLM), инструкция и политики, валидатор (неизвестные команды, запись без подтверждения, ПДн, лимиты), экспорт agent.json, вкладка «Развёртывание».
- Витрина
web/index.html: маркетплейс с поиском и категориями,
карточки плагинов (команды, 152-ФЗ, где используется), план установки, скачивание пакетов, готовые агенты (7), тарифы, заявка разработчика.
2026-10-04 — Этап 1: каркас
- Проект MindRoot (github.com/runvnc/mindroot) адаптирован под mindroot.ru:
витрина на FastAPI + ванильный HTML/CSS/JS без сборщиков и внешних CDN — работает в изолированном контуре без выхода в интернет.
scripts/build_registry.pyсобирает реестр из кода плагинов;
scripts/build_agents.py — каталог агентов из agents/.
- Документация:
web/docs/(быстрый старт, плагины, REST API и SDK,
152-ФЗ, развёртывание), README, docs/STRATEGY.md (архитектура, монетизация, юнит-экономика, roadmap).
- Запуск одной командой:
bash start.sh(сборка реестра + uvicorn :8080).
Как обновлять этот файл
Добавляйте новую секцию сверху в день, когда этап или заметная правка завершены: ## YYYY-MM-DD — короткое название. Внутри — маркированный список того, что изменилось глазами пользователя или администратора, а не список файлов. Полная лента решений — в docs/STRATEGY.md, журнал приёмочного прогона — в docs/DEMO.md.