LIL-57, LIL-59, LIL-62 docs added

remotes/origin/hasaccess
nikita 8 years ago
parent c3fc358728
commit a9f23be3a7
  1. 61
      docs/api.md
  2. 4
      docs/index.md
  3. 46
      docs/overview.md
  4. 18
      docs/paymentwall.md
  5. 20
      docs/roles.md

@ -0,0 +1,61 @@
#REST API
##Авторизация
HTTP заголовок: Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Токен возвращается в ответ на `/auth`
##Статус коды ответов
Успех: 2ХХ Ошибка сервера: 5ХХ Ошибка входящего запроса (включая ошибки бизнес-логики): 4ХХ В ответе возвращается тип ошибки {"error": "E_VALIDATION"}
##Общие ошибки:
* E_VALIDATION Ошибка входящих параметров
* E_SESSION_EXPIRED Сессия истекла, пользователя нужно направить на форму авторизации
* E_TOKEN Неправильно сформирован токен
* E_AUTH Неправильный логин или пароль
* E_NOT_FOUND Сущность не найдена
* E_ACCESS Не достаточно прав для просмотра
##Формат ответа
Ответ от сервера возвращается в JSON. Значение null описывает не установленное значение имеющегося поле. В UI должно выводиться как «Не установлено», прочерк и тп, в инпутах каститься в пустую строку
##Работа с файлами
Работа с файлами происходит единообразно в данных формы (multipart/form-data):
* загрузка/обновление: POST/PUT {param: text, ..., file: file}
* удаление: PUT {param: text, ..., file: ''}
* обновление без изменения файла: PUT {param: text, ...}
## CRUD endpoints
Каждая из сущностей, представленных ниже, имеет стандартные точки доступа:
* `GET /entity` Получить список всех сущностей
* `POST /entity` Добавить новую сущность
* `GET /entity/:id` Получить подробную информацию о сущности
* `PUT /entity/:id` Обновить информацию
* `DELETE /entity/:id` Удалить сущность
### User
Управление пользователями
### Course
Управление курсами
### Lesson
Управление уроками курсов. Является вложенной сущностью от Course
### Payment, AuthorBalance
Получение информации об оплатах и управление запросами на вывод
### Comment
Управление комментариями(модерирование)
### Category
Управление справочником категорий курсов
### Subscription
Управление подписками и рассылками пользователям
_Форматы запросов и ответов будут подробно описываться с помощью автоматической документации Swagger Documentation Generator for Django REST Framework_

@ -0,0 +1,4 @@
### [Обзор архитектуры](overview.md)
### [Описание API](api.md)
### [Работа с сервисом оплат Paymentwall](paymentwall.md)
### [Роли и права](roles.md)

@ -0,0 +1,46 @@
##Обзор архитектуры
###Backend
Представляет из себя веб-приложение на Python с использованием
следующих фреймворков и технологий: Django-2.0.1
Сервер проекта предоставляет для клиентской части API на основе REST, реализуя методы
CRUD для целей доступа к персистентным хранилищам данных
Сервер проекта хранит статические и медиа данные в файловой системе.
Данные хранятся в СУБД PostgreSQL 9.6.6
###Клиент проекта
Имеются два клиента проекта: одностраничное приложение (SPA),
реализующее интерфейс администратора, и серверное приложение для посетителей ресурса
### Приложение администратора систем
Клиент реализующий административный интерфейс представляет из себя SPA приложение на Javascript с использованием следующих фреймворков и технологий:
* react-0.14
* react-router-2.0
* react-redux-4.4
* react-bootstrap-0.28
* webpack-1.12
* sass
### Приложение посетителя ресурса
Является приложением - набором публичных страниц, которые собираются из шаблонов на сервере.
Для сложных динамических элементов на клиентской стороне используется React и обращение к методам API на backend.
* Django router
* Django templates
* jQuery v3.0.0
* react-0.14.7
* webpack-1.12
##Интеграции
* Транзакционные письма Mailgun `django-anymail 1.2`
* Рассылки писем Mailchimp `python-mailchimp 2.0`
* СМС-уведомления и рассылки `Twillio twilio 6.10`
* Получение оплат Paymentwall `paymentwall-python 1.0`
* Авторизация в FB Facebook `django-facebook 6.0`
###Диаграмма сущностей проекта
[Диаграмма сущностей проекта.png](https://lh4.googleusercontent.com/GNC1S1-ylduVcPPym4vfV4lrYrkTLB0lFfcevHd6paOv3NRvsB9L0pE9FIRked7d1qk6-h-sxk8RHg=w2560-h1312-rw)

@ -0,0 +1,18 @@
#Paymentwall
Для получения оплат от пользователей с помощью различных платежных систем используется [Paymentwall Checkout API](https://docs.paymentwall.com/integration/checkout-home)
Функциональные возможности:
* Единоразовые оплаты разных продуктов с различной стоимостью: курсы, подписки
* Сохранение платежных реквизитов и оплата через сохраненную карту
* Добавление новых платежных систем в Личном кабинете
* Управление купонами в Личном кабинет
##Flow
1. Пользователь на сайте выбирает продукт для приобретения
2. В БД сохраняется информации о приобретаемом продукте и начальном статусе оплаты: `pending`
3. Информация о его наименование и стоимости передается в API Paymentwall, возвращающий ссылку на платежный виджет
4. Виджет отображается на странице, все действия по выбору ПС и вводу данных производятся в нем
5. По завершению оплаты сервер Paymentwall оповещает о ее успешном прохождении или ошибки с помощью Pingback
6. В БД сохраняется информации о статусе оплаты (`success` или `error`) и изменении баланса AuthorBalance

@ -0,0 +1,20 @@
#Роли и права
* guest - Незарегистрированный посетитетель
* user - Зарегистрированный посетитель
* author - Зарегистрированный посетитель с возможностью создавать контент и получать за него вознаграждение
* admin - Пользователь с максимальными привилегиями
| guest | user | author | admin |
|--------|-------|---|---|
| Просматривает публичные страницы | Подтверждает адрес эл.почты | Добавляет курс и уроки | Управляет пользователями |
| Проходит регистрацию | Редактирует свой профиль | Добавляет работы в галерею курса | Управляет расписанием школы |
| Подписывается на рассылку | Управляет подписками | Просматривает баланс | Управляет курсами |
| | Оставляет комментарий | Добавляет запросы на вывод средств | Управляет категориями курсов |
| | Подает заявку на преподавателя | Отвечает на комментарии | Управляет рассылкой |
В системе используется стандартные возможности управления доступом Django https://docs.djangoproject.com/en/2.0/topics/auth/default/#permissions-and-authorization
Loading…
Cancel
Save