Требования к разработке ИС «Knowledge»
=============================================

Общие требования к Системе
----------------------------------

.. csv-table::
    :widths: 2, 30

    3.1.1, "Система должна поддерживать работу на следующих серверных ОС: Linux, BSD, Solaris (рекомендуется использовать ОС Debian GNU/Linux 6.0 (amd64)."
    3.1.2, "Система должна поддерживать работу на реляционных СУБД и на noSQL СУБД."
    3.1.3, "Система не должна требовать обязательного приобретения дополнительных компонентов (лицензии на ОС, на СУБД и т.п.)."
    3.1.4, "Система должна поддерживать шифрование подключений с помощью протокола SSL (HTTPS)."
    3.1.5, "Система должна поддерживать работу с распределённым хранилищем данных."
    3.1.6, "Система должна обеспечивать возможность распределенной работы и удаленного доступа к ресурсам и объектам."
    3.1.7, "Система должна поддерживать работу в архитектуре Internet/Intrаnet."
    3.1.8, "Система должна предоставлять Web-интерфейс, который не требует установки клиентской части. Система должна поддерживать интернет-браузеры Google Chrome, Mozilla Firefox актуальных версий."
    3.1.9, "Система должна предоставлять возможность реализовывать пользовательские интерфейсы, используя HTML и/или JavaScript."
    3.1.10, "Система должна предоставлять комплект средств разработки (Software Development Kit - SDK), включая:
            * REST API;
            * способы авторизации: сессионная, по логину и паролю, по ключам;
            * события, возникающие в различных точках исполняемого кода при выполнении определённых условий;
            * очереди сообщений;
            * поддержку плагинов;
            * JavaScript интерпретаторы."
    3.1.11, "Система должна предоставлять возможность регулирования доступа к объектам в соответствии с правами пользователя."
    3.1.12, "Система должна предоставлять возможность создания, редактирования форм в визуальном редакторе форм."
    3.1.13, "Система должна предоставлять инструмент управления бизнес-процессами, поддерживающий нотацию BPMN."
    3.1.14, "Система должна предоставлять дизайнер бизнес-процессов. Создание и редактирование бизнес-процессов должно выполняться в рабочем пространстве дизайнера бизнес-процессов."
    3.1.15, "Система должна поддерживать версионность документов."

Требования к модулям Системы
----------------------------

.. csv-table::
    :widths: 2, 30

    3.2.1, "Система должна предоставлять модуль для формирования каталога обучающих курсов и профилей обучения."
    3.2.2, "Система должна предоставлять модуль для авторизации пользователей."
    3.2.3, "Система должна предоставлять модуль «Профиль» для просмотра информации о пользователе, в т.ч. о его статусе сертификации."
    3.2.4, "Система должна предоставлять модуль «Мои курсы», содержащий список обязательных и дополнительных (при наличии) курсов пользователя, их статусы и сроки прохождения."
    3.2.5, "Система должна предоставлять модуль «Все курсы», содержащий список всех курсов, как сгруппированным, так и общим списком."
    3.2.6, "Система должна предоставлять модуль «Библиотека», содержащий список дополнительной литературы."
    3.2.7, "Система должна предоставлять модуль «Обучающий курс» для просмотра и выполнения действий по выбранному курсу."
    3.2.8, "Система должна предоставлять модуль «Отчеты» для просмотра аналитических дашбордов."

Требования к модулю для формирования каталога обучающих курсов и профилей обучения
-----------------------------------------------------------------------------------

.. csv-table::
    :widths: 2, 30

    3.3.1, "Модуль должен поддерживать исполнение функций следующих ролей:
           * Менеджер."
    3.3.2, "Модуль должен позволять Менеджеру формирование каталога умений."
    3.3.3, "Модуль должен позволять Менеджеру формирование каталога обучающих курсов с привязкой к умениям, описания и содержимого по урокам, а также группировку курсов."
    3.3.4, "Модуль должен позволять Менеджеру формирование ролей для обучения, а также привязку к ним списка обязательных к прохождению курсов и списка дополнительной литературы."
    3.3.5, "Модуль должен позволять Менеджеру формирование профилей пользователей, назначение обязательных и дополнительных курсов, хранение истории их прохождения."
    3.3.6, "Модуль должен позволять Менеджеру формирование каталога тестовых вопросов, их группировку с привязкой к обучающему курсу, указание порогового уровня для успешного завершения."

Требования к навигации по Системе
--------------------------------------------

.. csv-table::
    :widths: 2, 30

    3.4.1, "Система должна отображать общую верхнюю панель для авторизованного пользователя со следующими кликабельными лейблами:
           * заголовок;
           * «Фамилия Имя» с прогрессом обучения."
    3.4.2, "Система должна формировать прогресс обучения из количества завершенных обязательных курсов пользователя."
    3.4.3, "Система должна отображать боковую панель со следующими пунктами:
           * «Профиль»;
           * «Мои курсы»;
           * «Все курсы»;
           * «Библиотека»."
    3.4.4, "Система должна отображать количество доступного контента в пунктах меню:
           * «Мои курсы» - суммарное количество обязательных и дополнительных курсов пользователя;
           * «Все курсы» - суммарное количество обучающих курсов в Системе;
           * «Библиотека» - суммарное количество дополнительной литературы для роли пользователя."
    3.4.5, "Система должна переходить в модуль «Все курсы» по нажатию на кликабельный лейбл-заголовок."
    3.4.6, "Система должна переходить в модуль «Профиль» по нажатию на кликабельный лейбл «Фамилия Имя» с прогрессом обучения."
    3.4.7, "Система должна отображать общую нижнюю панель со следующей статической информацией:
           * копирайт компании-разработчика;
           * телефон;
           * электронная почта;
           * логотип-ссылка на сайт компании."
    3.4.8, "Система должна предоставлять возможность выхода в модуль авторизации."
    3.4.9, "Система не должна отображать верхнюю, нижнюю и боковую панели в модулях авторизации и регистрации."
    3.4.10, "Система не должна отображать боковую панель в модуле «Обучающий курс»."
    3.4.11, "Система должна отображать анимированное изображение во время выполнения запросов к серверу."

Требования к модулю для авторизации
--------------------------------------------

.. csv-table::
    :widths: 2, 30
    
    3.5.1, "Модуль должен быть доступен только для неавторизованных пользователей."
    3.5.2, "Модуль должен отображать следующую форму ввода:
           * логин (поле ввода, обяз.);
           * пароль (поле ввода со скрытием вводимых символов, обяз.)." 
    3.5.3, "Модуль должен запустить процесс авторизации пользователя по нажатию на кнопку «Войти в систему»."
    3.5.4, "Процесс авторизации должен считаться успешным только при одновременном выполнении следующих условий:
           * в Системе должна существовать введенная учетная запись пользователя;
           * в Системе должны быть все модули из таблицы 3.2;
           * в Системе должен быть профиль авторизующегося пользователя."
    3.5.5, "Процесс авторизации должен считаться неуспешным во всех остальных случаях."
    3.5.6, "Модуль должен перенаправлять пользователя на страницу «Все курсы» в результате успешного процесса авторизации."
    3.5.7, "В случае отсутсвия профиля пользователя, модуль должен создать его, используя данные учетной записи этого пользователя."

Требования к модулю «Профиль»
-----------------------------------

.. csv-table::
    :widths: 2, 30

    3.7.1, "Модуль должен быть доступен только для авторизованных пользователей."
    3.7.2, "Модуль должен предоставлять возможность для отображения следующей информации:
           * фамилия, имя, отчество авторизованного пользователя;
           * фамилия, имя, отчество менеджера обучения;
           * роль;
           * подразделение;
           * офис;
           * статус сертификации."
    3.7.3, "Модуль должен формировать статус сертификации пользователя из количества пройденных обязательных курсов и общего количества обязательных курсов."
    3.7.4, "Модуль должен перенаправлять пользователя на страницу авторизации по нажатию на кнопку «Выйти»."
    3.7.5, "Модуль должен перенаправлять пользователя на предыдущую открытую страницу по нажатию на кнопку возврата «Назад»."

Требования к модулю «Мои курсы»
----------------------------------

.. csv-table::
    :widths: 2, 30

    3.8.1, "Модуль должен быть доступен только для авторизованных пользователей."
    3.8.2, "Модуль должен предоставлять возможность для отображения следующих списков обучающих курсов:
           * обязательные;
           * дополнительные."
    3.8.3, "Каждый элемент списка должен соответствовать одному обучающему курсу и должен содержать:
           * название курса;
           * автор курса;
           * обложка курса;
           * текущий статус прохождения курса;
           * срок завершения курса."
    3.8.4, "Модуль должен визуально отображать оставшееся время и признак просроченности для обучающих курсов в статусе «Обучение» и имеющимся сроком завершения."
    3.8.5, "Модуль должен визуально выделять элемент списка при наведении."
    3.8.6, "Модуль должен перенаправлять пользователя на страницу обучающего курса по нажатию на элемент списка."
    3.8.7, "Модуль должен перенаправлять пользователя на предыдущую открытую страницу по нажатию на кнопку возврата «Назад»."

Требования к модулю «Все курсы»
--------------------------------------

.. csv-table::
    :widths: 2, 30

    3.9.1, "Модуль должен быть доступен только для авторизованных пользователей."
    3.9.2, "Модуль должен предоставлять следующие варианты отображения списка обучающих курсов:
           * группами курсов (по умолчанию);
           * общим списком всех курсов."
    3.9.3, "Модуль должен позволять переключение между вариантами отображения с помощью настройки «Курсы подряд» (по умолчанию, она выключена)."
    3.9.4, "Каждый элемент блока в групповом списке должен соответствовать одной группе курсов и должен содержать:
           * название группы;
           * описание группы;
           * обложка группы;
           * количество курсов в группе."
    3.9.5, "Модуль должен сортировать группы курсов по убыванию количества курсов в них."
    3.9.6, "Модуль должен визуально выделять элемент блока в групповом списке при наведении."
    3.9.7, "Модуль должен перенаправлять пользователя на страницу со списком обучающих курсов, отфильтрованных по выбранной группе, по нажатию на элемент блока в групповом списке."
    3.9.8, "Каждый элемент блока в общем списке должен соответствовать одному обучающему курсу и должен содержать:
           * название курса;
           * автор курса;
           * обложка курса."
    3.9.9, "Модуль должен визуально выделять элемент блока в общем списке при наведении."
    3.9.10, "Модуль должен перенаправлять пользователя на страницу обучающего курса по нажатию на элемент блока в общем списке."
    3.9.11, "Модуль должен иметь адаптивную верстку под экраны по следующему алгоритму:
            * PC/Laptop - 2 элемента в групповом списке, 3 элемента в общем списке на одной строке;
            * Tablet/Mobile - 1 элемент в групповом списке, 2 элемента в общем списке на одну строку."
    3.9.12, "Модуль должен перенаправлять пользователя на предыдущую открытую страницу по нажатию на кнопку возврата «Назад»."

Требования к модулю «Библиотека»
---------------------------------------

.. csv-table::
    :widths: 2, 30

    3.10.1, "Модуль должен быть доступен только для авторизованных пользователей."
    3.10.2, "Модуль должен отображать список дополнительной литературы в виде файлов и/или ссылок, отфильтрованный по роли авторизованного пользователя."
    3.10.3, "Модуль должен перенаправлять пользователя в новой вкладке браузера на содержимое файла по нажатию на файл."
    3.10.4, "Модуль должен перенаправлять пользователя в новой вкладке браузера на сайт по нажатию на ссылку."
    3.10.5, "Модуль должен перенаправлять пользователя на предыдущую открытую страницу по нажатию на кнопку возврата «Назад»."

Требования к модулю «Обучающий курс»
----------------------------------------

.. csv-table::
    :widths: 2, 30

    3.11.1, "Модуль должен быть доступен только для авторизованных пользователей."
    3.11.2, "Модуль должен отображать страницу описания выбранного обучающего курса при первом открытии."
    3.11.3, "Модуль должен предоставлять возможность для отображения следующей информации на странице описания курса:
            * название курса;
            * автор курса;
            * обложка курса;
            * описание умения;
            * признак умения;
            * способ проверки и результат;
            * примечание;
            * кнопка «Добавить в Мои курсы»;
            * кнопка «Начать курс»."
    3.11.4, "Модуль должен отображать кнопку «Добавить в Мои курсы» при выполнении следующего условия:
            * обучающий курс должен отсутствовать в любом из списков «Моих курсов» пользователя."
    3.11.5, "Модуль должен добавлять обучающий курс в список дополнительных по нажатию на кнопку «Добавить в Мои курсы»."
    3.11.6, "Модуль должен отображать кнопку «Начать курс» только при одновременном выполнении следующих условий:
            * обучающий курс должен быть в любом из списков «Моих курсов» пользователя;
            * текущий статус курса - «Без статуса»."
    3.11.7, "Модуль должен открывать компонент выбора даты по нажатию на кнопку «Начать курс». В результате выбора даты обучающий курс должен:
            * сменить статус на «Обучение»;
            * принять установленный пользователем срок завершения."
    3.11.8, "Модуль должен отображать содержание курса."
    3.11.9, "Модуль должен формировать содержание курса из названий всех уроков и итогового задания."
    3.11.10, "Модуль должен перенаправлять пользователя на страницу описания выбранного урока по нажатию в содержании курса на урок."
    3.11.11, "Модуль должен предоставлять возможность для отображения следующей информации на странице описания урока:
             * название урока;
             * содержание урока;
             * встроенное видео Youtube;
             * файлы;
             * ссылки;
             * текстовые данные."
    3.11.12, "Модуль должен перенаправлять пользователя на страницу описания итогового задания по нажатию в содержании курса на итоговое задание."
    3.11.13, "Модуль должен предоставлять возможность для отображения следующей информации на странице описания итогового задания:
             * описание задания;
             * инструкция к выполнению задания;
             * файлы;
             * ссылки;
             * текстовые данные;
             * кнопка «Завершить курс»;
             * компонент тестирования."
    3.11.14, "Модуль должен отображать кнопку «Завершить курс» только при одновременном выполнении следующих условий:
             * обучающий курс должен быть в любом из списков «Моих курсов» пользователя;
             * текущий статус курса - «Обучение»;
             * к курсу не должно быть привязано тестирование;
             * курс не должен иметь атрибута «на проверке»."
    3.11.15, "Модуль должен запрашивать подтверждение действия по нажатию на кнопку «Завершить курс»:
             * при отрицательном ответе пользователь должен остаться на странице описания итогового задания;
             * при положительном ответе должно запуститься согласование менеджером обучения результата выполнения итогового задания."
    3.11.16, "Модуль должен автоматически сменить статус курса на «Обучение завершено» при условии, что менеджер обучения согласовывает результат выполнения."
    3.11.17, "Модуль не должен сменять статус курса при условии, что менеджер обучения отказывает в согласовании результата выполнения. При этом у курса должен сняться атрибут «на проверке»."
    3.11.18, "Модуль должен отображать компонент тестирования только при одновременном выполнении следующих условий:
             * обучающий курс должен быть в любом из списков «Моих курсов» пользователя;
             * текущий статус курса - «Обучение»;
             * к курсу должно быть привязано тестирование."
    3.11.19, "Компонент тестирования должен автоматически определять статус прохождения курса."
    3.11.20, "Модуль должен автоматически сменить статус курса на «Обучение завершено» при выполнении следующего условия:
             * должен быть набран пороговый уровень пройден тестирования."
    3.11.21, "Модуль не должен сменять статус курса при выполнении следующего условия:
             * не должен быть набран пороговый уровень пройден тестирования."
    3.11.22, "Модуль должен перенаправлять пользователя в новой вкладке браузера на содержимое файла по нажатию на файл."
    3.11.23, "Модуль должен перенаправлять пользователя в новой вкладке браузера на сайт по нажатию на ссылку."
    3.11.24, "Модуль должен перенаправлять пользователя по нажатию на кнопку возврата «Назад»:
             * на страницу описания курса со страниц описания уроков и итогового задания;
             * в предыдущий модуль со страницы описания курса."

Требования к модулю «Отчеты»
----------------------------------------

.. csv-table::
    :widths: 2, 30

    3.12.1, "Модуль должен быть доступен только для ограниченного количества авторизованных пользователей."
    3.12.2, "Список пользователей с правом доступа к каждому из отчетов должен определяться настройками самого отчета."
    3.12.3, "Модуль должен предоставлять следующие отчеты в виде аналитических дашбордов:
            * «Статистика обучения пользователей»;
            * «Статистика готовности обучающих курсов»."
    3.12.4, "Модуль должен обновлять данные в дашбордах в режиме реального времени."
    3.12.5, "Дашборд «Статистика обучения пользователей» должен содержать следующие визуализации:
            * метрики количества обучающихся и сертифицированных пользователей;
            * метрики количества назначенных и завершенных курсов;
            * распределение курсов по статусам, ролям и обучающимся пользователям."
    3.12.6, "Дашборд «Статистика готовности обучающих курсов» должен содержать следующие визуализации:
            * метрика общего количества обучающих курсов;
            * распределение курсов по авторам и статусу готовности."

