Advertisement
Guest User

Untitled

a guest
Feb 2nd, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.17 KB | None | 0 0
  1. Язык программирования
  2. - node.js, основной бэк-фреймворк - sails.js, основной фронт-фреймворк - vue.js
  3.  
  4.  
  5.  
  6. - Какие модули задействованы
  7. - bcryptjs - для шифровка паролей пользователей
  8. - coffee-script - нужен для генерации файлов шаблона
  9. - console.table - упрощение логгирования табличных данных
  10. - ejs - кусок фреймворка, используется им для генерации некоторых страниц (скорее всего можно удалить)
  11. - fs-extra - более удобна работа с файловой системой (например, логгирование, или загрузка фоток, или еще что)
  12. - grunt - сборщик (собирает исходники проекта воедино). Включает в себя кучу плагинов. Это просто "расширения", чтобы увеличить возможности самого сборщика:
  13. - grunt-bower-install
  14. - grunt-contrib-clean
  15. - grunt-contrib-coffee
  16. - grunt-contrib-concat
  17. - grunt-contrib-copy
  18. - grunt-contrib-cssmin
  19. - grunt-contrib-jst
  20. - grunt-contrib-less
  21. - grunt-contrib-uglify
  22. - grunt-contrib-watch
  23. - grunt-sails-linker
  24. - grunt-simple-watch
  25. - grunt-sync
  26. - grunt-usemin
  27. - grunt-wiredep
  28. - html-pdf - генерация инвойсов
  29. - include-all - ныне ни для чего не используется
  30. - jade - шаблонизатор, для генерации скелета страниц
  31. - later - для выполнения задач по расписанию
  32. - lodash - набор методов для работы с данными (перебор массивов, получение данных из объектов и т.д.)
  33. - mkdirp - ныне не используется
  34. - moment - работа с датами (форматирование, парс и прочее)
  35. - nodemailer - отправляет письма
  36. - passport - отвечает за авторизацию/аутентификацию в системе
  37. - passport-local - вход по логину/паролю
  38. - passport-remember-me - восстановление сессий пользователей после перезапуска сервера
  39. - plivo - ну, собственно, понятно из названия.
  40. - q - работа с промисами. Небольшое расширение встроенного функционала
  41. - rc - ныне не используется
  42. - recaptcha2 - капча
  43. - sails - фреймворк
  44. - sails-disk - текстовая база данных для дев-режима
  45. - sails-hook-update-or-create - расширение встроенного во фреймворк ОРМа
  46. - sails-mysql - адаптер для базы данных
  47. - templatizer - ныне не нужен
  48. - validator - валидация всякой всячины - телефоны, мыла, и т.д.
  49. - winston - логгирование
  50.  
  51.  
  52.  
  53. - За какой элемент управления/дизайна/функционала отвечает каждый модуль
  54. Я не уверен, что правильно понял вопрос, поэтому отвечу так, как хотел бы сам услышать ответ.
  55. Сайт состоит из двух крупных частей: фронт и бэк
  56. Эти части связаны между собой при помощи фреймворка - sails.js
  57. Самописных частей во фреймворке (в этом проекте нет), так что офф докам можно верить.
  58.  
  59. Что касается бэка:
  60. "модулей", как таковых - нет. Сайт - единое целое приложение. Самое близкое, что подходит под название "модуль" - контроллер.
  61. Они занимаются обработкой различных групп запросов. Их очень много, но описывать каждый из них - не вижу смысла.
  62. - Admin - Отвечает за страницы админки
  63. - Advertisers - за работу со страницей адвов
  64. - API - за апи
  65. - ...
  66. - и так далее. У них вполне говорящие названия.
  67. Стоит обратить внимание, разве что на Plivo - он отвечает за взаимодействие с веб-сервисом пливо.
  68.  
  69. Страниц, как таковых, тоже нет. Сейчас так сайты уже не пишут. Все страницы "динамичны".
  70. То, что скорее всего понималось под страницами - роуты (то, что вбиваем в адресную строку браузера).
  71. Роуты показывают, какой адрес к какому методу какого контроллера приведет. За эту связку отвечает config/routes.js
  72. `get /sampletable': 'Main.sampletable` - при переходе на страницу /sampletable будет отображен результат работы MainController'a, а именно его метода - sampletable().
  73.  
  74. Далее, важный момент - политики.
  75. Т.к. у нас на сайте есть ролевка, то не все пользователи имеют доступ ко всем страницам. Пускать пользователя на страницу, или нет - решают политики.
  76. Политики указываются для контроллеров. Если "политика" (это просто метод) говорит "пускать" - управление будет передано контроллеру. Если скажет - "не пускать" - пользователь увидит ошибку доступа. Какая политика за какой контроллер отвечает указано в файле: config/policies.js
  77.  
  78. Что касается фронта:
  79. в 99% случаев правила следующие - при переходе на страницу /NAME будет отрисована страница, которая описана в файле /assets/Vues/NAME
  80. Т.к. фронт писал я, то могу очень много по нему рассказать, но, наверное, нет смысла.
  81. Если вкратце:
  82. - основной фронт-фреймворк: Vue.js v-1.0
  83. - шаблон - atlant
  84. - фреймворк шаблона - bootstrap 3.0
  85.  
  86. Небольшое описание моей имплементации работы с Vue - каждая страница - компонент, расположенный внутри "шаблона". Страница состоит из крупных кусков - это тоже компоненты. Компоненты, которые используются несколько раз и могут кочевать между другими проектами - виджеты.
  87. - шаблоны лежат в папке /views/_layouts
  88. - страницы лежат в папке /assets/Vues/PAGENAME
  89. - Куски страниц - в папке /assets/Vues/_Parts/PAGENAME
  90. - Виджеты - в папке /assets/Vues/_Components/PAGENAME
  91.  
  92.  
  93.  
  94. - Путь к модулям (path)
  95. Как писал ранее, модулей, как таковых, нет. Все лежит в одной папке.
  96. Если этот вопрос касается сторонних библиотек, то:
  97. - node_modules - серверные библиотеки
  98. - bower_components - клиентские
  99.  
  100. Серверные библиотеки ставятся командой `npm i`
  101. Клиентские - `bower i`
  102. ВНИМАНИЕ!!! Клиентский установщик пакетов несколько месяцев назад начал объединяться с серверным. Поэтому он скоро будет выключен и перестанет работать.
  103. До этого момента нужно перенести клиентские пакеты в серверные. Иначе, в один прекрасный момент, сайт не стартанет (на новой машине, где пакетов еще нет)
  104.  
  105.  
  106.  
  107. - Путь к папкам сайта
  108. К каким именно? приложение работает в своей папке, она одна.
  109.  
  110.  
  111.  
  112. - Путь к «страницам» - фронт
  113. Описал выше
  114.  
  115.  
  116.  
  117. - Путь к файлам конфигурации (бек и конфиг любого типа)
  118. Весь конфиг старался выносить в одну папку - /config
  119. Конфиги, которые реально стоит трогать - только в /config/env (внутри dev и prod - очевидно, что зависит от режима запуска приложения).
  120. Эти конфиги "главенствуют" над всеми другими и могут их переопределять. Лазить во "внешние" - не стоит. Плохой тон.
  121.  
  122.  
  123.  
  124. - Какие юзеры сейчас в системе (я имею ввиду тех, что в Linux’e)
  125. На этот вопрос ответит Михаил, т.к. я не в курсе
  126.  
  127.  
  128.  
  129. - Их логины и пароли
  130. аналогично
  131.  
  132.  
  133.  
  134. - За какой элемент управления отвечает каждый из них
  135. аналогично
  136.  
  137.  
  138.  
  139. - Путь к файлам конфигурации намбер пулов
  140. а нет файлов конфигурации... все сделано по месту в api/controllers/PlivoController.js
  141. Странно конечно, но писал не я, так что прошу прощения за других.
  142.  
  143.  
  144.  
  145. - Как «включить» платформу (включая роутинг звонков), после того как сервер перезапустился с нуля
  146. Немного теории:
  147. При запуске проекта присходит сборка проекта из исходников.
  148. Если запуск в дев-режиме, то все файлы складируются в .tmp, откуда и показываются на сайте.
  149. Если в прод - то задания совершенно другие, они конкатенируют, минифицируют и всячески оптимизируют сборку для максимально быстрой работы в браузере.
  150. Все это уже написано. Разные сборки запускаются командами, указанными в package.json (об этом знает любой nodejs разработчик).
  151. Пример запуска в дев-режиме: `npm run start`, в прод - `npm run prod`.
  152.  
  153. Ну и сухая практика (для чистой системы, на которой ничего нет):
  154. - устанавливаем nodejs
  155. - устанавливаем mysql сервер (пользователь: root, пароль: root)
  156. - создаем БД с именем sails-retreaver
  157. - устанавливаем бовер (npm i -g bower)
  158. - устанавливаем грант (npm i -g grunt)
  159. - переходим в папку с проектом
  160. - устанавливаем серверные зависимости (npm i)
  161. - устанавливаем клиентские зависимости (bower i)
  162. - запускаем проект (npm run start) - в дев режиме, чтобы создались таблицы в базе данных и заполнились дефолтные данные. Так нормально руки и не дошли, чтобы написать
  163. - запускаем проект в прод-режиме (npm run prod)
  164. - проект становится доступен по адресу: localhost:5000 (или 1337, если запуск в дев-режиме)
  165.  
  166. Для системы, где был произведен запуск хотя бы 1 раз:
  167. - переходим в папку с проектом
  168. - запускаем проект в прод-режиме (npm run prod)
  169. - проект становится доступен по адресу: localhost:5000 (или 1337, если запуск в дев-режиме)
  170.  
  171.  
  172.  
  173. - Путь в базе данных
  174. Указан в конфиге - /config/connections.js:
  175. host: 'localhost',
  176. user: 'root',
  177. password: 'root',
  178. database: 'sails-retreaver',
  179.  
  180.  
  181.  
  182. - Описание полей сделанных в базе данных – точнее что есть что
  183. мне предоставили следующее описание:
  184. Advertiser - Адвертайзеры
  185. Call - Логи звонков(цена, длительность и т.д). При установке связи между звонящим и пливо
  186. CallerCookie - Contains info about last answered advertiser
  187. CallLeg - То же самое что и Call, только при установке связи между пливо и адвертайзером
  188. CallRecord - Содержит урлы к записям разговором
  189. CallToken - Contains info about number tokens at call time
  190. Campaign - Кампании
  191. Card - Данные кредиток
  192. Charge - Расходы
  193. Conversion - Конверсии
  194. Country - Список стран
  195. EnteredTag - Введенные тэги со значениями
  196. Invoice - Спроси у Ромы
  197. Num - Номера, купленные в пливо
  198. NumbersPool - Пулы
  199. Obfuscation - Привязывается к номеру, если у него установлена обфускация
  200. ObfuscationType - Виды обфускации
  201. Passport - Для авторизации
  202. Payment - Инфа о платежах клиента
  203. Prefix - Список префиксов для телефонов(800, 866 и т.д.)
  204. Price - Глобальные цены. Цена за минуту и цена за номер
  205. Prompt - IVR(проговорить что-то или проиграть при определенном условии)
  206. PromptType - Виды Prompts
  207. Publisher - Паблишеры
  208. Request - Для подвержения регистрации
  209. Role - Роли юзеров. Не используется
  210. RoutingAction - Действия роутов(dial, redirect и т.д.)
  211. RoutingCondition - Условия для роутов
  212. RoutingSetting - Настройки роутов(если юзер нажмет такую-то кнопку - произойдет то-то)
  213. Tag - Тэги
  214. TagCategory - Список разновидностей тегов(Text, Numeric, etc...)
  215. TagOperatorNum - Список операторов для тэгов типа Numeric(>, <, == итд)
  216. TagOperatorText - Список операторов для тэгов типа Text(~=, !=, == итд)
  217. TagPromptOption - Tag Prompt Option used for text tags
  218. TagType - Содержит системные теги + добавляются пользовательские
  219. Team - Тимы
  220. Timeframe - Используется во всех местах, где надо выбрать временные рамки
  221. Timezone - Список временных зон
  222. Token - Токены кампании, для использования(которые в урл подставляются)
  223. TokenValue - Contains values of url tokens from landing
  224. UpcomingCharge - Предстоящие Расходы
  225. User - Юзеры
  226. UserCampaign - Связка юзера и кампаина вместе со статусом
  227. USState - Список штатов в USA
  228.  
  229.  
  230.  
  231. - Путь к настройке файлов конфигураций имейла(оповещения) и других задач
  232. По почте - /api/services/mail.js
  233. Только очень большая просьба не использовать мой пароль, а также тереть его при передаче другим людям.
  234. Я его не сменил, т.к. иначе сайт перестанет работать (отсылать письма), ну и плюс вы получите мою реальную почту - вдруг пригодится для того, чтобы задать какой-то вопрос, или предложить что-то еще.
  235.  
  236.  
  237.  
  238. - Пример архитектуры БД (можно тупо приложить csv file Базы Данных)
  239. Опять же, прошу прощения за моего коллегу, но схемы нет.
  240. Связи между таблицами не расставлены, за целостность отвечает исключительно ORM. К счастью, он именует таблицы, и из этих имен можно составить представление - что от чего зависит. Могу сгенерировать картинку, но там будет просто куча из несвязанных друг с другом таблиц.
  241.  
  242.  
  243.  
  244. - Путь к файлам настройки провайдера (пливо)
  245. Если я правильно понял вопрос, то: api/services/plivoFns.js
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement