Техническое задание на разработку программного продукта «Интерактивная викторина: Защита персональных данных» 1. Цель и назначение разработки 1.1. Цель Разработать десктопное приложение для тестирования знаний в области защиты персональных данных в формате интерактивной викторины. 1.2. Назначение Проверка знаний сотрудников организаций, студентов, слушателей курсов по теме 152-ФЗ, GDPR, уровней защищённости, угроз и т.д. Использование в учебных целях, на лекциях, тренингах, внутренних экзаменах. Возможность самостоятельного обучения за счёт пояснений к каждому вопросу. 2. Требования к функциональности 2.1. Основные функции № Функция Описание 1 Стартовый экран Приветствие, правила, кнопка начала викторины 2 Перемешивание вопросов Случайный порядок вопросов при каждом запуске 3 Отображение вопроса Текст вопроса + до 4 вариантов ответов 4 Выбор ответа Через GUI (кнопки) или клавиши 1-4 5 Проверка ответа По кнопке «Проверить» или клавише Enter 6 Обратная связь Модальное окно с результатом (правильно/неправильно) + пояснение 7 Подсчёт результатов В конце викторины — количество правильных ответов и % 8 Повторное прохождение Возможность начать заново без перезапуска программы 9 Выход По кнопке или Esc с подтверждением 2.2. Работа с изображениями При наличии изображения у вопроса — отображать его (PNG, JPG, JPEG, BMP, GIF, ICO, TIFF). Поддержка Pillow для масштабирования, обработки прозрачности и анимированных GIF. Автоматическое определение доминирующего цвета изображения для фона вопроса. Если изображение отсутствует — показывать уведомление об ошибке. 2.3. Интерфейс и управление Адаптивная цветовая схема: цвет фона меняется под изображение или используется предустановленный. Автоматический выбор чёрного или белого цвета текста для читаемости. Управление с клавиатуры: 1-4 — выбор варианта ответа Enter — проверка ответа / продолжение Esc — выход Эффекты наведения на кнопки и радиокнопки. 3. Структура данных 3.1. Формат вопроса Каждый вопрос представляет собой словарь с полями: Поле Тип Описание id int Уникальный идентификатор question str Текст вопроса options list[str] Список вариантов ответов (4 шт.) correct int Индекс правильного ответа (0-3) explanation str Пояснение после ответа image str Имя файла изображения (опционально) bg_color str|None Ручной цвет фона (hex, опционально) 3.2. БД вопросов Встроенный список из 50 вопросов по теме защиты ПД. Вопросы охватывают: 152-ФЗ, категории данных, уровни защищённости, угрозы, ответственность, GDPR и др. 4. Требования к графическому интерфейсу 4.1. Окна и экраны Экран Элементы Стартовый Заголовок, правила, кнопка «Начать» Вопрос Текст вопроса, изображение (если есть), 4 радиокнопки, прогресс, подсказки, кнопки «Выход» и «Проверить» Обратная связь Модальное окно с результатом, пояснением, кнопкой продолжения Результаты Количество правильных ответов, %, оценка, кнопки повтора и выхода 4.2. Размеры и расположение Основное окно: 1000x700, не изменяется. Модальное окно: 500x350. Изображения масштабируются до 350x350 с сохранением пропорций. Варианты ответов — вертикальный список с переносом текста. 5. Технические требования 5.1. Стек технологий Компонент Технология Язык Python 3.8+ GUI Tkinter (встроенный) Работа с изображениями Pillow (опционально, но рекомендуется) Сборка (опционально) PyInstaller / cx_Freeze 5.2. Зависимости Стандартная библиотека Python (tkinter, random, os, pathlib, typing) Pillow — не обязателен, но без него ограничена работа с изображениями (только .jpg через PhotoImage) 5.3. Структура файлов text quiz_app.py # Главный скрипт quiz_images/ # Папка с изображениями (создаётся вручную) q1.jpg q2.png ... 5.4. Обработка ошибок Отсутствие Pillow → предупреждение, работа с ограничениями. Отсутствие изображения → уведомление в интерфейсе. Некорректный файл изображения → сообщение об ошибке. 6. Критерии приёмки № Критерий 1 Приложение запускается без ошибок на Python 3.8+ 2 Все 50 вопросов отображаются корректно 3 Выбор ответа работает через мышь и клавиши 1-4 4 Проверка ответа показывает правильный/неправильный результат с пояснением 5 По окончании викторины показывается итоговый счёт и процент 6 Можно пройти викторину заново без перезапуска 7 Выход из программы — через Esc или кнопку с подтверждением 8 Изображения (если есть) отображаются и не ломают интерфейс 9 Цвет фона адаптируется под изображение или используется палитра по умолчанию 10 Код структурирован, есть классы ImageManager и QuizApp, комментарии на русском/английском 7. Возможные доработки (не входит в текущий объём) Добавление базы данных SQLite для хранения результатов пользователей. Режим обучения с повторением ошибочных вопросов. Экспорт результатов в PDF/CSV. Поддержка темной/светлой темы без привязки к изображению. Таймер на вопрос. Звуковое сопровождение (правильно/неправильно). Многопользовательский режим (соревнование). 8. Требования к документации Исходный код должен содержать комментарии к ключевым методам. В начале файла — краткое описание программы и инструкция по запуску. При отсутствии Pillow — вывод понятного сообщения с инструкцией по установке.