Личный проект · реальный кейс · 2026

Портал учебной группы, который сам собирает расписание, дедлайны и записи занятий

Собственный проект: портал для учебной группы, в которой я учусь сам. Расписание, дедлайны, материалы по предметам, записи занятий и конспекты — в одном месте, сайтом в браузере и приложением внутри Telegram. Содержимое подтягивается автоматически: расписание из файла учебного офиса, дедлайны и объявления из учебной почты и чатов, конспекты из записей занятий. Человек подтверждает только спорное. В группе около 80 человек: аккаунт завели 43, и за восемь суток наблюдения на портал заходили 34.

Клиент
Собственный проект, учебная группа на 80 человек
Формат
Сайт, приложение в Telegram, бот, агенты по расписанию
Языки
Русский
Статус
Работает с мая 2026, группа пользуется каждый день

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

Что портал делает без человека

Расписание никто не переписывает в чат, дедлайны не собирают заново перед сессией, конспект после занятия не просят у группы.

296
занятий в расписании: портал перечитывает файл учебного офиса раз в сутки
181
расшифровка занятий: речь распознаёт арендованный сервер, отдельной оплаты за это нет
264
напоминания о парах и утренние сводки бот отправил сам — тем, кто их включил

спорное портал сам не публикует: в очередь на подтверждение попало 40 кандидатов в дедлайны, человек подтвердил 22 и отклонил 18

HSE Portalв Telegram

Привет, Сергей

вторник, 16 сентября · МСК+2

Просрочено 2

11.09📋Заполнить анкету курса
09.09⚖️Прислать согласие на опрос
Ближайшая пара

📊Статистика

семинар · 15:00–16:20

1 ч 40 м

до начала

Сегодня
15:00📊СтатистикаСеминар
16:40📈МикроэкономикаЛекция

Ближайшие дедлайны

18.09📊Домашняя работа 2
20.09📈Контрольная, первая часть
ГлавнаяКалендарьПредметыНовостиЕщё

01 / Предыстория

Информация о группе жила в пяти местах сразу

Групповые чаты в Telegram, учебная почта, папка с расписанием на Яндекс.Диске и два сайта вуза — пять источников, и ни один не знал про остальные. Расписание в учебном приложении расходилось с файлом учебного офиса, дедлайн, названный в чате один раз, там же и оставался, а чтобы собрать полную картину, нужно было обойти все пять мест и сверить их между собой. Столько времени нет ни у кого: пока обойдёшь все пять мест, часть уже устарела. И разобрать весь этот поток, чтобы понять, что в нём важно, руками тоже некогда.

Поэтому я собрал портал: одно место, куда всё подтягивается автоматически и обновляется без просьб. Отдельная история — записи занятий: преподаватели их теряли или выкладывали на диск с опозданием, и запись переставала быть чем-то, на что можно рассчитывать. Тогда появился бот, который заходит на занятие и пишет его сам. Дальше запись уходит на распознавание речи — локальная модель GigaAM от Сбера на арендованном сервере, без внешних сервисов, — а расшифровки раз в пять часов разбирает Claude и превращает в конспекты.

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

02 / Как информация попадает на портал

Содержимое подтягивается автоматически, человек подтверждает только спорное

У расписания, дедлайнов и записей занятий свой путь на портал. Человек появляется в этом пути один раз — там, где нужно решение.

Расписание

Раз в сутки, целиком

  1. 01

    Excel-файл учебного офиса

    Лежит в публичной папке облачного диска. Учебный офис правит его когда угодно: переносит пары, меняет время, выкладывает новый файл на следующий модуль.

  2. 02

    Скрипт разбирает файл

    Запускается раз в сутки с домашнего компьютера. Открывает книгу Excel, берёт все файлы второго курса, читает обе группы по колонкам, различает лекции потока и семинары по группам.

  3. 03

    35 дней расписания на портале

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

Дедлайны

Раз в сутки, с проверкой человеком

  1. 01

    Учебная почта и учебные чаты

    Агент читает их за последние 48 часов и отдельно ищет по словам вроде «сдать до» без ограничения по времени: о контрольной часто пишут один раз за несколько недель до неё.

  2. 02

    Claude разбирает найденное

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

  3. 03

    Уверен — сразу на портал

    Дедлайн появляется на главной, в календаре, на странице предмета, в задачах и в подписке на календарь телефона. Повторный запуск правит ту же запись, а не заводит вторую.

  4. 04

    Сомневается — отдаёт человеку

    Кандидат уходит в очередь вместе с цитатой источника, причиной сомнения и уверенностью в процентах — в среднем она была 57 из 100. Человек правит поля и публикует или отклоняет. Так прошло 40 записей: 22 опубликованы, 18 отклонены.

Занятия

Каждое занятие, без участия человека

  1. 01

    За 12 минут до пары

    Планировщик на арендованном сервере держит план на сутки вперёд и поминутно сверяется с ним, не дёргая портал. Перед парой он освежает план: ссылку на комнату могли поменять утром.

  2. 02

    Бот заходит в комнату

    Отдельный контейнер на каждое занятие: свой виртуальный экран, своя звуковая карта и настоящий Chrome — у безголового браузера нет звукового выхода. Микрофон молчащий, поэтому в комнату от бота ничего не уходит. Пишет 1080p и ещё 15 минут после звонка.

  3. 03

    GigaAM от Сбера распознаёт речь

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

  4. 04

    Claude пишет конспект

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

  5. 05

    Страница занятия

    Запись с проигрывателем, конспект и расшифровка лежат вместе. Две пары подряд по одному предмету становятся одной записью и одной страницей.

Человек в этой схеме стоит в одном месте — там, где агент не уверен. Всё остальное происходит по расписанию: на домашнем компьютере, на арендованном сервере и на самом портале.

HSE Portalпанель

На подтверждении

Агент нашёл эти дедлайны, но не уверен в них. Пока вы не подтвердите, на портале их нет.

чат курсауверенность 62 %

Вторая часть проекта

Предмет

Статистика

Дата

— не указана —

Время

23:59

Тип

Проект

Почему не уверен

Срок назван словами «на следующей неделе», точной даты в сообщении нет.

«…вторую часть сдаём на следующей неделе, файл пришлю позже»

Подтвердить и опубликоватьОтклонить
учебная почтауверенность 48 %

Пересдача, запись до конца недели

03 / Что видит студент

Вход без пароля, свои пары и свои сроки в своём часовом поясе

Портал открывается двумя способами — сайтом в браузере и приложением внутри Telegram, — и вход в обоих через Telegram. Дальше путь один: главная с ближайшей парой, карточка дедлайна с отметкой «сдал», календарь телефона и напоминания.

  1. 01

    Пароля нет: и на сайте, и в приложении вход через Telegram

    На сайте студент нажимает кнопку, открывается чат с ботом, он жмёт «Старт» — и уже внутри. Ссылка живёт 10 минут и срабатывает один раз: по одной и той же две вкладки не войдут. В приложении внутри Telegram входить не нужно вовсе — кто открыл, мессенджер знает сам. Войти может только тот, кто заранее заведён в списке участников группы, остальным бот отвечает, что доступ закрыт. Пароля у студенческого аккаунта нет — заводить, раздавать и восстанавливать нечего.

  2. 02

    На главной — что просрочено, что можно сдать сейчас и когда ближайшая пара

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

  3. 03

    Время показано в поясе студента, рядом продублировано московское

    Свой пояс человек указывает при первом входе — сдвигом в часах относительно Москвы. Дальше время пары и дедлайна выводится в его поясе, а рядом стоит московское. Это не украшение: из 43 человек с аккаунтами 28 живут не в московском поясе. Пересчитывать часы в уме не нужно.

  4. 04

    В карточке дедлайна собрано всё, что нужно, чтобы его сдать

    Тип задания полным словом, метка «блокирующий», плитки «Открыто с», «Дата», «Время» и «Осталось» — со счётчиком, если срок сегодня или завтра. Ниже описание и блок «Скорее всего на паре» со ссылкой на занятие того же дня: портал находит его сам. Студент отмечает «сдал» и может оставить заметку, которую видит только он. Свой личный срок тоже можно завести — его не увидит никто. За всё время 226 отметок от 19 человек по 71 дедлайну.

  5. 05

    Расписание подписывается в календарь телефона, а бот напоминает о паре

    Расписание и дедлайны подписываются в календарь телефона двумя лентами — дедлайны можно выключить, не теряя расписание. Бот пишет за 5 минут до пары название и ссылку на подключение, а утром присылает день целиком. Напоминания по умолчанию выключены: их включили 15 человек, и бот отправил 264 сообщения.

HSE Portalв Telegram
лекция16.09

Занятие 4. Как читать отчёт о движении денег

📊Статистика

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

Прибыль считают на бумаге, а этот отчёт показывает живые деньги на счёте…

Полный конспект занятия
ГлавнаяКалендарьПредметыНовостиЕщё

04 / Что это даёт

Что больше не нужно делать руками

Расписание обновляется само, и сверять версии не нужно

Скрипт раз в сутки разбирает файл учебного офиса и кладёт занятия в базу портала. Сейчас в расписании 296 занятий на 67 учебных дней, у 252 есть ссылка на подключение. Искать, где лежит свежая версия, и пересылать её в чат не приходится.

Срок, названный в чате один раз, не теряется

Агент перечитывает почту и чаты за двое суток, а по ключевым словам ищет и то, о чём написали однажды несколько недель назад. Найденный срок становится дедлайном и виден на главной, в календаре, на странице предмета, в задачах и в подписке на календарь. Сейчас их 82, и собирать список заново перед сессией не нужно.

Спорное не уходит в общий список само

Если агент в чём-то не уверен, дедлайн идёт не на страницы портала, а в очередь. В карточке видно, откуда он взят, цитату источника, причину сомнения и уверенность в процентах; правит и публикует человек. Через очередь прошло 40 кандидатов: 22 подтверждены, 18 отклонены — и эти 18 на портал не попали.

Занятие записывается само, по расписанию

За двенадцать минут до пары сервер поднимает запись: бот заходит на площадку видеовстреч как участник и пишет экран и звук. Сдвоенная пара остаётся одной записью. К 70 занятиям привязана 81 запись, и просить у кого-то запись и код доступа больше не нужно.

Конспект появляется независимо от того, вёл ли его кто-то

Расшифровка занятия подтягивается на портал сама, а раз в пять часов второй агент берёт занятия без конспекта и пишет краткое содержание, разбор простыми словами и полный текст. Так заполнены все 70 занятий — 830 689 знаков, у каждого есть расшифровка и ссылка на запись.

Списки собираются под каждого, а личное видит только автор

Занятия и сроки отбираются по группе, выбранному майнору и предметам, от которых человек отписался: так сделали 27 человек, майнор выбрали 11. Личный дедлайн не открывается даже администратору. Одни и те же правила отбора работают на сайте, в подписке на календарь и в рассылке бота, поэтому списки нигде не расходятся.

05 / Надёжность

Система работает, когда за ней никто не смотрит

Портал, агенты и сервер записи работают по расписанию, когда за ними никто не следит. Отсюда три правила.

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

Служебные будильники на сервере держат план на сутки вперёд и поминутно считают по нему. Раньше они дёргали портал каждую минуту, и база не засыпала неделями, сжигая оплаченные часы. Теперь план обновляется раз в четыре часа, и обе службы делают это в одну минуту — чтобы разбудить базу один раз, а не дважды.

Запись без звука на распознавание не идёт вовсе. Зависший распознаватель сторож снимает через 15 минут и второй раз за него не берётся. Одновременно идёт не больше трёх записей: сервер уже уходил в отказ по памяти, и тогда вместо занятия сорок минут писалась страница ошибки.

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

06 / Дизайн

Дерево из четырёх веток: данные сходятся там, где их ищут

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

Вход через Telegram

Сайт в браузере или приложение внутри мессенджера — дальше всё одинаково

Главная

Что горит прямо сейчас

  • Просрочено

    Красной рамкой, с отметкой «сдал»

  • Можно сдать прямо сейчас

    Зелёной рамкой

  • Ближайшая пара

    Со счётчиком до начала

  • Сегодня и завтра

    Две колонки занятий

  • Ближайшие дедлайны и новости

Календарь → День

Здесь сходится всё, что происходит в один день

  • Неделя или месяц

    На телефоне — список дней карточками

  • Пары этого дня

    Плитками, цветом предмета

  • Дедлайны этого дня

    Строкой внизу ячейки

  • Страница пары

    Тема, преподаватель, ссылка на подключение, время в своём поясе

Предметы → Предмет → Занятие

Здесь сходится всё, что есть по предмету

  • Заметка с материалами

    Слева, вкладками, если их несколько

  • Ближайшие пары и следующий дедлайн

  • Преподаватели, ведомость, ссылки

    Карточками справа

  • Занятие

    Запись, «кратко за минуту», разбор простыми словами, полный конспект

  • Расшифровка

    Под раскрытием, с кнопками «Скопировать» и «Скачать»

Мои задачи и профиль

То, что касается только меня

  • Предстоящие, прошедшие, сданные

    С полосой прогресса по наступившим

  • Свой дедлайн

    Виден только автору

  • Группа, часовой пояс, майнор, выборочные предметы

  • Подписка на календарь телефона и напоминания в боте

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

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

Длинное прячется под раскрытие: прошедшие дедлайны, полный конспект, расшифровка. Экран не давит, но ничего не потеряно.

Тем две. Тёмная тёплая, почти чёрно-коричневая; выбор запоминается и применяется до того, как страница нарисуется, — светлая не вспыхивает перед тёмной.

07 / Объём

Что входит в проект

Портал

  • Главная: просроченное, то, что можно сдать прямо сейчас, ближайшая пара со счётчиком, занятия на сегодня и завтра, дедлайны и новости
  • Календарь: неделя и месяц на широком экране, список дней на телефоне; выбранный вид запоминается
  • Страница предмета: заметки, ближайшие пары, следующий дедлайн, преподаватели и ссылки
  • Страница занятия: запись с проигрывателем, краткое содержание, разбор простыми словами, полный конспект и расшифровка с кнопками «Скопировать» и «Скачать»
  • Карточка дедлайна: тип, срок, счётчик «Осталось», отметка «сдал» и заметка, которую видит только автор
  • «Мои задачи»: предстоящие, прошедшие неотмеченные и история сданных
  • Свой дедлайн: студент заводит личный срок, и его не видит больше никто
  • Первый вход в три шага: группа, часовой пояс и выборочные предметы
  • Время в часовом поясе студента, рядом продублировано московское
  • Подписка на календарь телефона: две ленты, расписание и дедлайны, чтобы вторую можно было выключить
  • Вход через мессенджер по списку участников: ни регистрации, ни паролей
  • Внутри мессенджера портал открывается как приложение

Наполнение без человека

  • Раз в сутки агент читает учебную почту и учебные чаты за двое суток, а по ключевым словам находит и то, о чём написали однажды несколько недель назад
  • Найденный дедлайн он дополняет деталями: что сдать, куда сдавать, до какого часа, какие материалы разрешены
  • Дедлайн с тем же предметом, датой и смыслом заголовка обновляется, а не заводится вторым
  • Спорное не публикуется, а уходит в очередь: человек правит текст и нажимает «Подтвердить и опубликовать»
  • Тот же агент обновляет расписание, новости и полезные ссылки
  • Отдельный агент ведёт страницу предмета по выбору: заметки, ссылки и сроки
  • Раз в пять часов второй агент берёт занятия без конспекта и пишет заголовок, краткое содержание, разбор простыми словами и полный конспект
  • За 12 минут до пары сервер поднимает бота: тот заходит на площадку видеовстреч, пишет занятие и ещё 15 минут после звонка
  • Сдвоенная пара становится одной записью и одним конспектом: перерыв до 45 минут считается переменой
  • Запись без звука на расшифровку не идёт, чтобы пустой конспект не выглядел готовым
  • Речь распознаётся на арендованном сервере, без видеокарты
  • Бот пишет за 5 минут до пары название, время и ссылку, а в 10:00 по Москве — расписание на день; по умолчанию напоминания выключены

Основа

  • Next.js на облачной платформе развёртывания
  • Управляемый Postgres, 22 таблицы; расшифровки лежат отдельной базой на арендованном сервере
  • Арендованный сервер: запись занятий и распознавание речи локальной моделью GigaAM от Сбера, без внешних сервисов
  • Агенты на Claude по расписанию: сбор дедлайнов раз в сутки, конспекты раз в пять часов
  • 32 926 строк кода, 273 коммита, автор один

Нужна автоматизация, которая сводит данные в одно место?

Этот портал я собрал для своей учебной группы, но устроен он так же, как то, что мы делаем для компаний. Данные приходят кусками в переписке: заявки, заказы, документы, сроки по проектам. Агент по расписанию читает почту и рабочие чаты, сверяется с тем, что уже заведено, и правит запись вместо того, чтобы плодить дубли. Спорное он кладёт не в базу, а в очередь: человек видит, откуда взята запись и почему агент засомневался, правит поля и подтверждает одним нажатием. Где проходит граница между «публикуем сразу» и «показываем человеку», решаем вместе с вами. Первый разговор бесплатный: разберём, откуда у вас приходят данные и что из этого имеет смысл собирать автоматически.