# Продуктивное учебное задание №3

## Продуктивное учебное задание №3

### «Разработка структуры пользовательского интерфейса»

Предметная область: онлайн-обучение (Letaat lessons)

### 1. Перечень задач пользователя

1. Регистрация и сопровождение пользователей.
2. Управление уроками и прогрессом обучения.
3. Управление домашними заданиями.
4. Обработка вопросов пользователей.
5. Сбор и анализ отзывов.
6. Планирование и бронирование слотов консультаций.
7. Формирование управленческой отчетности.

### 2. Структура пользовательского интерфейса (не менее 3 уровней)

#### Уровень 1: Главное меню

* Пользователи
* Обучение
* Коммуникации
* Расписание
* Отчеты
* Сервис

#### Уровень 2: Подсистемы

* Пользователи:
  * Карточка пользователя
  * Поиск и фильтрация пользователей
  * Статус оплаты и VPN-доступа
* Обучение:
  * Справочник уроков
  * Прогресс пользователей по урокам
  * Домашние задания
* Коммуникации:
  * Вопросы пользователей
  * Отзывы и оценки
* Расписание:
  * Календарь слотов
  * Бронирование/перенос/отмена
* Отчеты:
  * По пользователям
  * По прогрессу
  * По домашним заданиям
  * По вопросам и отзывам
  * По слотам

#### Уровень 3: Операции по задачам

* Пользователи:
  * Добавить/изменить/деактивировать пользователя
  * Отметить оплату
  * Проверить VPN-дату и UUID
* Прогресс:
  * Назначить урок пользователю
  * Отметить завершение урока
  * Просмотр истории прохождения
* Домашние задания:
  * Добавить ДЗ
  * Отметить проверку/выполнение
  * Просмотр невыполненных ДЗ
* Вопросы:
  * Зарегистрировать вопрос
  * Отметить статус ответа
  * Выгрузить список неотвеченных
* Отзывы:
  * Добавить отзыв
  * Поставить/скорректировать оценку
  * Сформировать сводку по рейтингам
* Слоты:
  * Создать слот
  * Забронировать за пользователем
  * Отметить отправку напоминания
* Отчеты:
  * Сформировать отчет
  * Выбрать параметры (период, статус, пользователь)
  * Экспортировать/распечатать отчет

### 3. Формы ввода (количество форм >= количеству таблиц)

Таблиц в БД: 7. Проектируется 8 форм ввода.

1. Форма `frm_users` (таблица `users`)

* Заголовок: «Пользователи»
* Поля: `full_name`, `username`, `paid`, `vpn_date`, `vpn_uuid`, `timestamp`
* Кнопки: Добавить, Сохранить, Удалить, Найти, Назад
* Рисунок: логотип школы в шапке формы
* Примечание: «Поля full\_name и username обязательны»

2. Форма `frm_lessons` (таблица `lessons`)

* Заголовок: «Справочник уроков»
* Поля: `title`, `description`
* Кнопки: Добавить, Сохранить, Удалить, Назад
* Рисунок: иконка «книга/урок»
* Примечание: «Название урока должно быть уникальным»

3. Форма `frm_user_lessons` (таблица `user_lessons`)

* Заголовок: «Прогресс по урокам»
* Поля: `user_id`, `lesson_number`, `completed`, `timestamp`
* Кнопки: Назначить урок, Отметить завершение, Сохранить, Назад
* Рисунок: иконка прогресса
* Примечание: «Одна запись на пару пользователь-урок»

4. Форма `frm_homeworks` (таблица `homeworks`)

* Заголовок: «Домашние задания»
* Поля: `user_id`, `lesson_number`, `homework_text`, `completed`, `timestamp`
* Кнопки: Добавить ДЗ, Проверено, Сохранить, Назад
* Рисунок: иконка «тетрадь»
* Примечание: «Текст ДЗ обязателен»

5. Форма `frm_questions` (таблица `questions`)

* Заголовок: «Вопросы пользователей»
* Поля: `user_id`, `question_text`, `answered`, `timestamp`
* Кнопки: Добавить вопрос, Отметить отвеченным, Сохранить, Назад
* Рисунок: иконка «вопрос»
* Примечание: «Неотвеченные вопросы контролируются ежедневно»

6. Форма `frm_reviews` (таблица `reviews`)

* Заголовок: «Отзывы и рейтинг»
* Поля: `user_id`, `review_text`, `rating`, `timestamp`
* Кнопки: Добавить отзыв, Сохранить, Назад
* Рисунок: иконка «звезда»
* Примечание: «Оценка rating от 1 до 5»

7. Форма `frm_slots` (таблица `slots`)

* Заголовок: «Слоты консультаций»
* Поля: `date`, `time`, `booked_by`, `reminded`
* Кнопки: Создать слот, Забронировать, Отменить бронь, Сохранить, Назад
* Рисунок: иконка календаря
* Примечание: «Запрещено двойное бронирование одного слота»

8. Форма `frm_search_dashboard` (составная сервисная форма)

* Заголовок: «Поиск и быстрый доступ»
* Поля: фильтры по пользователю/уроку/статусу
* Кнопки: Найти, Очистить, Перейти к карточке, Назад
* Рисунок: иконка лупы
* Примечание: «Форма ускоряет навигацию по системе»

Дополнение по FK-логике интерфейса:

* В формах `frm_user_lessons`, `frm_homeworks`, `frm_questions`, `frm_reviews`, `frm_slots` поле `user_id`/`booked_by` выбирается из выпадающего списка пользователей (`users.full_name`).
* В формах `frm_user_lessons`, `frm_homeworks` поле `lesson_number` выбирается из выпадающего списка уроков (`lessons.title`).

### 4. Отчеты (количество отчетов >= количеству задач)

Задач: 7. Проектируется 8 отчетов.

1. Отчет `rpt_users_registry` — «Реестр пользователей»

* Группировка: по `paid` (оплачен/не оплачен)
* Промежуточные итоги: количество пользователей в каждой группе
* Общие итоги: общее количество пользователей
* Данные: ФИО, логин, оплата, VPN-дата
* Служебные поля: дата формирования, номер страницы

2. Отчет `rpt_learning_progress` — «Прогресс обучения»

* Группировка: пользователь -> статус `completed`
* Промежуточные итоги: завершенные/незавершенные уроки по пользователю
* Общие итоги: общий процент завершения по всем пользователям
* Данные: пользователь, урок, статус, дата
* Служебные поля: дата, номер страницы

3. Отчет `rpt_homework_status` — «Статус домашних заданий»

* Группировка: пользователь -> `completed`
* Промежуточные итоги: выполнено/не выполнено по пользователю
* Общие итоги: общий процент выполненных ДЗ
* Данные: урок, текст ДЗ, статус, дата
* Служебные поля: дата, номер страницы

4. Отчет `rpt_unanswered_questions` — «Неотвеченные вопросы»

* Группировка: по пользователю
* Промежуточные итоги: число неотвеченных по пользователю
* Общие итоги: общее число неотвеченных вопросов
* Данные: текст вопроса, дата создания
* Служебные поля: дата, номер страницы

5. Отчет `rpt_reviews_rating` — «Отзывы и средний рейтинг»

* Группировка: по значению `rating`
* Промежуточные итоги: число отзывов по каждой оценке
* Общие итоги: средний рейтинг по системе
* Данные: пользователь, текст отзыва, оценка, дата
* Служебные поля: дата, номер страницы

6. Отчет `rpt_slots_schedule` — «Расписание слотов»

* Группировка: дата -> статус бронирования
* Промежуточные итоги: число занятых/свободных слотов за день
* Общие итоги: суммарно занято/свободно
* Данные: дата, время, пользователь, reminded
* Служебные поля: дата, номер страницы

7. Отчет `rpt_vpn_control` — «Контроль VPN-доступов»

* Группировка: по дате `vpn_date` (периоды)
* Промежуточные итоги: количество пользователей по периодам
* Общие итоги: количество актуальных/просроченных VPN-доступов
* Данные: пользователь, vpn\_uuid, vpn\_date, paid
* Служебные поля: дата, номер страницы

8. Отчет `rpt_activity_summary` — «Сводная активность пользователей»

* Группировка: по пользователю
* Промежуточные итоги: уроки, ДЗ, вопросы, отзывы, слоты по каждому пользователю
* Общие итоги: суммарные показатели по системе
* Данные: агрегированные показатели из всех подсистем
* Служебные поля: дата, номер страницы

### 4.1. Соответствие «задача -> форма -> отчет»

| Задача пользователя                             | Форма ввода                         | Отчет                                     |
| ----------------------------------------------- | ----------------------------------- | ----------------------------------------- |
| Регистрация и сопровождение пользователей       | `frm_users`                         | `rpt_users_registry`                      |
| Управление уроками и прогрессом обучения        | `frm_user_lessons`                  | `rpt_learning_progress`                   |
| Управление домашними заданиями                  | `frm_homeworks`                     | `rpt_homework_status`                     |
| Обработка вопросов пользователей                | `frm_questions`                     | `rpt_unanswered_questions`                |
| Сбор и анализ отзывов                           | `frm_reviews`                       | `rpt_reviews_rating`                      |
| Планирование и бронирование слотов консультаций | `frm_slots`                         | `rpt_slots_schedule`                      |
| Контроль доступа и сводная аналитика            | `frm_users`, `frm_search_dashboard` | `rpt_vpn_control`, `rpt_activity_summary` |

### 5. Единый стиль форм и отчетов

1. Цветовая схема: белый фон, темно-синий заголовок, акцентные кнопки серо-синие.
2. Шрифт: Segoe UI 10/11 pt на всех формах и отчетах.
3. Единое расположение: заголовок сверху, поля по центру, кнопки снизу справа.
4. Все формы содержат: заголовок, поля ввода, кнопки, рисунок, примечание.
5. Все отчеты содержат: заголовок, группировки, промежуточные/общие итоги, дату, номер страницы.

### 6. Приложение пользователя (кнопочные формы)

Разработано 3 кнопочные формы (минимум выполнен).

1. Кнопочная форма `frm_main_menu` (главная)

* Кнопки: Пользователи, Обучение, Коммуникации, Расписание, Отчеты, Выход
* Поведение: при открытии следующей формы текущая закрывается

2. Кнопочная форма `frm_training_menu`

* Кнопки: Уроки, Прогресс, Домашние задания, Назад в главное меню
* Кнопка возврата: есть
* Поведение: при переходе предыдущая форма закрывается

3. Кнопочная форма `frm_reports_menu`

* Кнопки: Отчеты по пользователям, обучению, ДЗ, вопросам, отзывам, слотам, Назад
* Кнопка возврата: есть
* Поведение: при переходе предыдущая форма закрывается

### 7. Меню пользователя (>= 3 групп команд)

Предусмотрено 5 групп команд:

1. «Работа с пользователями»
2. «Учебный процесс»
3. «Коммуникации»
4. «Расписание»
5. «Отчетность»

### 8. Итог проверки требований

1. Перечень задач пользователя: выполнено.
2. Не менее 3 уровней структуры: выполнено (3 уровня).
3. По каждой задаче есть формы и отчеты: выполнено.
4. Форм ввода >= числу таблиц: выполнено (8 >= 7).
5. Отчетов >= числу задач: выполнено (8 >= 7).
6. Единый стиль: выполнено.
7. Состав формы: выполнено.
8. Состав отчета: выполнено.
9. Кнопочных форм >= 3: выполнено.
10. Кнопки возврата и закрытие предыдущей формы: предусмотрено.
11. Групп команд меню >= 3: выполнено (5).

### 9. Схемы (визуализация)

#### 9.1. Иерархия пользовательского интерфейса (3 уровня)

```mermaid
flowchart TD
    A[Главное меню]

    A --> B1[Пользователи]
    A --> B2[Обучение]
    A --> B3[Коммуникации]
    A --> B4[Расписание]
    A --> B5[Отчеты]
    A --> B6[Сервис]

    B1 --> C11[Карточка пользователя]
    B1 --> C12[Поиск и фильтрация]
    B1 --> C13[Статус оплаты и VPN]

    C11 --> D111[Добавить/изменить пользователя]
    C11 --> D112[Деактивировать пользователя]
    C13 --> D131[Отметить оплату]
    C13 --> D132[Проверить VPN-дату и UUID]

    B2 --> C21[Справочник уроков]
    B2 --> C22[Прогресс пользователей]
    B2 --> C23[Домашние задания]

    C22 --> D221[Назначить урок]
    C22 --> D222[Отметить завершение]
    C23 --> D231[Добавить ДЗ]
    C23 --> D232[Отметить выполнение]

    B3 --> C31[Вопросы]
    B3 --> C32[Отзывы и оценки]
    C31 --> D311[Зарегистрировать вопрос]
    C31 --> D312[Отметить ответ]
    C32 --> D321[Добавить отзыв]
    C32 --> D322[Сформировать сводку рейтинга]

    B4 --> C41[Календарь слотов]
    C41 --> D411[Создать слот]
    C41 --> D412[Забронировать слот]
    C41 --> D413[Отметить напоминание]

    B5 --> C51[Отчеты по пользователям]
    B5 --> C52[Отчеты по обучению]
    B5 --> C53[Отчеты по ДЗ]
    B5 --> C54[Отчеты по вопросам и отзывам]
    B5 --> C55[Отчеты по слотам]
```

#### 9.2. Схема навигации кнопочных форм

```mermaid
flowchart LR
    M[frm_main_menu] --> T[frm_training_menu]
    M --> R[frm_reports_menu]
    M --> U[frm_users]
    M --> C[frm_questions и frm_reviews]
    M --> S[frm_slots]

    T --> L[frm_lessons]
    T --> P[frm_user_lessons]
    T --> H[frm_homeworks]
    T --> M

    R --> RU[rpt_users_registry]
    R --> RP[rpt_learning_progress]
    R --> RH[rpt_homework_status]
    R --> RQ[rpt_unanswered_questions]
    R --> RR[rpt_reviews_rating]
    R --> RS[rpt_slots_schedule]
    R --> RV[rpt_vpn_control]
    R --> RA[rpt_activity_summary]
    R --> M

    U --> M
    C --> M
    S --> M
```

#### 9.3. Связь форм и таблиц БД

```mermaid
flowchart TD
    subgraph FORMS[Формы ввода]
      F1[frm_users]
      F2[frm_lessons]
      F3[frm_user_lessons]
      F4[frm_homeworks]
      F5[frm_questions]
      F6[frm_reviews]
      F7[frm_slots]
      F8[frm_search_dashboard]
    end

    subgraph TABLES[Таблицы БД]
      T1[(users)]
      T2[(lessons)]
      T3[(user_lessons)]
      T4[(homeworks)]
      T5[(questions)]
      T6[(reviews)]
      T7[(slots)]
    end

    F1 --> T1
    F2 --> T2
    F3 --> T3
    F4 --> T4
    F5 --> T5
    F6 --> T6
    F7 --> T7
    F8 --> T1
    F8 --> T2
    F8 --> T3
    F8 --> T4
    F8 --> T5
    F8 --> T6
    F8 --> T7
```

#### 9.4. Пример макета формы ввода

```mermaid
flowchart TB
    A["Заголовок формы: Пользователи"]
    B["Поля ввода: full_name, username, paid, vpn_date, vpn_uuid"]
    C["Кнопки: Добавить, Сохранить, Удалить, Назад"]
    D["Рисунок или иконка"]
    E["Примечание: обязательные поля full_name и username"]
    A --> B --> C
    B --> D
    C --> E
```

#### 9.5. Пример макета отчета

```mermaid
flowchart TB
    A["Заголовок отчета: Прогресс обучения"]
    B["Уровень группировки 1: Пользователь"]
    C["Уровень группировки 2: Статус completed"]
    D["Детальные данные: урок, дата, статус"]
    E["Промежуточные итоги по группе"]
    F["Общие итоги по отчету"]
    G["Служебные элементы: дата формирования, номер страницы"]
    A --> B --> C --> D --> E --> F --> G
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://letas-organization.gitbook.io/letaats-lessons-online/untitled-1/bazy-dannykh/produktivnoe-uchebnoe-zadanie-3.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
