Образование

Образовательная платформа

Кабинеты для преподавателя, ученика и родителя: уроки, домашние работы, файлы и уведомления.

Экран образовательной платформы с уроками и заданиями.

Задача

Student Platform — многокомпонентная образовательная экосистема для организации учебного процесса, домашних заданий, проверки работ и коммуникации преподавателя с учениками и их родителями.

В платформу входят: оркестрирующее ядро с личными кабинетами, изолированный микросервис Telegram-уведомлений, агентский интерфейс MCP (Model Context Protocol), интерактивная браузерная Python-среда ByteLab и сервис олимпиадного тестирования задач на C++.

Что сделано

Разработаны раздельные личные кабинеты для учеников, родителей и преподавателей, модули выдачи и комментирования домашних заданий, защищённое файловое хранилище, а также бесшовная интеграция с Telegram-ботом и олимпиадным тренажёром.

Архитектура ядра и база данных

Бэкенд ядра построен на FastAPI с асинхронным движком SQLAlchemy 2 и драйвером asyncpg.

В качестве базы данных используется PostgreSQL. Схема БД эволюционирует строго через миграции Alembic без автогенерации на старте. Реализованы раздельные модели доступа: ученик, родитель и преподаватель. Сессии учеников и родителей ограничены по времени (~30 дней), тогда как сессия администратора является долгоживущей.

Безопасное хранение файлов и доступы

Файловая подсистема платформы строго разграничивает права на учебные материалы и отправленные решения домашних заданий.

Модуль storage.py проверяет расширения, mime-типы и размер загружаемых файлов. Пользовательские загрузки изолированы от репозитория и монтируются с файловой системы хоста через постоянные Docker volumes с верификацией прав владения.

Микросервис Telegram и агентский MCP

Telegram-функционал вынесен в автономный микросервис на FastAPI, aiogram 3 и MongoDB, взаимодействующий с ядром исключительно по внутреннему защищённому HTTP API. Связка student_id ↔ chat_id хранится в PostgreSQL ядра, а MongoDB сервиса отвечает за очереди и операционный статус доставки уведомлений.

Отдельный stateless MCP-сервер позволяет ИИ-агентам управлять учебными сущностями через выделенный админ-токен без прямого доступа к базе данных или файловому хранилищу.

Интегрированные сервисы: ByteLab и C++ тренажёр

В экосистему бесшовно интегрированы два специализированных учебных инструмента: - ByteLab (Online Compiler): веб-среда с Monaco Editor и браузерным рантаймом Pyodide в Web Worker для безопасного выполнения Python-кода без серверной нагрузки; - Training Platform: проверяющая система в стиле Codeforces с вердиктами тестирования (OK, WA, TLE, RE, CE, MLE), формулами KaTeX, версионированием задач и единой точкой входа через SSO.

Развёртывание и поддержка

Все компоненты контейнеризованы с помощью Docker Compose. Маршрутизация запросов к ядру и микросервисам выполняется через обратный прокси Caddy с поддержкой единого доменного пространства и HTTPS-сертификатов.