Статья опубликована в рамках: Научного журнала «Студенческий» № 15(353)
Рубрика журнала: Информационные технологии
Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4, скачать журнал часть 5, скачать журнал часть 6
РАЗРАБОТКА ВЕБ-СЕРВИСА ДЛЯ ПРОВЕРКИ ЛАБОРАТОРНЫХ РАБОТ ПО ИНФОРМАТИКЕ С ПОДДЕРЖКОЙ AI-АНАЛИЗА КОДА
DEVELOPMENT OF A WEB SERVICE FOR CHECKING LABORATORY WORKS IN COMPUTER SCIENCE WITH AI-CODE ANALYSIS SUPPORT
Pushko Denis Vadimovich
Student, Physics and Technology Institute, Petrozavodsk State University, Russia, Petrozavodsk
Solovyov Alexey Vladimirovich
Scientific supervisor, Candidate of Physical and Mathematical Sciences, Associate Professor, Physics and Technology Institute, Petrozavodsk State University,
Russia, Petrozavodsk
АННОТАЦИЯ
В статье рассматривается разработка веб-сервиса для автоматизированной проверки лабораторных работ по информатике. Сервис позволяет выполнять компиляцию кода на C++ и Python в изолированной среде Docker, получать AI-анализ кода через GigaChat API, а также отправлять результаты преподавателю. Описаны архитектура, технологический стек и механизмы обеспечения отказоустойчивости сервиса.
ABSTRACT
The article discusses the development of a web service for automated checking of laboratory works in computer science. The service allows compiling and executing code in C++ and Python in an isolated Docker environment, receiving AI-code analysis via the GigaChat API, and sending results to the teacher. The architecture, technology stack, and mechanisms for ensuring fault tolerance of the service are described.
Ключевые слова: веб-сервис, автоматизация проверки, Docker, изолированная компиляция, GigaChat API, анализ кода, Node.js, Flask, отказоустойчивость.
Keywords: web service, automation of checking, Docker, isolated compilation, GigaChat API, code analysis, Node.js, Flask, fault tolerance.
Введение
Традиционный подход к проверке лабораторных работ по программированию, предполагающий очную демонстрацию кода преподавателю, создает очереди и увеличивает нагрузку на педагогов. Для решения этой проблемы был разработан веб-сервис, автоматизирующий процессы компиляции, выполнения и анализа программного кода. Разработанный сервис развернут на сервере Физико-технического института и доступен студентам для сдачи лабораторных работ.
Архитектура сервиса
Разработанный веб-сервис представляет собой систему, состоящую из клиентской части, серверной части и изолированной среды выполнения. Клиентская часть реализована с использованием HTML5, CSS3 и JavaScript [2]. В качестве редактора кода используется библиотека Ace Editor, обеспечивающая подсветку синтаксиса и нумерацию строк. Пользовательский интерфейс включает форму авторизации через kompot.petrsu.ru, редактор кода, поле для ввода входных данных, область вывода результатов и форму для отправки задания преподавателю. Серверная часть состоит из двух независимых компонентов. Node.js-сервер (порт 80) на базе фреймворка Express обрабатывает запросы на компиляцию, авторизацию и отправку заданий на email преподавателю [1]. Flask-сервер (порт 5001) обеспечивает взаимодействие с GigaChat API для анализа кода [4]. Такое разделение позволяет сохранить работоспособность сервиса при отказе одного из компонентов. Изолированная компиляция реализована с использованием Docker [3]. Для каждого языка создан отдельный образ: my-gcc-image для компиляции C++ и my-python-image для интерпретации Python. Каждая компиляция выполняется в отдельном контейнере с ограничением времени выполнения 10 секунд, что обеспечивает безопасность и предотвращает зависание сервера.
Обеспечение отказоустойчивости
Отказоустойчивость сервиса достигается за счет нескольких решений. В конфигурации systemd заданы параметры Restart=always и RestartSec=10, обеспечивающие автоматический перезапуск сервисов при аварийном завершении. Разделение функциональности на два независимых сервера позволяет сохранить работоспособность сервиса при отказе одного из компонентов (например, при недоступности GigaChat API анализ временно отключается, но компиляция продолжает работать). Автоматическая очистка логов через cron-задания предотвращает переполнение дискового пространства. Каждая компиляция выполняется в отдельном Docker-контейнере с таймаутом, что предотвращает зависание основного сервера при выполнении некорректного кода [3].
AI-анализ качества кода
Для предоставления студентам обратной связи в сервис интегрирован AI-анализ через GigaChat API [4]. После успешной компиляции Node.js-сервер отправляет POST-запрос к Flask-серверу на эндпоинт /analyze_code, передавая исходный код и язык программирования. Flask-сервер формирует промпт для GigaChat с просьбой проанализировать код на русском языке и предоставить рекомендации по следующим аспектам: сильные стороны реализации, потенциальные проблемы и ошибки, рекомендации по улучшению кода. Полученный от GigaChat анализ возвращается в Node.js-сервер и отображается пользователю вместе с результатом компиляции. Например, для простейшей программы на Python "print('Hello')" AI-анализ указывает на отсутствие обработки ошибок, несоблюдение стандарта PEP8 и дает рекомендации по улучшению кода [2].
Результаты тестирования
Разработанный веб-сервис развернут на сервере Физико-технического института с IP-адресом 172.20.175.11. В ходе тестирования подтверждены следующие характеристики: поддержка языков C++ и Python; изолированная компиляция и выполнение кода через Docker с ограничением времени выполнения; автоматический анализ кода через GigaChat API с выдачей рекомендаций на русском языке; отказоустойчивость сервиса (автоматический перезапуск при сбоях, изоляция компонентов, ограничение ресурсов); автоматическая очистка логов для предотвращения переполнения диска.
Заключение
В результате работы был разработан веб-сервис для проверки лабораторных работ по информатике, который позволяет автоматизировать процессы компиляции, выполнения и анализа программного кода. Сервис поддерживает языки C++ и Python, обеспечивает изолированную компиляцию через Docker, интегрирует AI-анализ кода через GigaChat API. Благодаря использованию systemd, изоляции компонентов и автоматической очистке логов сервис обладает высокой степенью отказоустойчивости. Внедрение разработанного сервиса позволит сократить нагрузку на преподавателей, предоставить студентам оперативную обратную связь и повысить качество обучения программированию.
Список литературы:
- Янг А., Мек Б., Кантелон М. Node.js в действии. – 2-е изд. – СПб.: Питер, 2018. – 432 с.
- Хавербеке М. Выразительный JavaScript. – 3-е изд. – СПб.: Прогресс книга, 2021. – 480 с.
- Docker Documentation [Электронный ресурс]. – URL: https://docs.docker.com (дата обращения: 03а.04.2026).
- GigaChat API Documentation [Электронный ресурс]. – URL: https://developers.sber.ru/gigachat (дата обращения: 11.02.2026).

