Разработка Веб-системы обработки обращений жителей города Артёма
Техническое описание системы.
Основой работы веб-приложения является платформа ASP.NET под управлением сервера IIS.
Для хранения данных используется Microsoft SQL Server.
Приложение написано на языке программирования C# с использованием фреймворка ASP.NET MVC.
Для связи приложения с базой данных используется фреймворк Entity Framework 6.
Представления данных написаны с использованием движка Razor и частичным использованием чистого HTML, CSS. Базой для внешнего вида системы является библиотека Bootstrap 3.
Связь с внешними системами осуществляется через ASP.NET Web API c использованием библиотек Newtonsoft.Json и RestSharp.
Общая архитектура системы сконструирована с использованием паттерна проектирования MVC (Model – View - Controller) с некоторыми включениями паттерна MVVM (Model – View - ViewModel), реализован паттерн доступа к данным Репозиторий.
Для авторизации в приложении используется собственная реализация Membership API.
Описание логики.
Ключевыми понятиями приложения являются:
- Сырые данные (посты, звонки и тд.).
- Обращение.
- Задача.
- Пользователи
Сырые данные поступают в систему через внутреннее API. Есть следующие варианты поступления данных:
- Обращение через форму на сайте Artem IRC (http://artemirc.ru/).
- Пост в инстаграме.
- Аудиообращение с расшифровкой звонка.
Посты из инстаграма в систему поступают благодаря связке Парсер -> API приложения.
Парсер с определённой периодичностью забирает посты по указанным в системе пабликам Instagram, сравнивает их с уже существующими в системе и записывает их в БД системы. После записи парсер вызывает метод API для обработки свежих постов.
На основании сырых данных формируются обращения.
Обращение – сущность, которая хранит в себе информацию от пользователя (текст, аудио, расшифровку звонка, прикреплённые изображения и тд.), дату создания, источник обращения, флаг и дату обработки, а также флаг просмотра.
Список обращений можно фильтровать по дате создания, источнику и флагу обработки.
Благодаря флагу просмотра реализовано графическое отображение факта просмотра обращения кем-то из пользователей. Благодаря этому в списке обращений наглядно проведено разделение новых и уже просмотренных обращений.
На основании обращений можно создавать задачи.
Задача – сущность, которая хранит в себе дату создания, дату дедлайна, идентификатор пользователя, на которого назначена задача, описание, комментарий, флаг и дату обработки, внутреннее состояние, ссылку на обращение (если задача была создана на его основании).
Список задач можно фильтровать по дате создания, дате дедлайна, пользователю, состоянию задачи. Также реализован поиск по названию задачи.
Состояние задачи – понятие, которое включает в себя следующие варианты состояния задачи:
- В работе (задача создана и обрабатывается)
- Готова (задача выполнена)
- Просрочена (задача не выполнена до достижения даты дедлайна)
При создании задачи на основании обращения, в текст описания задачи автоматически подставляется текст из обращения. Форма редактирования текста выполнена с использованием WYSIWYG-редактора RichText, который поддерживает HTML-форматирование, эмодзи и тд.
Также, в случае наличия у обращения изображений из Instagram, они подтягиваются в форму работы с задачей.
Пользователь – сущность, которая хранит в себе данные об исполнителе / пользователе системы. Они разделены на четыре роли:
- Администратор
- Менеджер
- Пользователь (исполнитель)
- Task Observer
Администратор – роль с наибольшим количеством доступного функционала, в т.ч. редактирование других пользователей, добавление новых пабликов для парсера и тд.
Менеджер – роль для управления исполнителями. Видит все обращения и задачи, может их создавать, редактировать и удалять.
Пользователь (исполнитель) – не видит обращений, не может создавать задачи, видит в списке только назначенные на него задачи.
Task Observer – отдельная особая роль, которая позволяет просматривать все задачи и создавать новые, но для неё недоступен остальной функционал системы.
Список исполнителей синхронизируется со списком поставщиков услуг на сайте ArtemIRC (http://artemirc.ru/).
Выполненные работы
- Разработка Технического Задания
- Парсинг Instagram (10 пабликов)
- Адаптивная верстка под мобильные устройства
- Программирование веб-сервиса