Monitor M5 — roadmap платформы

Контур ядра: то, на чём строятся бизнес-модули · Алексей Прескенис · 11.08.2026 · черновик к обсуждению
Цель — карта Ильи: 67 модулей / 12 доменов
Готово: 5 сервисов ядра
~460 тестов
11 исполненных планов (≈3 недели мая)
Стек: .NET 10 · NATS · Postgres · React 19

1 · Что уже готово

Реализовано в мае–июне; каждый слайс: спека → план → агентная имплементация → двойное ревью + Codex
готово

Monitor.Blocks

Библиотека-фундамент: DDD-примитивы, EF Core + Postgres (авто-фильтры тенантов, аудит-штампы), Wolverine + NATS + outbox, identity propagation, Serilog / OTel / health.

готово

Monitor.Gateway

Единая точка входа: YARP, JWT/JWKS-валидация, auto-discovery маршрутов, агрегация Swagger всех сервисов.

готово

Monitor.Accounts

Вход / refresh / logout (RS256, ротация ключей), Провайдеры → Клиенты → Пользователи + admin CRUD (ETag, PATCH, пагинация).

готово

Monitor.SystemLog

Журнал действий («роли и мультиклиентность» из карты): аудит auth и админки, durable-consumer, DLQ + admin API.

готово

Monitor.SharedData

Обмен справочниками между сервисами: push через outbox/NATS + pull API. Сейчас: User, Provider, Customer.

инфраструктура

Dev-окружение

docker compose + Dockerfile'ы всех сервисов + smoke-тест уже в репо. Мультитенантность Provider(=реселлер)→Customer — сквозная, на уровне EF-фильтров.

2 · Гэп до старта модульной разработки

Четыре потока; у каждого — критерий готовности (DoD)
A · главный блокер

Система прав

Permission = Entity:Action, роли в БД Accounts, снимок прав в JWT, декларативный gate .RequirePermission("Tyre:Create") + готовый RequestContext до входа в handler. Сюда же: закрыть открытый /admin/users, мёртвый monitor:role, token lifecycle. Архревью готово (спек 05-31), модель прав — своя, не копия v4.

DoD: модулю достаточно одной строки на endpoint — контекст и права приходят готовыми, всё пишется в аудит.
B · опорный домен

Реестр ТС (Vehicle)

Общая сущность всех транспортных модулей: VIN, гос.номер, марка/тип, привязка к Customer. CRUD + push в SharedData. Пробег в MVP — ручной; телематика позже станет вторым источником тех же полей. Продолжаем осмысление старой попытки m5 (Fleet→Vehicle→Trip→Driver, глоссарий).

DoD: модуль «Шины» ссылается на VehicleId и тянет справочник ТС через SharedData.
C · ai-friendly база

Шаблон модуля + документация

Каркас нового сервиса со всем подключённым (Blocks, БД+миграции, outbox, authz, тесты, Dockerfile, маршрут в Gateway). README бэкенда, карта сервисов, гайд «как создать модуль» + CLAUDE.md-конвенции для чужих агентов.

DoD: от нуля до работающего в dev сервиса, видимого в Swagger и пишущего аудит, — меньше часа.
D · команда

Командная готовность

Репозиторий сейчас существует только на одной машине — запушить на сервер (вопрос: где). CI: build + все тесты на PR (runner с docker: Postgres/NATS). Сиды демо-данных для compose.

DoD: новый разработчик поднимает стек за 15 минут; PR не мержится без зелёных тестов.
E · не блокирует старт — блокирует прод

Операционная готовность (фоном между вехами): DLQ retention, ротация JWKS, миграции отдельным job'ом, полный .slnx, централизованные версии пакетов, секреты.

3 · Вехи

В1 · Права

поток A
Закрыт главный долг, авторизация единообразна

В2 · База модулей

потоки B + C + D
Шаблон, реестр ТС, CI, стенд
🚀 точка старта коллег

В3 · Пилотный модуль

«Шины» или «ТО» — первый модульный разработчик, по шаблону
База проверена реальным кейсом, гайд отполирован

В4 · Телематика

приём 1–2 протоколов, хранение, поток статусов
CORE-домен карты разблокирован. Гипотеза: v4-ретранслятор → m5 = живые данные без железа

Калибровка темпа: вся текущая база (11 планов) сделана агентным процессом в одиночку за ≈3 недели. Потоки A–D — сопоставимый объём.

4 · Модель командной разработки

локально

Полный бэк у каждого

Основная петля: агент меняет код → тесты против реального Postgres/NATS → smoke. Стек лёгкий, compose поднимает всё. Мини-кубер на ноутбуках не нужен — поведение выравнено env-конфигом. При 15+ сервисах — compose-профили.

общий стенд

Демо-стенд из main

Авто-деплой после зелёного CI. Роли: точка приёмки человеком, интеграция «всё живьём», стабильный API для фронта, демо руководству. Сейчас: VM + compose (день работы). Позже: namespace в существующем k8s.

процесс

Trunk-based + PR

Ветка → PR → зелёный CI → ревью → main → стенд. PR — единица приёмки агентной работы: диф + тесты + поведение на стенде, а не вера на слово. Модуль = свой сервис → конфликты минимальны.

ai-first кодовая база

Основной автор кода — агенты; человек ставит задачи и принимает. Что это требует:

Правила в репоCLAUDE.md на монорепо и каждый сервис, шаблоны спек/планов, гайд модуля — агенты всех разработчиков играют по одним правилам
Машинная обратная связьтесты, анализаторы, dotnet format, FSD-линтер фронта — агент видит поломку сам, до человека и до CI
Контракт-firstOpenAPI каждого сервиса → кодоген клиентов; агент не угадывает API соседа
Малые сервисымодуль целиком помещается в контекст агента — выше точность правок
Локальные LLM-докипаттерн уже есть (docs/wolverine) — не полагаемся на устаревшие тренировочные данные
Ревью-цепочкаспек-ревью → код-ревью → независимый Codex — текущая практика, стандарт и для модулей

Цикл: человек пишет спеку → агенты имплементируют → CI + ревью → merge → стенд → приёмка на стенде.

5 · Веб-трек

стек выбран — базис прошлой попытки валиден
Монорепоpnpm workspaces + Turborepo + Vite 7
ЯдроReact 19 + TypeScript 5.9
UI-kitFluentUI v9 — преемственность с v4
СостояниеTanStack Query 5 + Zustand 5 (вместо MobX)
API-слойKubb: кодоген typed-клиента + react-query хуков из OpenAPI Gateway — контракт-first ✓✓
СтруктураFeature-Sliced Design + steiger-линтер — агенты не разводят хаос
КартаMapLibre GL; ⚠ выбрать: react-map-gl или react-leaflet (сейчас оба)
Приложенияapps/web + apps/admin раздельно, i18n (react-intl) с первого дня
идеология интерфейса — поток осмысления, нужен владелец
мониторинг = машинки на карте  →  система управления автопарком

• Главный экран — метрики и сигналы: система сама следит за парком и говорит, куда смотреть (отклонения, перерасход, просроченное ТО, рейтинг водителя).

• Карта — один из экранов, а не центр вселенной.

• Пользователь работает от задач и отклонений, а не от разглядывания отчётов.

• Каждый модуль поставляет свои метрики/сигналы на главный экран — контракт «модуль → дашборд» закладываем в шаблон модуля.

Деливерабл: концепт + прототип главного экрана (руководитель / диспетчер / механик).

6 · Как карта Ильи ложится на вехи

КогдаМодули картыПочему
После В2
без телематики
FMS: ТО по регламентам (ручной пробег), склад/шины/АКБ, заявки и наряды · TMS: путевые листы, задания · CORE: роли и мультиклиентность опираются только на реестр ТС + права + справочники
После В4 CORE: онлайн-мониторинг, треки, геозоны, события · FUEL · VEHICLE (CAN) · SAFETY требуют потока телеметрии
По мере надобности уведомления, движок отчётов, файлы (S3), интеграции/API-ключи общие платформенные сервисы — когда первый модуль в них упрётся
Поздние маркетплейс, white-label/биллинг, вертикали, регуляторика эпики поверх зрелой платформы

7 · Открытые вопросы к обсуждению

  1. Пилотный модуль — кто берёт и какой: «Шины» (проще) или «ТО» (ценнее, референс в v4)?
  2. Репо и CI — code.monitor-soft.ru / GitHub? Runner с docker для интеграционных тестов.
  3. Демо-стенд — подтверждаем этапность (VM+compose сейчас, k8s позже); где VM и registry.
  4. Веб — подтверждаем стек; кто и когда стартует оболочку; владелец UX-концепции.
  5. Права — обсудить модель (описание на этой неделе), роли первой очереди.
  6. Телематика MVP — какие протоколы первыми; гипотеза «v4-ретранслятор → m5».

Приложение · Карта модулей — весь ландшафт (Илья)

67 модулей в 12 доменах; приоритеты — из анализа 32 конкурентов. Полные описания: docs/monitor-modules-map.md
Уровень 0 · ядро, must-have — 12 Уровень 1 · стандарт лидеров — 22 Уровень 2 · дифференциаторы — 14 Фронтир ◇ · мировые практики — 14 Регуляторика РФ — 5

CONNECT · Приём данных

широта протоколов = низкий барьер миграции к нам
Мультипротокольный приём Парк устройств Ретрансляция BLE-датчики OEM-телематика ◇

CORE · Ядро телематики

есть у всех — конкуренция качеством исполнения
Онлайн-мониторинг Треки и поездки Геозоны События и уведомления Отчёты + конструктор Роли и мультиклиентность

FUEL · Контроль топлива

историческое ядро спроса в РФ
ДУТ: заправки и сливы Расход топлива Сверка с топливными картами Проточные расходомеры Гео-антифрод ◇

SAFETY · Водители и безопасность

AI-видеоаналитика — главный дифференциатор 2026
Идентификация водителей Эко-драйвинг и скоринг Детекция ДТП Видеотелематика AI DMS/ADAS Видеодоказательства ◇ Геймификация ◇

VEHICLE · Техника и данные ТС

глубина CAN решает в спецтехнике и агро
CAN-данные Спецтехника и навесное Весовой контроль Температура и рефрижераторы EV-модуль ◇

FMS · Эксплуатация парка

разрыв «телематика ↔ учёт» — незанятая ниша
ТО по регламентам Заявки и наряд-заказы Учёт рабочего времени Склад: запчасти, шины, АКБ Фотоосмотры eDVIR ◇ Предиктивное ТО ◇

TMS · Перевозки и логистика

закрыв контур у себя — забираем весь процесс у 1С
Задания и диспетчеризация Маршруты и план-факт Путевые листы / ЭПЛ Оптимизация маршрутов (VRP) ML-ETA ◇ Холодовая цепь ◇

APPS · Приложения «Монитор»

линейка мобильных приложений под каждую роль
Клиент Монитор Сотрудник Монитор Приложение водителя Сборщик телематических данных

PLATFORM · Платформа и интеграции

API и 1С — гигиена сделок; миграция с Wialon — окно 2026
Открытый API и SDK Коннекторы 1С White-label и биллинг Маркетплейс приложений Миграция с Wialon AI-ассистент ◇ AI-агенты диспетчера ◇

MARKETPLACE · Услуги

поставщики продают из платформы, мы берём комиссию
Витрина поставщиков Кабинет поставщика Сделки и комиссия Контекстные предложения ◇ Страховка UBI ◇ Заказ из наряда ТО ◇

VERTICALS · Отраслевые вертикали

решения «из коробки» выигрывают сделки
Агро Пассажирские перевозки ЖКХ и ТКО Стационарные объекты Персонал и Indoor

COMPLIANCE · Регуляторика РФ

пропуск в тендеры и госзаказ
EGTS / ЭРА-ГЛОНАСС / РНИС Тахографы СКЗИ ЭТрН / ЭПЛ (обяз. с 09.2026) ФГИС УТКО и лес Реестр ПО и 152-ФЗ
Полная версия: docs/ROADMAP.md · Карта модулей: docs/monitor-modules-map.md (+ PDF) · Архревью прав: specs/2026-05-31 · Наследие: _old.monitor.m5 (глоссарий домена, веб-скелет) · Референс функций: monitor.v4 (30+ модулей в проде)