Архитектура

Архитектура

Alex

User - таблица которая отвечает за пользователей которые зарегистрированы в системе.

Если User будет удален, сразу за ним удалится и виджет который принадлежит этому юзеру. Удаление каскадное уже реализовано в таблице. Это справедливо для всех зависимостей. Где нужно будет удаление кодом - я напишу об этом.


domain - url сайта вида mysite.ua


Widget - таблица отвечает за все созданные виджеты которые принадлежат пользователю. Один пользователь может иметь только один виджет. Это справедливо что Виджет = один вебсайт. Значит настройки виджета хранятся в этой таблице. 


is_code_active - это enum который может принимать только два значения active' и 'inactive'. Где inactive означает что код не активен на сайт, а active означает что код установлен на сайт и работает корректно. По умолчанию таблица ставит в 'inactive' и только после того как код поставлен на сайт, должны менять значение на active и показывать в админке что с кодом все хорошо. Проверяется раз в сутки например.


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


inactive_uri - формат массива или объекта где содержатся все документы на которых виджет НЕ должен показываться. Например {‘/contacts’,’/profile’} означает что виджет не будет показываться на страницах контактов и в профиле пользователя.


public_id - публичный идентификатор который будет виден всем и везде. По этому идентификатору можно получить доступ к конкретному виджету с его настройками.


widget_code - SPC который пользователь должен поставить на WRU


User_idUser - ссылка на конкретного пользователя в таблицу User. Например можно получить любые данные о пользователе которому принадлежит этот виджет. Для этого нужно сделать следующий запрос: SELECT idUser,email,first_name,last_name,domain,create_time FROM User WHERE (SELECT User_idUser FROM Widget WHERE public_id = 'rRdE4rdWE43') = idUser

где 'rRdE4rdWE43' - это публичная переменная id виджета



Widget_messages - таблица в которой хранятся сообщения которые пользователь хочет показать юзеру.


message - текстовой сообщение которое будет показано юзеру. Максимальный размер в символах 300.


activate_rules - правила активации сообщения. Иными словами когда сообщение должно быть показано. Например покажи это сообщение через 15 секунд после того как пользователь посетил конкретно эту страницу.


line_number - цепочек с сообщениями может быть несколько. Одна цепочка может содержать до 20 сообщений.


queue_number - очередь сообщения в цепочке. Например 1 или 2 или 4 и т.д.

Например мы создаем сообщение с правилами. Если это первое сообщение то оно получает line_number = 1 и queue_number = 1

Создаем следующее сообщение которое должно быть отправлено пользователю. Получается линия та же line_number = 1, а queue_number = 2


is_input_message - ENUM('yes', 'no') является ли это сообщение запрашивающим у пользователя какие-то данные. По умолчанию no


input_type - ENUM('name', 'mail', 'phone', 'text') если сообщение подразумевает ответ от пользователя и запрашивает его данные. То в этой колонке содержится тип запрашиваемых данных.Он нам нужен чтобы правильно делать UI и потом данные которые пользователь ответит правило положить в базу.


Widget_idWidget - ссылка на виджет кому принадлежит это сообщение.



Site_user - таблица в которой хранятся все пользователи которые заходили на сайт.


coockie_identifier - кука которая ставится пользователю после того как он впервые попал на сайт где установлен виджет. Служит нам для идентификации юзера впоследствии. Было бы здорово если можно было еще как-то идентифицировать пользователя. Например ставить ему этот же идентификатор в user storage в хроме. 


name - имя юзера будет записано после того как он сам его отдаст виджету


phone - телефон после того как юзер отдал его юзеру


email - почта юзера после того как он отдал ее виджету


Widget_idWidget - ссылка на виджет


Site_user_has_Widget_messages - ссылка на сообщение, например, для того чтобы показывать в аналитике, после какого сообщения пользователь ввел свои данные. (В будущем предполагается что сообщения можно будет тестировать, проводит A/B тест сообщений)



Report Page