Задание

В рамках выполнения практической части курса вами будет разработан сквозной пример: приложение «Досудебное обжалование для органов исполнительной власти» (модуль ИС для государственных структур).

Первая часть практического задания будет посвящена освоению базовых технологий, таких как C#, базы данных, клиентские технологии и т.п., вторая часть будет включать изучение возможностей платформы Flexberry для эффективного создания приложений.

Общее описание предметной области

Заявитель имеет право подать жалобу на действия или бездействие органов власти, оказывающие государственные услуги. Например, по месту оказания услуги отказали в приеме документов или в предоставлении услуги, нарушили сроки предоставления услуги или требуют дополнительные документы или оплату.

Гражданин составляет жалобу в государственном органе власти (ведомстве). Жалоба составляется в том же самом ведомстве, которое оказывало государственную услугу. Оформленная жалоба отправляется в Федеральную государственную информационную систему государственного обжалования (далее – ФГИС ДО). ФГИС ДО обеспечивает процесс досудебного (внесудебного) обжалования решений и действий (бездействия), совершенных при предоставлении государственных и муниципальных услуг.

Требуется создать отдельный модуль приложения для государственного органа власти (ведомства). Данный модуль должен покрывать потребность в фиксации информации о жалобах граждан на оказание государственных услуг. Известно, что:

  • жалоба всегда имеет автора (заявителя);
  • составляется на конкретную государственную услугу и ведомство ее оказывающее;
  • у каждого ведомства имеется свой набор оказываемых государственных услуг;
  • к жалобе могут быть прикреплены документы;
  • жалоба должна обрабатываться специалистом. Специалист фиксирует дату и номер жалобы, а также следит за статусом обработки жалобы.

Технические требования:

  • Приложение реализуется в виде ASP.NET WebForms-приложения.
  • Данные хранятся в БД Postgres.

Практическое задание №1 - Серверная разработка (C#, .NET, ASP.NET)

Для реализации потребуется:

  • Microsoft Visual Studio 2017 или новее
  • Git for Windows

Задание. Часть 1.

Требуется реализовать алгоритм генерации уникального идентификатора жалобы для ФГИС ДО, исходя из следующих входных данных:

  • Идентификатор ведомства. Строго 11 цифр. Например, 10000000959 (Агентство по делам архивов).
  • Дата приема жалобы.
  • Номер жалобы. Порядковый номер жалобы в модуле приложения. Каждый год счетчик обнуляется.

Алгоритм формирования данного уникального кода нужно придумать самостоятельно. Код должен быть построен таким образом, что по нему должна быть реализована потенциальная возможность вычислить жалобу в модуле приложения (из известного списка), не храня соответствия между жалобой и кодом ФГИС ДО. К алгоритму следует в комментарии приложить описание выбранного варианта работы алгоритма, т.к. допустимы различные варианты формирования данного кода.

Реализацию следует сделать в виде .net-библиотеки и подготовить модульные тесты для неё, продемонстрировать процент покрытия кода модульными тестами (чем больше, тем лучше).

Задание. Часть 2.

Реализовать простое ASP.NET WebForms-приложение (на данном этапе без БД), которое содержит компоненты (ascx-контролы), реализующиие:

  1. Логику ввода поискового запроса уникального кода и использование библиотеки из предыдущего пункта для выдачи информации о найденной жалобе (поле для ввода значения, кнопка, блок с отображением результатов). При этом вместо идентификатора ведомства должно отображаться его наименование.
  2. Логику получения уникального кода по номеру жалобы, дате приема жалобы, идентификатора ведомства (поля для ввода значений, кнопка, блок с отображением результатов).

Предоставление результатов выполнения работы на проверку

Реализованное решение (Visual Studio Solution) полностью разместить в репозитории на GitHub (решение должно компилироваться и запускаться). Ссылку на репозиторий предоставить преподавателям курса.

Практическое задание №2 - Клиентская разработка (HTML, CSS, JS, jQuery)

Для реализации потребуется:

  • Редактор кода для клиентской разработки: Visual Studio Code, Atom, Sublime Text и т.п.
  • Git for Windows

Задание

С использованием возможностей HTML, CSS, JS, jQuery сверстать форму, которая должна отображать актуальное состояние жалоб по городу в разрезе ведомств.

Требования к форме:

  1. На форме должны отображаться наименования ведомств (минимум 3).
  2. Под наименованием каждого ведомства должен отображаться свой список жалоб (количество записей в списке от 0 до N).
  3. Должна быть возможность просмотреть полную информацию о жалобе:

    • Номер жалобы
    • Дата приема
    • Заявитель (ФИО)
    • Статус (Поступила; В обработке; Перенаправлена; Обработана; Закрыта)
  4. Должна быть возможность переместить жалобу из одного ведомство в другое.
  5. Жалобы со статусом «Поступила» и «Перенаправлена» выделять различными цветами.
  6. У каждого ведомства должен отображаться комплексный статус. Комплексный статус складывается из статусов всех жалоб:

    • Если есть хотя бы одна жалоба со статусом «Поступила» и нет жалоб со статусом «Перенаправлена», то отображать комплексный статус = «Новое».
    • При переносе жалобы в другое ведомство изменять ее статус на «Перенаправлена», комплексный статус ведомства должен измениться на «Срочное».
  7. Жалобы со статусами «Обработана», «Закрыта» перемещать нельзя.

Предоставление результатов

Реализованный проект разместить в репозитории на GitHub в виде встроенных страниц GitHub Pages, позволяющих просматривать готовый результат. Ссылку на репозиторий и опубликованный таким образом проект предоставить преподавателям курса.

Практическое задание №3 - Базы данных

Для реализации потребуется:

  • СУБД PostgreSQL
  • Приложение pgAdmin 4.x для администрирования БД PostgreSQL
  • Git for Windows

Задание

Для указанной предметной области реализовать базу данных, заполнить базу скриптами (минимум по 5 записей на таблицу). Реализовать скрипты по созданию констрейнтов, индексов. Приложить скрипты создания БД и заполнения, бэкап БД.

Подготовить SQL-скрипты для получения следующей информации:

  1. Вывести список ведомств с указанием количества принятых жалоб за весь прошлый год. Список должен быть отсортирован по наименованию ведомства (по возрастанию).
  2. Вывести рейтинг ведомств по среднему времени работы с жалобой. Работа с жалобой считается завершенной, если зафиксирован текст решения, проставлена дата подписания решения, статус = Закрыта.
  3. Вывести топ N самых загруженных ведомств за указанный промежуток времени. Загруженность ведомства складывается из количества жалоб со статусами Поступила, В обработке, Перенаправлена.
  4. Вывести по одному сотруднику из каждого ведомства (ФИО, должность, телефон, наименование ведомства), имеющих больше всех обработанных жалоб за прошлый месяц.
  5. Вывести процентное соотношение всех поданных жалоб утром (с 9 до 13) и днем (с 14 до 18) за прошедшие сутки.

Предоставление результатов

Реализованные скрипты закоммитить в GitHub-репозиторий. Ссылку на репозиторий предоставить преподавателям курса.

Практическое задание №4 - Проектирование ИС

Для реализации потребуется:

  • Flexberry Designer (вин-версия)

Задание

Нарисовать UML-диаграммы для обозначенной предметной области. Состав диаграмм определяется самим слушателем курсов, но должен обеспечивать полноценное описание предметной области.

Предоставление результатов

Результатом работы является выгруженная в формате CRP стадия из Flexberry Designer. Стадию (файл с расширением *.CRP) следует закоммитить в репозиторий на GitHub, ссылку предоставить преподавателям курса.

Практическое задание №5 - Объектный дизайн и генерация приложений

Для реализации потребуется:

  • Flexberry Designer (вин-версия)
  • Microsoft Visual Studio 2017 или новее
  • СУБД PostgreSQL
  • Git for Windows

Задание

Выполнить объектный дизайн и генерацию ASP.NET-приложения для описанной предметной области. В качестве основы использовать реализованные ранее UML-модели. Генерация приложения и БД должна быть выполнена средствами Flexberry Designer приложение должно соответствовать требованиям и быть полностью работоспособным. Представления должны быть качественно настроены, подписи к классам и атрибутам на формах должны быть адекватными. Перечень форм и атрибутивный состав должны соответствовать предметной области и покрывать все требуемые бизнес-функции.

Предоставление результатов

Сгенерированное приложение и скрипты создания БД следует выложить в репозиторий на GitHub. Предоставить преподавателям ссылку на репозиторий.

Практическое задание №6 - Разработка бизнес-логики приложений

Для реализации потребуется:

  • Flexberry Designer
  • Microsoft Visual Studio 2017 или новее
  • СУБД PostgreSQL
  • Git for Windows

Задание

В сгенерированном при помощи Flexberry Designer приложении требуется реализовать следующую бизнес-логику.

  1. Реализовать бизнес-сервер, который будет использовать .net-библиотеку для проставления уникального идентификатора ФГИС ДО для новой жалобы.
  2. Добавить хранимое поле в класс ведомств, которое будет содержать количество жалоб в данном ведомстве. Перевычисление этого поля реализовать в бизнес-сервере.
  3. Реализовать бизнес-сервер, который будет проверять создание жалоб только в период работы ведомства (с 9 до 13, с 14 до 18). Вне режима работы ведомства создание жалоб запрещено.
  4. Реализовать бизнес-сервер, который будет проверять, что жалоба на услугу от заявителя уже была зафиксирована (не создается дублирующая запись).
  5. Добавить не хранимое поле в класс жалоб, которое будет составлять строку, содержащую текущий статус жалобы, дату приема, ФИО заявителя, телефон заявителя (если имеется), email заявителя (если имеется).

Предоставление результатов

Доработанная бизнес-логика должна быть включена в разрабатываемое приложение и закоммичена в соответствующий репозиторий. Ссылка на репозиторий предоставляется для проверки преподавателям курса.

Практическое задание №7 - Разработка UI-логики приложения

Для реализации потребуется:

  • Microsoft Visual Studio 2017 или новее
  • СУБД PostgreSQL
  • Редактор кода для клиентской разработки: Visual Studio Code, Atom, Sublime Text и т.п.
  • Git for Windows

Задание

Привязать реализованные ранее ascx-компоненты к данным из БД.

Реализовать интеграцию формы для переноса жалоб из одного ведомства в другое с бизнес-логикой приложения. На форме для элементов управления с выбором должны браться из БД (через ORM и Lookup) ведомства, сотрудники.

Требуется настроить красивый внешний вид для всех форм приложения. Улучшить визуальную тему оформления. Реализовать ярлыки на рабочем столе приложения для быстрого доступа к часто используемым функциям.

Реализовать дополнительные формы, которые будут выводить результаты выполнения запросов из задания по БД.

Предоставление результатов

Доработанная UI-логика должна быть включена в разрабатываемое приложение и закоммичена в соответствующий репозиторий. Ссылка на репозиторий предоставляется для проверки преподавателям курса.

Практическое задание №8 - Функциональные подсистемы Flexberry

Для реализации потребуется:

  • Flexberry Designer
  • Microsoft Visual Studio 2017 или новее
  • СУБД PostgreSQL
  • Git for Windows

Задание

1. Для реализованного приложения настроить подсистему полномочий. Создать следующие роли:

  • Администратор. Администратору доступны все операции над всеми объектами, включая работу:

    • со списком пользователей
    • со списком ролей;
    • со списком классов;
    • со списком аудита (см. п.3).

Удаление жалоб доступно только Администратору.

  • Руководитель. Пользователю с ролью Руководитель доступны все операции с данными, кроме настройки пользователей, ролей, классов, аудита, удаления жалоб.
  • Оператор. Оператор может работать только с теми жалобами, которые относятся к его ведомству. Оператор не может просматривать список сотрудников чужого ведомства. Оператор может просматривать список ведомств, но не имеет прав на редактирование записей.
  • Все пользователи. Доступен только список жалоб в режиме чтения.

2. Авторизация на основе форм.

3. Настроить подсистему аудита. В разрабатываемом приложении все изменения объектов данных должно фиксироваться в подсистеме аудита. В навигационное меню следует добавить формы аудита, которые должны показываться только администраторам.

Предоставление результатов

Доработанное приложение должно быть закоммичено в соответствующий репозиторий. Дополнительно в репозиторий должны быть добавлены SQL-скрипты, которые нужно выполнить для функционирования приложения с подсистемой полномочий и аудита. Ссылка на репозиторий предоставляется для проверки преподавателям курса.