graph TD
%% Стилизация под белый фон диплома
classDef actor fill:#ffffff,stroke:#333333,stroke-width:2px,font-weight:bold,color:#000000;
classDef process fill:#ffffff,stroke:#333333,stroke-width:1px,color:#000000;
classDef main fill:#f9f9f9,stroke:#333333,stroke-width:2px,font-weight:bold,color:#000000;
classDef wpfStyle fill:#ffffff,stroke:#333333,stroke-width:2px,stroke-dasharray: 5 5,color:#000000;
%% 1. ВХОД НА САЙТ
START([Пользователь открывает сайт]) --> VIEW[Форма ввода данных в браузере]:::process
%% 2. БЛОК АВТОРИЗАЦИИ (Тот самый центральный прямоугольник)
VIEW --> AUTH{АВТОРИЗАЦИЯ <br> Проверка логина/пароля <br> или Google_ID}:::main
AUTH -->|Данные неверны| ERR[Ошибка доступа]:::process
ERR --> VIEW
%% 3. РАЗВЕТВЛЕНИЕ ПО ДВУМ РОЛЯМ
AUTH -->|Роль: student| ST[СТУДЕНТ]:::actor
AUTH -->|Роль: teacher| TR[ПРЕПОДАВАТЕЛЬ]:::actor
%% Сценарий Студента
subgraph Блок_Студента ["Взаимодействие Студента"]
ST --> ST_1(Выбор дисциплины и темы):::process
ST_1 --> ST_2(Запуск теста):::process
ST_2 --> ST_3(Выбор и ввод ответов):::process
ST_3 --> ST_4(Сохранение попытки в БД):::process
ST_4 --> ST_5(Просмотр оценки):::process
end
%% Сценарий Преподавателя
subgraph Блок_Преподавателя ["Взаимодействие Преподавателя"]
TR --> TR_1(Управление темами курсов):::process
TR --> TR_2(Создание тестов и вопросов):::process
TR_2 --> TR_3(Настройка лимитов времени/попыток):::process
TR --> TR_4(Просмотр результатов студентов):::process
end
%% 4. АДМИНИСТРАТИВНАЯ ПОДСИСТЕМА (WPF) - Работает автономно
subgraph Административный_Контур ["Административная подсистема (Без роли админа на сайте)"]
WPF[WPF TestSyncManager]:::wpfStyle
WPF --> W_1(Настройка локального контура):::process
W_1 --> W_2(Регистрация преподавателей в БД):::process
W_2 --> W_3(Запуск синхронизации данных):::process
W_3 --> W_4(Слияние локальной и удаленной БД):::process
end