Наш продукт

Панелька

Весь учебный процесс в одном окне — от зачисления до защиты проекта

«Панелька» — единое окно учебного процесса: люди и группы, занятия с журналом, домашние задания, проекты, недельные отчёты и аналитика. Занятия и встречи идут внутри системы — с видеокомнатой, записью и AI-конспектом. Продукт работает в проде в IT-академии Lad и готов к внедрению в других компаниях.

июля 2026 — октября 2026 · 4 мес · В эксплуатации
Быстрая заявка Ответим в течение 24 ч. Достаточно контакта и пары слов о задаче.
Запросить лицензию
Достаточно контакта и пары слов о задаче.

Лицензия на продукт «Панелька»

Отвечаем в рабочее время. Заявка попадает к команде, а не в общий ящик.

61 Экранов в панели по репозиторию: шесть кабинетов, 69 переиспользуемых компонентов
422 Эндпоинтов API по репозиторию: единый API для всех кабинетов
1 489 Тестов по репозиторию: 1 266 на бэкенде и 223 на фронтенде

Задача

Контекст

Учебный процесс разложен по инструментам, которые не знают друг о друге: расписание и группы — в таблице, посещаемость — во второй, домашние задания — в личных сообщениях, отчёты стажёров — в переписке, проекты — в отдельном трекере, созвоны — в стороннем сервисе.

В такой схеме нет единой картины: любой вопрос руководителя превращается в ручную выборку, а история уходит вместе с перепиской. Данные вроде бы есть, но собрать из них ответ нельзя.

Что именно не работало:

  • состав группы не связан с занятиями: группа в таблице живёт отдельно от того, кто и когда у неё вёл;
  • «не отмечено» неотличимо от «не пришёл», процент показывается без знаменателя;
  • что прислали по заданию и что ответили, не сохраняется нигде;
  • долги стажёров считаются вручную и задним числом;
  • знания уходят с человеком: уволился преподаватель — работы остались непроверенными.

Чего ждали от продукта

Ожидания сформулировали до начала работы:

  • один инструмент на весь цикл — от зачисления до защиты проекта;
  • кабинет под каждую роль, а не один «админ-доступ»;
  • занятия и встречи внутри системы: с видеокомнатой, записью и конспектом;
  • домашние задания как часть процесса, а не в мессенджере;
  • цифры со знаменателем и честной пометкой «мало данных».
Инфо
Ключевое условие: инструмент должен был не добавить ещё одно окно к существующим, а заменить их — иначе процесс продолжил бы жить в переписке.

Решение

Одно окно вместо шести инструментов

Спроектировали модель предметной области, в которой всё связано: занятие знает группу, задание — занятие, отчёт — свою неделю и версию формы, проект — свою команду. Сущности не дублируют друг друга: качество участия считается из ролей, связь «наставник — стажёр» выводится из направления. Поэтому смена наставника не рвёт состав стажёров, а смена роли не выбрасывает человека из направления.

Шесть кабинетов под семь ролей

Кабинеты собраны под роль, а не под «уровень доступа»:

  • администратор, 20 экранов: реестры людей, слушателей и стажёров, направления с составом по ролям, наборы, группы, проекты, занятия и журнал, две аналитики, журнал аудита, раздел AI, импорт из таблицы и выгрузка в Excel;
  • менеджер, 4 экрана: «требуют внимания», люди, слушатели, заметки о человеке — удалений, аналитики и проектов у него нет по устройству, а не по настройке;
  • преподаватель, 10 экранов: свои группы, занятия с материалами и записями, журнал-матрица «занятие × студенты» с сохранением одной транзакцией, домашние задания с проверкой и перепиской, аналитика по шести срезам, публичное расписание группы по ссылке-токену;
  • наставник, 11 экранов: стажёры, встречи общие и точечные вместе с повторяющимися сериями, конструктор формы отчёта с живым предпросмотром, доска недели, лента отчётов с поиском по тексту ответов;
  • стажёр и руководитель проекта, 6 экранов: форма недели, черновик, отправка, история с ответами по той версии формы, что была, разбор от наставника, карточка проекта;
  • слушатель, 5 экранов: группа и преподаватель, занятия, посещаемость со сводкой, домашние задания со сдачей и перепиской, свои показатели без сравнения с сокурсниками.

Общие экраны переиспользуются между кабинетами: карточка группы, журнал занятия, карточка человека, лента комментариев, команда проекта, доска недели. Переключение кабинетов — в шапке, без повторного входа.

Права как модель, а не набор галочек

Семь ролей с рангами: править можно только тех, кто ниже по рангу. В браузер уезжают возможности, а не роль, поэтому запрет выражается отсутствием кода, а не проверкой в каждом обработчике. Новый кабинет добавляется как часть модели.

Видео и AI внутри занятия

Занятия и встречи проходят в самой панели:

  • видеокомната: камера, микрофон, демонстрация экрана, сетка участников, поднятая рука;
  • модерация с уровнями прав: отключить чужую дорожку и выгнать участника — с подтверждением;
  • запись в хранилище: общая видеозапись для просмотра и аудиодорожка для распознавания;
  • посещаемость собирается из событий комнаты, но ручная отметка преподавателя важнее;
  • повторяющиеся серии по расписанию, каждая встреча переносится и отменяется отдельно;
  • AI-конвейер: нарезка длинных записей, распознавание, разметка спикеров по таймлайну активности, конспект занятия с содержанием, цитатами и контрольными вопросами — конспект публикуется в материалы занятия;
  • расход считается по фактам: токены, секунды аудио, модель — и пересчитывается по прошедшим встречам при смене тарифа.

Если видеосервер недоступен, журнал и материалы продолжают работать — недоступна только кнопка «подключиться».

Аналитика на честных знаменателях

Собрали 13 срезов: посещаемость, активность и задания по группам, студентам и преподавателям; отчёты по неделям, стажёрам, наставникам и направлениям; встречи по стажёрам, наставникам и неделям. Знаменатель всегда рядом с процентом — «75 %» без «из скольких» не показывается. «Не отмечено» — отдельная цифра, а не прогул; отпуск освобождает от долга, будущее не портит статистику. Те же правила счёта работают на экране и в выгрузке CSV.

Отчёты, реестры и материалы

Работа с людьми, отчётами и файлами:

  • конструктор формы недельного отчёта из 11 типов полей; версии формы неизменяемы, поэтому старые отчёты читаются в том виде, в каком их заполняли;
  • доска недели: подопечные строками, состояние колонкой, сверху «не сдали: 3» — клик фильтрует;
  • три реестра — пользователи, слушатели, стажёры — с одной карточкой человека на все и восемью фильтрами, включая «без группы» и «без направления»;
  • статус участия и доступ — разные вещи: «что человек делает в программе» и «открыт ли вход»;
  • импорт из таблицы в два шага: сначала предпросмотр — что создастся, что пропустится, где ошибки, — потом запись; существующее не перезаписывается;
  • материалы живут в хранилище без публичных ссылок: файл кладётся подписанным запросом, ссылка кэшируется, поэтому вся группа пользуется одним адресом;
  • девять образов собирает CI, миграции выполняются при старте сервиса, откат — по тегу образа.

Что делали мы

Продукт собственный: модель, бэкенд, интерфейс и контур эксплуатации собраны внутри студии, без соисполнителей и субподрядчиков.

Наша работа целиком:

  • модель предметной области и общее ядро домена;
  • семь сервисов на FastAPI, у каждого своя база; права проверяются на входе, инварианты — в домене;
  • шесть кабинетов и 61 экран, включая переиспользуемые общие экраны;
  • видео и запись: видеосервер, вебхуки, планировщик серий, модерация, восстановление записей, застрявших в промежуточном состоянии;
  • AI-обработка: нарезка, распознавание, разметка спикеров, сборка конспекта, учёт расхода;
  • аналитика и работа с файлами: одинаковые правила счёта на всех экранах и в выгрузке;
  • интерфейс и доступность: одна непрерывная поверхность, светлая и тёмная темы без вспышки, фильтры в адресной строке, тап-таргеты от 44 пикселей, диалоги с фокусом и подписями для скринридера;
  • серверный рендеринг с настоящей авторизацией и разделённым кэшем;
  • контур развёртывания, тесты, документация и регламенты эксплуатации.

Внешние компоненты — видеосервер LiveKit, хранилище S3/MinIO и OpenAI-совместимый провайдер распознавания и языковой модели — подключены как сменные адаптеры: провайдера AI можно сменить настройками, не трогая домен.

Результат

Продукт работает в проде в IT-академии Lad и готов к внедрению в других компаниях: контур поднимается целиком одним compose-файлом, откат — по тегу образа. Учебный цикл закрыт в одном месте — от зачисления до защиты проекта.

Что получилось:

  • единый контур вместо шести инструментов: все кабинеты живут в одной оболочке и переключаются без повторного входа;
  • кабинет под каждую роль вместо одного «админ-доступа», права разграничены по умолчанию;
  • видео и AI стали частью занятия: посещаемость собирается из событий комнаты и уступает ручной отметке, конспект занятия становится его материалом;
  • цифрам можно верить: одинаковые знаменатели на всех экранах и в выгрузке, «не отмечено» отделено от прогула;
  • история не переписывается: версии формы отчёта неизменяемы, сообщения не редактируются, сдачу нельзя закрыть задним числом;
  • продукт переносится на нового заказчика без переделки домена: внешние системы подключаются адаптерами, а провайдер AI меняется настройками;
  • главный риск внедрения снят — систему можно развивать: доменные правила, права и аналитические знаменатели закреплены тестами, каждая предметная область описана в документации.
Инфо
Что дальше и что за рамками: таск-трекер и репозитории проектов, чат и Telegram, повышение слушателя до стажёра. Цифры академии мы не показываем: они принадлежат площадке применения, а не продукту.

Выводы

Права оказались моделью, а не набором галочек. Ранги ролей и возможности вместо роли в браузере дали добавлять кабинет как часть модели, а не как ещё одну проверку в каждом обработчике; запрет выражается отсутствием кода, а не условием.

Аналитика со знаменателем дороже в разработке, чем просто процент: нужно определить, какие занятия и недели человек обязан был отработать. Мы выбрали дорогой вариант сознательно — именно поэтому цифрам начинают верить, а «не отмечено» не превращается в прогул.

Продуктовые принципы оказались важнее отдельных функций: сдачу нельзя закрыть ни по сроку, ни после курса, ни вручную; ручное слово важнее автоматики; рейтингов нет — стажёр видит свои цифры, но не чужие; неполная картина выглядит неполной и говорит об этом прямо. Эти решения дороже, но именно они делают инструмент рабочим, а не отчётным.

Отдельный вывод — про порядок работ: сначала модель домена и правила, потом экраны. Права, знаменатели и статусы, заложенные в модель, не приходится повторять в каждом обработчике, а кабинет собирается поверх уже готовых правил; обратный порядок стоил бы переписывания.

Лицензия и внедрение

Режим
Возможна лицензия
Состояние продукта
В продакшене

Лицензия на инсталляцию: разворачиваем продукт на вашей инфраструктуре, исходный код и обновления — по договору.

Условия лицензирования и внедрения обсуждаются индивидуально. Информация на странице не является офертой.

Технические решения

Семь сервисов на FastAPI: у каждого своя база, сервисы ссылаются друг на друга только идентификаторами, имена и связи подставляет BFFПрава как модель: ранги ролей и возможности в браузере вместо проверок в обработчикахВидеокомната внутри занятия: запись, модерация с уровнями прав и посещаемость из событий комнатыAI-конвейер для длинных записей: нарезка, разметка спикеров по таймлайну, конспект как материал занятия и учёт расхода по фактамАналитика с честными знаменателями: одинаковые правила счёта на экранах и в выгрузке

Лицензия, внедрение или похожий продукт

Продукт можно лицензировать и развернуть у вас, внедрить под ваши процессы или разработать похожее решение с нуля. Опишите задачу — вернёмся с вариантами и сроками.