Skip to content

F1TU3S17/testomat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

# Тестомат — Мобильная автоматизированная система тестирования знаний

## О проекте

**Тестомат** — мобильное приложение для адаптивного тестирования знаний студентов и школьников с использованием искусственного интеллекта. Система обеспечивает автоматическую генерацию тестовых заданий через большие языковые модели (LLM), анализирует ошибки и формирует персонализированные рекомендации для повышения эффективности обучения.

Проект разрабатывается в рамках учебной практики на кафедре математического обеспечения и применения ЭВМ Института компьютерных технологий и информационной безопасности Южного Федерального Университета.

## Цели и задачи

### Основная цель
Создание удобного и эффективного инструмента для автоматизации процесса контроля знаний, который позволяет учащимся проходить тесты в любое время и месте, получать мгновенную обратную связь и персонализированные рекомендации.

### Задачи проекта
- Автоматизация процесса создания и проведения тестирования знаний
- Интеграция с современными языковыми моделями для генерации вопросов и анализа ответов
- Формирование персонализированных образовательных траекторий на основе истории ошибок
- Снижение нагрузки на преподавателей и повышение объективности оценки знаний
- Обеспечение гибкости и доступности образовательного процесса

## Функциональные возможности

### Управление учетными записями
- Регистрация нового пользователя с указанием логина, пароля и email
- Авторизация зарегистрированных пользователей
- Восстановление доступа к учетной записи
- Редактирование профиля пользователя

### Прохождение тестов
- Последовательное отображение вопросов с визуализацией прогресса
- Поддержка различных типов вопросов: закрытые (с вариантами ответов) и открытые
- Автоматическая проверка открытых ответов с использованием LLM
- Формирование пояснений к ответам через искусственный интеллект

### Каталог тестов
- Формирование общего каталога тестов, созданных всеми пользователями с учетом настроек приватности
- Фильтрация по категориям, популярности и дате создания
- Поиск по ключевым словам (название, описание, ID)
- Отображение карточек тестов с кратким описанием, количеством вопросов и рейтингом
- Подборка рекомендованных квизов на основе интересов и истории прохождений пользователя

### Анализ результатов и статистика
- Формирование детальных отчетов по итогам прохождения: количество правильных/неправильных ответов, процент успешности
- Визуализация статистики через графики и диаграммы
- Хранение истории попыток с синхронизацией между устройствами пользователя
- Персонализированные рекомендации на основе допущенных ошибок

### Сервисные функции
- Настройка параметров генерации теста: количество вопросов, сложность, тип вопросов
- Выбор используемой языковой модели (LLM) при наличии нескольких интеграций
- Автоматическое резервное копирование данных пользователя
- Локализация интерфейса на русский и английский языки

### Административные функции
- Блокировка пользователей
- Удаление или скрытие неподходящих тестов
- Мониторинг производительности системы
- Конфигурирование параметров системы

## Архитектура системы

### Компонентная структура

Система построена по трехзвенной архитектуре и включает следующие основные компоненты:

**Frontend (Мобильное приложение)**
- Реализовано на фреймворке Flutter с использованием языка Dart
- Обеспечивает кроссплатформенность для iOS (15+) и Android (11.0+, API 30)
- Предоставляет нативный пользовательский интерфейс для взаимодействия со всеми функциями системы

**Backend (Серверная часть)**
- Разработан на Python 3.11+ с использованием фреймворка FastAPI и сервера Uvicorn
- Реализует бизнес-логику системы: обработку запросов, управление сеансами тестирования, валидацию ответов
- Обеспечивает взаимодействие между мобильным приложением и базой данных через REST API с форматом данных JSON

**База данных**
- PostgreSQL версии 15 и выше
- Хранит учетные записи пользователей, каталог тестов, историю прохождений, результаты и аналитические метрики
- Автоматическое резервное копирование выполняется не реже одного раза в 24 часа

**LLM (Language Model)**
- Интеграция с большими языковыми моделями: MistralAI, Deepseek, GigaChat или их аналогами
- Отвечает за автоматическую генерацию тестовых вопросов
- Обеспечивает адаптацию сложности заданий
- Формирует персонализированные рекомендации на основе анализа ошибок
- Архитектура позволяет простое добавление новых провайдеров LLM или замену существующих

### IT-инфраструктура

**Клиентский уровень**
- Смартфоны с ОС Android (11.0+) или iOS (15.0+)
- Минимум 2 ГБ оперативной памяти
- Не менее 100 МБ свободного дискового пространства
- Модуль беспроводной связи (Wi-Fi, сотовые сети)

**Сетевой уровень**
- Switch для маршрутизации трафика
- Firewall для защиты периметра сети и контроля соединений
- Network — магистральная сеть для связи клиентской части с серверными компонентами

**Серверный уровень**
- Сервер Backend: виртуальный или физический сервер с публичным IP-адресом, минимум 2 ГБ ОЗУ и 20 ГБ дискового пространства
- Сервер БД: выделенный сервер для PostgreSQL
- Сервер LLM: специализированный высокопроизводительный сервер для работы с языковыми моделями
- Пропускная способность канала должна обеспечивать стабильную работу не менее 100 одновременных пользователей

**Инфраструктурные инструменты**
- Docker для контейнеризации
- Git для системы контроля версий
- Swagger/OpenAPI для документирования API
- Postman для тестирования API

## Бизнес-процессы

### Основные процессы системы

**Управление пользователями**
- Регистрация, авторизация, редактирование профилей и восстановление доступа
- Обеспечивает идентификацию участников системы и управление учетными данными

**Управление тестами**
- Создание, редактирование, поиск и рекомендация тестов
- Формирование каталога тестовых материалов и обеспечение их доступности

**Проведение тестирования знаний**
- Центральный процесс системы: ответы на вопросы, проверка ответов, отображение результатов
- Непосредственное взаимодействие студента с тестовым контентом

**Анализ результатов тестов**
- Создание персонализированных рекомендаций, визуализация статистики, сохранение результатов
- Обеспечивает аналитическую функцию и предоставляет обратную связь учащемуся

**Поддержка работы системы**
- Настройка параметров генерации тестов, резервное копирование данных, управление интеграцией с LLM
- Обеспечивает устойчивость и масштабируемость системы

## Безопасность

Система реализует следующие меры защиты:

- **Шифрование данных**: все данные между клиентом и сервером защищены протоколом HTTPS
- **Хранение паролей**: конфиденциальные данные хранятся в базе данных в хешированном виде
- **Аутентификация**: реализована через JWT-токены
- **Валидация данных**: на стороне клиента и сервера для предотвращения SQL-инъекций и XSS-атак
- **Защита от атак**: реализована защита от DDoS и brute-force атак на endpoint аутентификации
- **Контроль доступа**: неавторизованные пользователи не имеют доступа к данным и функционалу приложения

## Целевая аудитория

**Основные пользователи:**
- Студенты высших учебных заведений
- Школьники
- Учащиеся, совмещающие учёбу с работой или другими обязанностями

**Администраторы системы:**
- Сопровождение технической инфраструктуры
- Управление контентом и пользователями
- Мониторинг производительности

## Этапы разработки

1. Сбор и анализ требований
2. Проектирование архитектуры и схемы базы данных
3. Разработка дизайна мобильного приложения
4. Проектирование API
5. Разработка мобильного приложения на Flutter
6. Разработка серверной части на FastAPI + PostgreSQL
7. Интеграция с API языковых моделей
8. Тестирование: модульное, интеграционное, UI
9. Подготовка документации и публикация приложения

## Тестирование

Система проходит комплексное тестирование на различных уровнях:

**Модульное тестирование backend:**
- Модуль управления учетными записями пользователей
- Модуль прохождения тестов
- Модуль работы с каталогом тестов
- Модуль анализа результатов и статистики
- Модуль сервисных функций
- Модуль интеграции с внешними API LLM
- Модуль безопасности

**Модульное тестирование frontend:**
- Экраны регистрации и авторизации
- Интерфейс прохождения тестов
- Каталог тестов
- Визуализация статистики
- Настройки приложения

**Проверка соответствия требованиям технического задания:**
- Функциональные требования
- Требования надежности и безопасности
- Требования совместимости
- Требования к документации
- Требования к упаковке и публикации

## Распространение

Готовое приложение распространяется через официальные магазины:
- **Google Play** для Android
- **App Store** для iOS

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

## Экономическое обоснование

**Эффективность для учащихся:**
- Повышение усвоения материала на 20-30% по сравнению с традиционным изучением конспектов
- Возможность прохождения тестов в удобное время и месте
- Более 70% студентов отмечают, что мгновенная проверка знаний значительно ускоряет подготовку к экзаменам (опрос 2023 года)

**Экономия для образовательных учреждений:**
- Снижение затрат на печатную продукцию и хранение бумажных носителей
- Уменьшение трудозатрат преподавателей на подготовку и проверку тестов
- Оптимизация образовательного процесса

## Документация проекта

В состав проектной документации входят:
- Техническое задание на разработку ПО
- Отчет по учебной практике «Проектирование ПО»
- Руководство пользователя
- Руководство администратора и описание применения
- Описание API и структуры базы данных
- Процедуры развертывания системы
- Графические модели: организационная структура, карта процессов, BPMN, EPC, карта систем, IT-инфраструктура, DFD

## Методология проектирования

Для проектирования системы применяется структурный анализ с использованием различных графических нотаций:

- **Organizational Chart**: описание организационной структуры команды разработки
- **Process Landscape**: верхнеуровневая карта бизнес-процессов
- **BPMN (Business Process Model and Notation)**: детализация процесса прохождения теста
- **EPC (Event-driven Process Chain)**: событийно-ориентированная модель процессов
- **System Landscape**: компонентная архитектура системы
- **IT-infrastructure**: диаграмма физического развертывания
- **DFD (Data Flow Diagram)**: визуализация потоков данных между компонентами

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

## Организационная структура команды

Проект управляется Владельцем продукта/Заказчиком и Генеральным директором. Команда разработки включает четыре ключевых направления:

**Техническое направление** (Технический директор):
- Команда разработки архитектуры ПО (бэкенд, фронтенд)
- Команда качества (QA, DevOps)

**Маркетинговое направление** (Директор по маркетингу):
- Команда контент-маркетинга
- Команда SMM

**Продуктовое направление** (Директор по продукту):
- Продуктовые аналитики
- Продуктовые дизайнеры (UX/UI)

**Финансовое направление** (Финансовый директор):
- Бухгалтерия
- Отдел по работе с инвесторами
- Отдел финансового планирования и анализа

---

Этот README предоставляет полную информацию о проекте **Тестомат** для использования в качестве контекста для ИИ и участников проекта. Документ охватывает все ключевые аспекты: от целей и функциональности до технической архитектуры и организационной структуры команды.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages