IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Добавить ответ в эту темуОткрыть тему
Внешнее расширение функционала Frontol Discount Unit, React-приложение расширяющее функции панели управления
FSerg
сообщение 11.3.2019, 12:27
Сообщение #1


Завсегдатай
***

Группа: Партнеры
Сообщений: 202
Регистрация: 27.12.2004
Пользователь №: 14



Запустили недавно у клиентов простую бонусную систему на базе Frontol Discount Unit. Сеть торговых точек стала активно ее использовать и стало понятно, что необходим хоть какой-то функционал анализа.
Самое первое что хочется увидеть, какими картами активнее всего пользуются. Это условно позволяет обнаружит злоупотребления.
И вроде бы в документации на API мы видим метод для получения списка карт: GET /client (он возвращает довольно подробный список карт). Но в этих даных есть только текущий баланс бонусов, а нам бы хотелось знать количество операций, сумму продаж и т.п.
Получается что определенные данные мы можем получить только напрямую из базы данных PostgreSQL, в которой FDU хранит данные.
При этом совсем не хочется базу данных выставлять наружу.
Так как у нас FDU-сервер запущен в обычной арендованной виртуалке на Linux, то так и просится запустить на ней же локально еще что-то, что позволит работать с БД напрямую. Ну и должен признаться, что просто нравится современная frontend-разработка, после 1С - это новый дивный мир! smile.gif
Это была предыстория, чтобы было понятно, зачем smile.gif

Получилось небольшое React-приложение соответственно с небольшим бекендом на NodeJS, который ходит за данными напрямую в PostgreSQL.
Пока сделал три раздела, дальше буду смотреть, что будет заказчик спрашивать.
- Рейтинг карт - подробный список карт упорядоченный по сумме оборотов по карте
Прикрепленный файл  0_001.png ( 48.19 килобайт ) Кол-во скачиваний: 42


- Журнал чеков - позволяет посмотреть продажи по картам с отбором по периоду и по торговым точкам
Прикрепленный файл  0_002.png ( 44.7 килобайт ) Кол-во скачиваний: 34


- Статистика - общая статистика по заполненности информации о клиентах. А также графики продаж, график списания и начисления бонусов и рейтинг торговых точек по суммам продаж.
Прикрепленный файл  0_003.png ( 64.77 килобайт ) Кол-во скачиваний: 24
Прикрепленный файл  0_004.png ( 127.81 килобайт ) Кол-во скачиваний: 31


Исходники на github: fdu_reports

Инструкция по установке и запуску для Linux
(предполагается, что FDU-сервер запущен на Ubuntu 16.04 LTS (для 18.04, я уверен, так же отработает))
Код
// ### Устанавливаем Docker
// Update the apt package index:
sudo apt-get update

// Install packages to allow apt to use a repository over HTTPS:
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common

// Add Docker’s official GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo apt-key fingerprint 0EBFCD88

// Use the following command to set up the stable repository.
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
\$(lsb_release -cs) \
stable"

// Update the apt package index.
sudo apt-get update

// Install the latest version of Docker CE and containerd
sudo apt-get install docker-ce docker-ce-cli containerd.io


// ### Устанавливаем Docker-compose
// Run this command to download the latest version of Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-\$(uname -m)" -o /usr/local/bin/docker-compose

// Apply executable permissions to the binary:
sudo chmod +x /usr/local/bin/docker-compose

// Test the installation.
docker-compose --version

// Создаем на хосте файл `docker-compose.yml`

version: '2'

services:
  fdu_reports:
    image: fserg/fdu_reports
    container_name: fdu_reports
    expose:
      - "5001"
    network_mode: host
    environment:
      - NODE_ENV=production
      - PORT=5001
      - PG_URI=postgresql://dbuser:dbpass@127.0.0.1:5432/dbname
      - FDU_URL=https://you.host.ru
      - REACT_APP_FDU_URL=https://you.host.ru
      - VIRTUAL_PORT=5001
      - TZ=Europe/Moscow
    restart: always

// Меняете dbuser, dbpass, dbname, https://you.host.ru на свои данные.
// И запускаете контейнер (сервис) командой:
sudo docker-compose up -d

// Модуль будет доступен по этой ссылке: http://you.host.ru:5001


Запуск под Windows
Теоретические это возможно. NodeJS же можно запустить под Windows, библиотека pg, что используется для работы с PostgreSQL тоже поддерживает windows.
Но вообще для меня странно, что FDU запускают под Windows. Ведь эту систему покупают для распределенной сети торговых точек, самый простой и надежный способ обеспечить постоянную доступность дисконт-сервера - это арендовать отдельную виртуалку.
Неужали все со своих торговых точек настраивают VPN доступ на свой внутренний Windows-сервер?


--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
FSerg
сообщение 11.3.2019, 15:14
Сообщение #2


Завсегдатай
***

Группа: Партнеры
Сообщений: 202
Регистрация: 27.12.2004
Пользователь №: 14



Сейчас подумал, что можно было бы это все обернуть в виде Electron приложения, тогда было бы кросплатформенно.
Но тогда нужуно или базу данных наружу выставлять, что не очень безопасно или ssh тунель делать, но этим тоже никто не зохочет заморчиваться.


--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
АТОЛ: Скачков Ва...
сообщение 11.3.2019, 18:35
Сообщение #3


Начинающий
*

Группа: Тех. поддержка
Сообщений: 75
Регистрация: 21.9.2018
Из: Грозный
Пользователь №: 188 495



Цитата(FSerg @ 11.3.2019, 15:14) *
Сейчас подумал, что можно было бы это все обернуть в виде Electron приложения, тогда было бы кросплатформенно.
Но тогда нужуно или базу данных наружу выставлять, что не очень безопасно или ssh тунель делать, но этим тоже никто не зохочет заморчиваться.

Это круть.

Респект goodpost.gif goodpost.gif goodpost.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
АТОЛ: Царюков Ро...
сообщение 14.3.2019, 11:47
Сообщение #4


Тех.поддержка
********

Группа: Администраторы
Сообщений: 45 584
Регистрация: 25.9.2008
Из: Москва
Пользователь №: 14 717



а можно еще PowerBI подключить к этому делу

Прикрепленный файл  2019_03_14_0084.png ( 60.78 килобайт ) Кол-во скачиваний: 45


--------------------

ответы на 90% вопросов находятся в ДОКУМЕНТАЦИИ
еще 9% ответов ТУТ
P.S.: уважайте труд наших писателей - читайте мануалы
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
FSerg
сообщение 18.3.2019, 19:09
Сообщение #5


Завсегдатай
***

Группа: Партнеры
Сообщений: 202
Регистрация: 27.12.2004
Пользователь №: 14



У заказчиков есть переживания/сомнения по поводу честности использования бонусных карт. Можно допустить, что возможна ситуация, когда продавец/кассир отложил одну и карт и постоянно использует ее для начисления бонусов, а затем использует оплату бонусами для своих нужд.
И я не придумал ничего кроме как следующей наивной идеи:
Если картой пользуются очень часто, буквально чуть ли не каждый день, а еще хуже, если картой пользуются чаще чем один раз в день, то это выглядит подозрительно smile.gif
Добавил еще один отчет, который выводит список карт, упорядоченный по частоте операций за период по дням и подсчитывает потенциально подозрительные дни.


--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
АТОЛ: Царюков Ро...
сообщение 18.3.2019, 19:12
Сообщение #6


Тех.поддержка
********

Группа: Администраторы
Сообщений: 45 584
Регистрация: 25.9.2008
Из: Москва
Пользователь №: 14 717



Слово "подозрительно" поправьте


--------------------

ответы на 90% вопросов находятся в ДОКУМЕНТАЦИИ
еще 9% ответов ТУТ
P.S.: уважайте труд наших писателей - читайте мануалы
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
FSerg
сообщение 18.3.2019, 20:03
Сообщение #7


Завсегдатай
***

Группа: Партнеры
Сообщений: 202
Регистрация: 27.12.2004
Пользователь №: 14



Цитата(АТОЛ: Царюков Роман @ 18.3.2019, 19:12) *
Слово "подозрительно" поправьте

Спасибо, поправил. Не нравится слово, но лучше ничего не придумал )


--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Чурадаев
сообщение 19.3.2019, 9:15
Сообщение #8


Начинающий
*

Группа: Пользователи
Сообщений: 75
Регистрация: 3.7.2018
Пользователь №: 171 022



Цитата(FSerg @ 18.3.2019, 20:03) *
Спасибо, поправил. Не нравится слово, но лучше ничего не придумал )

Вот как создаешь тему с критичной ошибкой, так там не отвечают по несколько дней, а тут вам даже слово поправили, видимо вам просто разработчики завидуют, которые не могут подобный функционал уже больше года сделать.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Алексей Насонов
сообщение 3.4.2019, 11:22
Сообщение #9


Начинающий
*

Группа: Пользователи
Сообщений: 65
Регистрация: 16.5.2017
Пользователь №: 140 620



Цитата(FSerg @ 19.3.2019, 0:03) *
Спасибо, поправил. Не нравится слово, но лучше ничего не придумал )


Со словом все нормально, так же буквы Е не хватало просто
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
FSerg
сообщение 10.5.2019, 16:24
Сообщение #10


Завсегдатай
***

Группа: Партнеры
Сообщений: 202
Регистрация: 27.12.2004
Пользователь №: 14



Оказалось, что проект без особых проблем запускается под windows.
@Даник дал мне доступ к Win Server 2008 c поднятым FDU, postgres и демо-базой.

Далее выполняем следующий шаги:
1. Скачиваем с оф.сайтов nodejs и yarn. 
На момент написания инструкции это были node-v10.15.3-x64 и yarn-1.15.2. Устаналивал все по умолчанию, просто нажимая Далее. Переменные PATH прописывает все сам мастер установки.
2. Скачиваем исходники проекта, можно архивом https://github.com/FSerg/fdu_reports/archive/master.zip. Для простоты пусть это будет в корне диска: C:\fdureports
3. Открываем консоль cmd и выполняем установку пакетов в двух папках:
делаем: yarn install в C:\fdureports и в C:\fdureports\client
4. Теперь пропишем параметры подключения к БД.
создаем файл C:\fdureports\src\config\dev.js с таким содержимым (для демо-сервера):
Код
module.exports = {
  port: 5001,
  pgURI: 'postgresql://postgres:postgres@127.0.0.1:5432/discount',
  resultsCounts: 100,
  fduURL: 'https://localhost'
};

5. Затем выполняем сборку проекта, так же в двух папках:
делаем: yarn build в C:\fdureports и в C:\fdureports\client
6. Теперь можно проверить работу проекта:
в C:\fdureports выполним yarn start

Открываем в браузере http://localhost:5001 
для демо-базы авторизация: имя admin, пароль moo

Если все ок, то можно теперь настроить автоматический запуск проекта как службы.
Самый распространенный способ запуска приложений как службы, через утилиту nssm (http://nssm.cc/release/nssm-2.24.zip).
Выполняем
nssm install fdureports "C:\Program Files\nodejs\node.exe"
Затем
nssm edit fdureports
Нас интересует только три параметра на первой закладке:
Path: C:\Program Files\nodejs\node.exe
Startup directory: C:\fdureports
Arguments: build\index.js
Все. Можно перезапустить ПК и проверить, что после перезапуска все поднялось автоматически.


--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Добавить ответ в эту темуОткрыть тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 24.7.2019, 4:28
 Яндекс цитирования  Rambler's Top100