Архитектура проекта TestPDF
Общая схема архитектуры
TestPDF построен на основе архитектуры Model-View-Template (MVT) фреймворка Django с модульной структурой и четким разделением ответственности между компонентами.
Технологический стек
- • Django 5.2 (Backend)
- • Bootstrap 5 + JavaScript + MathJax (Frontend)
- • PostgreSQL/SQLite (База данных)
- • Playwright (PDF генерация)
- • MathJax (LaTeX обработка)
Модели данных
- • User - управление пользователями
- • Category - категоризация заданий
- • Task - управление заданиями
- • Answer - система ответов
- • Variant - варианты тестов
- • Picture - управление изображениями
- • Assessment_criteria - критерии оценивания
Ключевые модули
- • Редактор LaTeX формул
- • Генератор PDF документов
- • Система управления вариантами
- • Система управления заданиями
- • Экспорт/Импорт данных
Архитектурные принципы
- • MVT архитектура
- • Асинхронность генерации PDF
- • Безопасность и авторизация
- • Модульная структура
Структура приложений
Система разделена на следующие основные Django-приложения:
- tasks - основное приложение с логикой заданий и вариантов
- accounts - управление пользователями и аутентификацией
- variant - логика создания и экспорта вариантов
Архитектура генерации PDF
Система использует асинхронную генерацию PDF на основе Playwright:
- Создание HTML-шаблона на основе данных моделей
- Асинхронный запуск Playwright для рендеринга HTML
- Обработка и оптимизация PDF с настраиваемыми параметрами
- Сохранение и возврат готового документа пользователю
Диаграмма моделей данных
Основные сущности системы и связи между ними:
- User ← создает → Task
- Task ← имеет → Answer
- Task ← принадлежит → Category
- Task ← входит в → Variant
- Picture ← используется в → Task и Variant
- Assessment_criteria ← оценивает → Task через Task_criteria_mapping
Преимущества архитектуры
- Модульность и расширяемость системы
- Чёткое разделение обязанностей
- Асинхронная обработка тяжёлых задач
- Использование современных технологий
- Безопасность на уровне Django-авторизации
- Масштабируемость системы