Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Язык программирования
- - node.js, основной бэк-фреймворк - sails.js, основной фронт-фреймворк - vue.js
- - Какие модули задействованы
- - bcryptjs - для шифровка паролей пользователей
- - coffee-script - нужен для генерации файлов шаблона
- - console.table - упрощение логгирования табличных данных
- - ejs - кусок фреймворка, используется им для генерации некоторых страниц (скорее всего можно удалить)
- - fs-extra - более удобна работа с файловой системой (например, логгирование, или загрузка фоток, или еще что)
- - grunt - сборщик (собирает исходники проекта воедино). Включает в себя кучу плагинов. Это просто "расширения", чтобы увеличить возможности самого сборщика:
- - grunt-bower-install
- - grunt-contrib-clean
- - grunt-contrib-coffee
- - grunt-contrib-concat
- - grunt-contrib-copy
- - grunt-contrib-cssmin
- - grunt-contrib-jst
- - grunt-contrib-less
- - grunt-contrib-uglify
- - grunt-contrib-watch
- - grunt-sails-linker
- - grunt-simple-watch
- - grunt-sync
- - grunt-usemin
- - grunt-wiredep
- - html-pdf - генерация инвойсов
- - include-all - ныне ни для чего не используется
- - jade - шаблонизатор, для генерации скелета страниц
- - later - для выполнения задач по расписанию
- - lodash - набор методов для работы с данными (перебор массивов, получение данных из объектов и т.д.)
- - mkdirp - ныне не используется
- - moment - работа с датами (форматирование, парс и прочее)
- - nodemailer - отправляет письма
- - passport - отвечает за авторизацию/аутентификацию в системе
- - passport-local - вход по логину/паролю
- - passport-remember-me - восстановление сессий пользователей после перезапуска сервера
- - plivo - ну, собственно, понятно из названия.
- - q - работа с промисами. Небольшое расширение встроенного функционала
- - rc - ныне не используется
- - recaptcha2 - капча
- - sails - фреймворк
- - sails-disk - текстовая база данных для дев-режима
- - sails-hook-update-or-create - расширение встроенного во фреймворк ОРМа
- - sails-mysql - адаптер для базы данных
- - templatizer - ныне не нужен
- - validator - валидация всякой всячины - телефоны, мыла, и т.д.
- - winston - логгирование
- - За какой элемент управления/дизайна/функционала отвечает каждый модуль
- Я не уверен, что правильно понял вопрос, поэтому отвечу так, как хотел бы сам услышать ответ.
- Сайт состоит из двух крупных частей: фронт и бэк
- Эти части связаны между собой при помощи фреймворка - sails.js
- Самописных частей во фреймворке (в этом проекте нет), так что офф докам можно верить.
- Что касается бэка:
- "модулей", как таковых - нет. Сайт - единое целое приложение. Самое близкое, что подходит под название "модуль" - контроллер.
- Они занимаются обработкой различных групп запросов. Их очень много, но описывать каждый из них - не вижу смысла.
- - Admin - Отвечает за страницы админки
- - Advertisers - за работу со страницей адвов
- - API - за апи
- - ...
- - и так далее. У них вполне говорящие названия.
- Стоит обратить внимание, разве что на Plivo - он отвечает за взаимодействие с веб-сервисом пливо.
- Страниц, как таковых, тоже нет. Сейчас так сайты уже не пишут. Все страницы "динамичны".
- То, что скорее всего понималось под страницами - роуты (то, что вбиваем в адресную строку браузера).
- Роуты показывают, какой адрес к какому методу какого контроллера приведет. За эту связку отвечает config/routes.js
- `get /sampletable': 'Main.sampletable` - при переходе на страницу /sampletable будет отображен результат работы MainController'a, а именно его метода - sampletable().
- Далее, важный момент - политики.
- Т.к. у нас на сайте есть ролевка, то не все пользователи имеют доступ ко всем страницам. Пускать пользователя на страницу, или нет - решают политики.
- Политики указываются для контроллеров. Если "политика" (это просто метод) говорит "пускать" - управление будет передано контроллеру. Если скажет - "не пускать" - пользователь увидит ошибку доступа. Какая политика за какой контроллер отвечает указано в файле: config/policies.js
- Что касается фронта:
- в 99% случаев правила следующие - при переходе на страницу /NAME будет отрисована страница, которая описана в файле /assets/Vues/NAME
- Т.к. фронт писал я, то могу очень много по нему рассказать, но, наверное, нет смысла.
- Если вкратце:
- - основной фронт-фреймворк: Vue.js v-1.0
- - шаблон - atlant
- - фреймворк шаблона - bootstrap 3.0
- Небольшое описание моей имплементации работы с Vue - каждая страница - компонент, расположенный внутри "шаблона". Страница состоит из крупных кусков - это тоже компоненты. Компоненты, которые используются несколько раз и могут кочевать между другими проектами - виджеты.
- - шаблоны лежат в папке /views/_layouts
- - страницы лежат в папке /assets/Vues/PAGENAME
- - Куски страниц - в папке /assets/Vues/_Parts/PAGENAME
- - Виджеты - в папке /assets/Vues/_Components/PAGENAME
- - Путь к модулям (path)
- Как писал ранее, модулей, как таковых, нет. Все лежит в одной папке.
- Если этот вопрос касается сторонних библиотек, то:
- - node_modules - серверные библиотеки
- - bower_components - клиентские
- Серверные библиотеки ставятся командой `npm i`
- Клиентские - `bower i`
- ВНИМАНИЕ!!! Клиентский установщик пакетов несколько месяцев назад начал объединяться с серверным. Поэтому он скоро будет выключен и перестанет работать.
- До этого момента нужно перенести клиентские пакеты в серверные. Иначе, в один прекрасный момент, сайт не стартанет (на новой машине, где пакетов еще нет)
- - Путь к папкам сайта
- К каким именно? приложение работает в своей папке, она одна.
- - Путь к «страницам» - фронт
- Описал выше
- - Путь к файлам конфигурации (бек и конфиг любого типа)
- Весь конфиг старался выносить в одну папку - /config
- Конфиги, которые реально стоит трогать - только в /config/env (внутри dev и prod - очевидно, что зависит от режима запуска приложения).
- Эти конфиги "главенствуют" над всеми другими и могут их переопределять. Лазить во "внешние" - не стоит. Плохой тон.
- - Какие юзеры сейчас в системе (я имею ввиду тех, что в Linux’e)
- На этот вопрос ответит Михаил, т.к. я не в курсе
- - Их логины и пароли
- аналогично
- - За какой элемент управления отвечает каждый из них
- аналогично
- - Путь к файлам конфигурации намбер пулов
- а нет файлов конфигурации... все сделано по месту в api/controllers/PlivoController.js
- Странно конечно, но писал не я, так что прошу прощения за других.
- - Как «включить» платформу (включая роутинг звонков), после того как сервер перезапустился с нуля
- Немного теории:
- При запуске проекта присходит сборка проекта из исходников.
- Если запуск в дев-режиме, то все файлы складируются в .tmp, откуда и показываются на сайте.
- Если в прод - то задания совершенно другие, они конкатенируют, минифицируют и всячески оптимизируют сборку для максимально быстрой работы в браузере.
- Все это уже написано. Разные сборки запускаются командами, указанными в package.json (об этом знает любой nodejs разработчик).
- Пример запуска в дев-режиме: `npm run start`, в прод - `npm run prod`.
- Ну и сухая практика (для чистой системы, на которой ничего нет):
- - устанавливаем nodejs
- - устанавливаем mysql сервер (пользователь: root, пароль: root)
- - создаем БД с именем sails-retreaver
- - устанавливаем бовер (npm i -g bower)
- - устанавливаем грант (npm i -g grunt)
- - переходим в папку с проектом
- - устанавливаем серверные зависимости (npm i)
- - устанавливаем клиентские зависимости (bower i)
- - запускаем проект (npm run start) - в дев режиме, чтобы создались таблицы в базе данных и заполнились дефолтные данные. Так нормально руки и не дошли, чтобы написать
- - запускаем проект в прод-режиме (npm run prod)
- - проект становится доступен по адресу: localhost:5000 (или 1337, если запуск в дев-режиме)
- Для системы, где был произведен запуск хотя бы 1 раз:
- - переходим в папку с проектом
- - запускаем проект в прод-режиме (npm run prod)
- - проект становится доступен по адресу: localhost:5000 (или 1337, если запуск в дев-режиме)
- - Путь в базе данных
- Указан в конфиге - /config/connections.js:
- host: 'localhost',
- user: 'root',
- password: 'root',
- database: 'sails-retreaver',
- - Описание полей сделанных в базе данных – точнее что есть что
- мне предоставили следующее описание:
- Advertiser - Адвертайзеры
- Call - Логи звонков(цена, длительность и т.д). При установке связи между звонящим и пливо
- CallerCookie - Contains info about last answered advertiser
- CallLeg - То же самое что и Call, только при установке связи между пливо и адвертайзером
- CallRecord - Содержит урлы к записям разговором
- CallToken - Contains info about number tokens at call time
- Campaign - Кампании
- Card - Данные кредиток
- Charge - Расходы
- Conversion - Конверсии
- Country - Список стран
- EnteredTag - Введенные тэги со значениями
- Invoice - Спроси у Ромы
- Num - Номера, купленные в пливо
- NumbersPool - Пулы
- Obfuscation - Привязывается к номеру, если у него установлена обфускация
- ObfuscationType - Виды обфускации
- Passport - Для авторизации
- Payment - Инфа о платежах клиента
- Prefix - Список префиксов для телефонов(800, 866 и т.д.)
- Price - Глобальные цены. Цена за минуту и цена за номер
- Prompt - IVR(проговорить что-то или проиграть при определенном условии)
- PromptType - Виды Prompts
- Publisher - Паблишеры
- Request - Для подвержения регистрации
- Role - Роли юзеров. Не используется
- RoutingAction - Действия роутов(dial, redirect и т.д.)
- RoutingCondition - Условия для роутов
- RoutingSetting - Настройки роутов(если юзер нажмет такую-то кнопку - произойдет то-то)
- Tag - Тэги
- TagCategory - Список разновидностей тегов(Text, Numeric, etc...)
- TagOperatorNum - Список операторов для тэгов типа Numeric(>, <, == итд)
- TagOperatorText - Список операторов для тэгов типа Text(~=, !=, == итд)
- TagPromptOption - Tag Prompt Option used for text tags
- TagType - Содержит системные теги + добавляются пользовательские
- Team - Тимы
- Timeframe - Используется во всех местах, где надо выбрать временные рамки
- Timezone - Список временных зон
- Token - Токены кампании, для использования(которые в урл подставляются)
- TokenValue - Contains values of url tokens from landing
- UpcomingCharge - Предстоящие Расходы
- User - Юзеры
- UserCampaign - Связка юзера и кампаина вместе со статусом
- USState - Список штатов в USA
- - Путь к настройке файлов конфигураций имейла(оповещения) и других задач
- По почте - /api/services/mail.js
- Только очень большая просьба не использовать мой пароль, а также тереть его при передаче другим людям.
- Я его не сменил, т.к. иначе сайт перестанет работать (отсылать письма), ну и плюс вы получите мою реальную почту - вдруг пригодится для того, чтобы задать какой-то вопрос, или предложить что-то еще.
- - Пример архитектуры БД (можно тупо приложить csv file Базы Данных)
- Опять же, прошу прощения за моего коллегу, но схемы нет.
- Связи между таблицами не расставлены, за целостность отвечает исключительно ORM. К счастью, он именует таблицы, и из этих имен можно составить представление - что от чего зависит. Могу сгенерировать картинку, но там будет просто куча из несвязанных друг с другом таблиц.
- - Путь к файлам настройки провайдера (пливо)
- Если я правильно понял вопрос, то: api/services/plivoFns.js
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement