Образование
Образовательная платформа
Кабинеты для преподавателя, ученика и родителя: уроки, домашние работы, файлы и уведомления.
Задача
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-сертификатов.