Вы находитесь на странице: 1из 18

ТЕХНИЧЕСКОЕ ЗАДАНИЕ

МОБИЛЬНОЕ ПРИЛОЖЕНИЕ, АДМИНИСТРАТИВНЫЙ WEB-ИНТЕРФЕЙС,


СЕРВЕРНАЯ ЧАСТЬ

Приложение по благотворительности

Москва 2016
Содержание

1. IT структура сервиса ...............................................................................................................3


2. Описание ролей пользователей ...........................................................................................3
3. Сценарии использования ......................................................................................................4
4. Автоматические процессы .....................................................................................................8
5. Модели данных ......................................................................................................................9
5.1 Пользователи...................................................................................................................9
5.2 Проекты ..........................................................................................................................10
5.3 Платежи..........................................................................................................................10
5.4 Достижения ...................................................................................................................11
6. Функциональные блоки .......................................................................................................12
7. Техническая архитектура .....................................................................................................12
7.1 Общие требования к бекенду ......................................................................................12
7.2 Мобильное приложение ..............................................................................................12
7.4 Административный web-интерфейс............................................................................12
7.5 Платежи..........................................................................................................................12
7.6 Управление жизненным циклом проекта ..................................................................13
7.7 Инфраструктура (DevOps) .............................................................................................13

2
1. IT структура сервиса

В техническую структуру сервиса входят следующие компоненты:

• Мобильное приложение для iOS и Android

• Административный web-интерфейс (добавление проектов, информации и прочее)

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


живающая ряд бизнес-процессов

• Сайт, представляющий проект (не входит в данное техническое задание)

2. Описание ролей пользователей

# Роли Функционал
1 Пользователи (П) • Внесение пожертвований на проекты

2 Модераторы (М) • Внесение проектов в БД


• Выбор проектов на сбор средств
• Закрытие проектов
3 Исполнители (И) • Внесение информации по проекту: новостей, фото-
графий и прочего
• Информирование модераторов о закрытии проекта
4 Администраторы (А) • Отслеживание работы сервиса
• Назначение новых модераторов,исполнителей
• Отслеживание распределения средств
• Тех. поддержка приложения

3
3. Сценарии использования

# Сценарий Описание Пользователи

1 Регистрация Пользователь открывает вкладку «зареги- П


стрироваться», заполняет необходимые
поля (См. модель пользователи)
2 Редактирование лич- Пользователь может редактировать лич- П
ных данных ные данные и просматривать свой профиль
3 Привязка и подтвер- При первом пожертвовании пользователь П
ждение банковской вводит данные карты, затем происходит те-
карты стовое списание, и банковская карта полу-
чает статус подтвержденной

4 Push-уведомления Приложение предлагает настроить от- П


правку push-уведомлений, которые будут
возникать при обновлении проектов для
пожертвования.
5 Иконка о новостях по Число в красном кружке равно количеству П
приложению (как обновленных проектов
при обновлении те-
лефона)
6 Оформление под- При заполнении анкеты на регистрацию П
писки Пользователь ставит галочку «Оповещать
по почте» - включено в регистрацию.

7 Просмотр проектов Пользователь заходит на главную страницу П


приложения, видит текущие 5 проектов. Он
может прочитать более подробно про каж-
дый из них, нажав на них (как «Афиша»)
8 Участие в роли Во- Пользователь перед совершением пожерт- П
лонтера вования может установить галочку в поле
«Участвовать в проекте в роли волонтера»,
после чего, он будет прикреплен к исполни-
телю проекта, с использованием контакт-
ных данных, указанных при регистрации
9 Платеж Пользователь может совершить пожертво- П
вание в размере стандартной суммы (300
руб.), но не более одного на один проект.
Пользователь совершает платеж с привя-
занной карты проектов.
10 Просмотр профиля Пользователь может перейти в свой про- П
филь посмотреть интересующую его ин-
формацию
11 Редактирование про- Пользователь может в профиле выбрать
филя опция редактировать. Редакитровать
можно следующие данные:

4
# Сценарий Описание Пользователи

• Личные данные
• Данные банковских картам (добав-
ление, удаление карты)

12 Просмотр статистики В собственном профиле Пользователь мо- П


жет посмотреть информацию о проектах,
на которые он пожертвовал, об активных
проектах и о завершенных проектах. Поль-
зователь может посмотреть всю статистику
(см. Модель Проекты)

13 Распространение ин- В собственном профиле пользователь мо- П


формации о проек- жет настроить автоматическую отправку
тах в социальных се- шаблонного сообщения в социальные сети
тях выбирает одну из списка:
• Vkontakte;
• Odnoklassniki;
• Facebook;
• Twitter.
14 Использование Пользователь может отправить сообщение П
формы обратной об ошибке или проблеме через форму об-
связи ратной связи, с указанием темы на выбор
из следующего списка:
• Некорректная работа приложения;
• Предложение благотворительного
проекта;
• Новые идеи по работе приложения;
Форма присылает сообщение на настроен-
ный e-mail
15 Ручная публикация Модератор вносит информацию по М, А
проектов в общую БД найденным проектам в Базу данных, запол-
проектов няя все необходимые поля (см. Модель
(WEB) Проект). При этом, если модератор не сразу
вносит всю информацию по проекту, он мо-
жет сохранить его как черновик.
16 Изменение статусов Модератор самостоятельно меняет статус М
проекта зарегистрированных им проектов на «Но-
(WEB) вый», нажав кнопку «Записать и опублико-
вать»

5
# Сценарий Описание Пользователи

17 Голосование Модераторам приходит оповещение о М


необходимости выбрать проекты на следу-
ющую неделю (система устраивает голосо-
вание).
Модераторы голосуют по следующим пра-
вилам:
• 1 голос на 1 проект;
• Модератор не может вносить про-
екты в БД, если пропустил два голо-
сования подряд;
• У каждого модератора есть 5 голо-
сов каждую неделю.
• Модератор не может голосовать за
свой проект

Проекты с наибольшим количеством голо-


сов изменяют статус с «Новый» на «Уточне-
ние актуальности».
18 Подтверждение ак- Модераторы, после получения подтвер- М
туальности проекта ждения актуальности проекта, и возможно-
сти его реализации, подтверждают это,
нажав на кнопку «Подтвердить актуаль-
ность».

19 Модерация проекта Модератор имеет возможность редактиро- М, А


(WEB) вать любой проект
• Загрузка\удаление фотографий по
проекту
• Загрузка\изменение\удаление сметы
по проекту
• Изменение\удаление описания проекта
• Закрытие проекта, после завершения
исполнителем.
20 Выбор направлений, Исполнителе в своём профиле в режиме
по которым исполни- редактирования личных данных выбирают
тель будет исполнять направления, по которым они будут выпол-
проекты нять проекты, выбрав соответствующие ва-
рианты

21 Назначение испол- Исполнители назначаются системой авто- И


нителя матически в следующем составе:
• Один куратор

6
# Сценарий Описание Пользователи

• Три волонтера
Система отправляет уведомление исполни-
телю о том, что он выбран для реализации
конкретного проекта
22 Ведение проекта Исполнитель может зайти в проект, в кото- И
рый он назначен, и вносить изменения в
раздел «Исполнение» описание по ходу ре-
ализации проекта, добавлять новости и от-
четность
23 Создание нового Администратор может дать права админи- А
пользователя адми- стративного назначения (Модератор, Ис-
нистративного полнитель, Администратор) пользовате-
назначения (М, А, И) лям. Необходимо, что бы пользователь был
(WEB) зарегистрирован в системе
24 Возврат средств По окончании 7 дней, в случае если проект А
не собирает необходимые средства, статус
проекта автоматически изменяется на
«Возврат средств». При этом пожертвован-
ные средства возвращаются на виртуаль-
ные счета пользователей. С них они могут
жертвовать на другие проекты
25 Изменение\удале- Администратор может изменять права до- А
ние модератора\ис- ступа для модераторов и исполнителей, а
полнителя также удалять их из системы

26 Удаление проектов Администратор может полностью удалять А


данные по поектам, не поступившим в реа-
лизацию, но с истекшим сроком исполне-
ния из БД
27 Настройка жизнен- Администратор выполняет настройку пери- А
ного цикла проектов одов голосования (4 дня, с утра Четверга по
утро Понедельника), количества голосов у
модераторов (5 голосов) и сроков сбора
средств на проекты (7 дней)

7
4. Автоматические процессы

# Процесс Описание
1 Автоматическое В установленный администратором период модераторам при-
управление жиз- ходит уведомление на проведение голосование по проектам.
ненным циклом Модераторы голосуют за проекты, которые они хотели бы ви-
проекта деть на следующий период по сбору средств.
Система подсчитывает голоса, и к началу следующего периода
сбора средств она меняет статус на «Сбор средств» и отобра-
жает их на соответствующей странице.
По окончанию периода сбора средств система переводит про-
ект в статус «Средства собраны», либо «Средства не собраны».
2 Платежи Существует две сущности: платеж и пожертвование. Платеж –
непосредственный перевод с банковской карты. Пожертвова-
ние – зачисление средств на счет проекта. Они разделены, т.к.
пожертвование может вернуться, если проект не наберет нуж-
ную сумму.
При реализации сценария пожертвования сначала создается
платеж, деньги зачисляются на счет пользователя, затем по-
жертвование, когда деньги переводятся со счета пользователя
на счет проекта.
При реализации сценария пожертвования в системе ведется
следующая информация: (1) дата пожертвования, (2) ФИО пла-
тельщика, (3) номер банковской карточки (4) проект, на кото-
рый он пожертвовал сумму, (5) сумма пожертвования,
3 Изменение стату- Модератор самостоятельно меняет статус зарегистрирован-
сов ных им проектов на «Новый»

При отборе проектов в ходе голосования проекты, опублико-


ванные на сбор средств автоматически изменяют статус с «Но-
вый» на «Уточнение актуальности»

После того, как модераторы подтверждают актуальность вы-


бранных проектов, статус на утро понедельника автоматиче-
ски меняется на «Идет сбор средств»

При сборе необходимой суммы средств для реализации про-


екта меняются статус: с «Идет сбор средств» на «Средства со-
браны»

При назначении команды Исполнителей автоматически изме-


няется статус: с «Средства собраны» на «Идет исполнение»

Модераторы, при выполнении проекта изменяют статус: с


«Идет исполнение» на «Выполнен»

8
# Процесс Описание
Модераторы, при выполнении проекта изменяют статус: с
«Идет исполнение» на «Не выполнен»

Если необходимая сумма не собрана, то автоматически меня-


ется статус с «Средства не собраны» на «Закрыт»

4 Закрепление во- В случае, если на проект заявились волонтеры, установившие


лонтеров за ис- галочку в поле «Учувствовать в проекте в роли волонтера»,
полнителями данные пользователей отправляются Исполнителю.

5 Обновление про- По факту голосования, подтвержденные проекты каждый по-


ектов недельник к 8:00 изменяют статус с «Уточнение актуальности»
на «Идет сбор средств».

5. Модели данных

* – обязательное поле

5.1 Пользователи
# Модель данных Описание

5.1.1 Базовая модель • Фамилия*1


• Имя*
• Отчество
• E-mail*
• Номер телефона*
• Аватар
5.1.2 Пользователь • Пол*
• Дата рождения*
• Номер карты*
• CVV код*
• История пожертвований*
• Выбранные категории*

9
# Модель данных Описание

• Сумма на счете
• Пожертвования пользователя

5.1.3 Модератор • Проекты, созданные модератором
5.1.4 Администратор • Нет специальных полей

5.1.5 Исполнитель • Проекты исполнителя

5.2 Проекты
# Модель данных Описание

5.2.1 Проект • Наименование проекта*


• Категория (Дети, Пожилые люди, Люди с ограничен-
ными возможностями, Животные) *
• Местоположение*
• Дата (Внесения, Открытия сбора средств, Закрытия
сбора средств, Открытия проекта, Закрытия проекта)
• Сумма сбора*
• Сложность проекта* (?)
• Пол, в случае, если есть возможность указать.
• Статус* (Новый, сбор средств, средства собраны, идёт
исполнение, выполнен, средства не собраны, закрыт)
• Описание (включая прикрепленные файлы)
• Обновления
• История пожертвований
• История изменений проекта
• Модератор
• Куратор
• Исполнители
• Функции:
o Посчитать текущую сумму (пожертвовано,
осталось)
o Посчитать кол-во пользователей, которые
пожертвовали
5.2.2 Обновление • Текст
• Прикрепленные файлы
• Автор

5.3 Платежи
# Модель данных Описание

5.3.1 Платеж • Данные карты


• Сумма
• Пользователь
10
• Дата
5.3.2 Пожертвование • Сумма
• Пользователь
• Дата
• Проект
5.4 Достижения
# Модель данных Описание

5.4.1 Мастер - пользова- Пользователь, который потратил меньше минуты на со-


тель вершение пожертвования, с момента входа в приложе-
ние
5.4.2 Добрая душа Пользователь, пожертвовавший 5 раз подряд
5.4.3. Любитель живот- Пользователь, пожертвовавший более 6 раз на проекты
ных категории «Животные»
5.4.4. Бабушкин угодник Пользователь, пожертвовавший более 6 раз на проекты
категории «Пожилые люди»
5.4.5. Спасатель детей Пользователь, пожертвовавший более 6 раз на проекты
категории «Дети»
5.4.6. Всем пандусы, и Пользователь, пожертвовавший более 6 раз на проекты
удобные коляски категории «Люди с ограниченными способностями»
5.4.7. Помощник года Пользователь, пожертвовавший в каждом месяце
5.4.8. Везде успел Пользователь, пожертвовавший на проекты по каждой
категории
5.4.9. Сердцеед Пользователь мужского пола пожертвовал более 4 раз
на проекты, в рамках которых оказывается помощь жен-
щинам
5.4.10. Феминистка Пользователь женского пола пожертвовал более 8 раз на
проекты, в рамках которых оказывается помощь женщи-
нам

11
6. Функциональные блоки
# Блок Описание

1 Мобильное приложе- Реализует сценарии, относящиеся к пользователю


ние
2 Административный Реализует сценарии внутренних пользователей (Адми-
web-интерфейс нистраторов, Модераторов и Исполнителей)
3 Аутентификация поль-
Поддержка двухфакторной аутентификации с возмож-
зователей ностью регистрации различными путями (подробнее
ниже)
4 Платежи Реализация соответствующего процесса. Также подра-
зумевает связь с платежной системой
5 Управление жизнен- Реализация соответствующего процесса
ным циклом проекта

6 Инфраструктура Решения задачи развертывания и поддерживания ра-


(DevOps) боты приложения

7. Техническая архитектура
7.1 Общие требования к бекенду
Основан на стеке:

• Django

• PostgreSQL

• Django Rest Framework

• Celery

• Docker

7.2 Мобильное приложение


Допустимы два варианта:

• Полностью нативные приложения для обоих платформ;

• Различные альтернативы на web-основе (Hybrid apps, React JS и прочее).

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

API необходимо реализовать на Django Rest Framework.

7.4 Административный web-интерфейс


Необходимо реализовать полноценную аутентификацию, включая аутентификацию через e-mail,
через социальные сети (Oauth) и двухфакторную

7.5 Платежи
Необходима интеграция с платежной системой, например, с робокассой. У них должен быть API,
который можно использовать из нашего сервиса.

12
7.6 Управление жизненным циклом проекта
Необходимо запускать фоновые задачи через Celery с возможностью настраивать их параметры
через административную панель. Обязательна запись логов.

7.7 Инфраструктура (DevOps)


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

8. Экраны приложения
# Экран Описание Фото экрана
1 Вход Назначение:
Пользователь видит первый раз, когда
заходит в приложение

Функционал:
1. Окно для ввода логина
2. Окно для ввода пароля
3. Кнопка «Вспомнить»
4. Кнопка «Войти»
5. Кнопка «Регистрация»
6. Кнопка «Пропустить»
7. Под логотипом указывается
сколько новых проектов было за-
гружено и сколько дней назад
2 Регистрация Назначение:
Пользователь видит экран, когда нажи-
мает «Регистрация на экране входа».
Экран содержит варианты регистрации

Функционал:
1. Кнопка «зарегистрироваться че-
рез facebook»
2. Кнопка «через twitter»
3. Кнопка «Электронная почта»
4. Кнопка «Выйти» из экрана

13
3 Профиль Назначение:
Пользователь видит настройки своего
профиля. Содержит три вкладки: (1) ос-
новные, (2)уведомления, (3) контакты

Функционал:
1. Кнопка «Редактировать про-
филь»
2. Кнопка «Изменить пароль»
3. Кнопка «Аккаунты социальных
сетей»
4. Переключатель «Звуковые уве-
домления»
5. Переключатель «СМС уведомле-
ния»

4 Платежная ин- Назначение:


формация Пользователь может указать данные
своей карты для осуществления пла-
тежа

Функционал:
1. Поля для ввода данных по карте
2. Кнопка «добавить карту»

5 Главная стра- Назначение:


ница Пользователь видит экран когда:
1. Вошел в приложение,
2. Нажал «Пропустить» на экране
входа
3. Когда уже ранее регистриро-
вался и вводил свои данные

Функционал:
1. Swipe по проектам, которые
опубликовало приложение (пять
проектов в неделю)
2. Кнопка «Подарить» (пожертво-
вать 300руб.)
3. При нажатии на экран, пользова-
тель видит детальную информа-
цию по проекту
4. Указано сколько нужно собрать и
сколько уже собрано
14
6 Подтверждение Назначение:
оплаты При нажатии кнопки «Подарить» поль-
зователь должен подтвердить свое
намерение. Видит экран с платежной
информацией

Функционал:
1. Поля для ввода данных по кар-
точке (сохраняет ранее введен-
ные данные)
2. Кнопка «Подарить»
7 Подтверждение Назначение:
актуальности Для подтверждения актуальности
проекта проекта, у модератор выводится спе-
циальный экран, на котором им необ-
ходимо выбрать актуальные проекты

Функционал:
1. Название проекта с фотогра-
фией, с возможность выделить
несколько проектов, нажав на
картинку проекта
2. Кнопка «Подтвердить актуаль-
ность»

15
8 Сам проект Назначение:
Пользователь видит экран с детальной
информацией при нажатии на проекте

Функционал:
1. Содержит информацию сколько
собрано и сколько нужно со-
брать, количество пожертвовав-
ших
2. Кнопка «Подарить»
3. Кнопка «Комментарии», где со-
держится информация по коли-
честву комментариев
4. Содержит три вкладки: (1) Опи-
сание, содержит информацию с
описанием проекта, Фото в од-
ном окне, можно просматривать
swipe; содержит карту с адресом
проекта (2) реализация, где со-
держится вся информация по
ходу реализации проекта, загру-
жаемая Исполнителями (3) ис-
полнители

16
9 Комментарии к Назначение:
проекту Пользователь видит все комментарии
(подгружаются при прокрутке) других
пользователей относительно данного
проекта и может оставить свой коммен-
тарий

Функционал:
1. Содержит информацию по ком-
ментариям других пользовате-
лей
2. Содержит поле для ввода
информации
3. Кнопка «Отправить»
10 Задать вопрос Назначение:
Пользователь может отправить сообще-
ние

Функционал:
1. Содержит поле для ввода инфор-
мации
2. Кнопка «Отправить»
3. Выпадающий список с категори-
ями вопроса

11 Меню пользова- Назначение:


теля Пользователь видит свое меню

Функционал:
1. Кнопка «Проекты»
2. Кнопка «Наши проекты»
3. Кнопка «Задать вопрос»
4. Кнопка «О нас»
5. Кнопка «Юридические доку-
менты»

17
12 Статистика Назначение:
Пользователь видит статистику по всем
проектам

Функционал:
1. Содержит график по количеству
пожертвоваший в разрезе
недель
2. Содержит информацию по всем
пожертвовавшим на проект
пользователям

13 О нас Назначение:
Пользователь видит информацию по
проекту Project-C

Функционал:
Содержит поле для ввода информации

18