Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
external:искусственный_интеллект_для_sh5 [2020/11/11 10:04] – Александр Ильин | external:искусственный_интеллект_для_sh5 [2021/10/06 08:49] (текущий) – [History] ilyasavenkov |
---|
====== Искусственный интеллект для sh5 ====== | ====== Искусственный интеллект для sh5 - ShPulse ====== |
| |
[[https://yadi.sk/d/SqdPi-oDsKFjBg?w=1|Актуальный дистрибутив]] | [[https://yadi.sk/d/SqdPi-oDsKFjBg?w=1|Актуальный дистрибутив]] |
| |
**Системные требования:** Компьютер под управлением ОС Windows 7+ | **Системные требования:** |
| |
| * Компьютер под управлением ОС Windows 7+ |
| * StoreHouse v 5.84.308 и выше |
===== Установка и настройка ===== | ===== Установка и настройка ===== |
| |
| |
sh_pulse.exe - Сервер ИИ. | sh_pulse.exe - Сервер ИИ. |
plugins - Папка с плагинами. | plugins - Папка с плагинами. |
Все плагины, находящиеся в корне этой папки, будут обработаны в алфавитном порядке. | Все плагины, находящиеся в корне этой папки, будут обработаны в алфавитном порядке. |
static - Дополнительные файлы (стили, картинки, JS скрипты). | static - Дополнительные файлы (стили, картинки, JS скрипты). |
templates - Шаблон главной страницы. | templates - Шаблон главной страницы. |
Внимание! Не рекомендуется изменять структуру этого файла без понимания того как он устроен. | Внимание! Не рекомендуется изменять структуру этого файла без понимания того как он устроен. |
config.ini - Настройки сервера ИИ. | config.ini - Настройки сервера ИИ. |
| |
</code> | </code> |
| |
**Схема взаимодействия модулей ПО:** {{:external:pasted:20201101-133912.png?nolink&}} | **Схема взаимодействия модулей ПО:** {{:external:pasted:20201101-133912.png?nolink&}} |
| |
**Установка модуля SH_II (sh_pulse.exe)** | **Установка модуля SH_II (sh_pulse.exe)** |
| |
* Скачать и распаковать архив (логичнее сделать это там, где крутится сервер SH) (**путь, где будет находиться распакованная сборка ПО не должен содержать симолов кирилицы (русских букв)**) | * Скачать и распаковать архив (логичнее сделать это там, где крутится сервер SH) (**путь, где будет находиться распакованная сборка ПО не должен содержать симолов кирилицы (русских букв)**) |
* Настроить файл config.ini | * Настроить файл config.ini |
| |
</code> | </code> |
| |
* Далее нам нужно запустить приложение (запуск в виде приложения нужен только на этапе настройки и тестирования), а лучше сразу установить его службой через файл start.bat от имени администратора. | * Далее нам нужно запустить сервер ИИ. Работать только как служба. Установка службы через файл start.bat (запустить от имени Администратора). |
* Настроить файл sh.ini на **каждом** клиентском компьютере, где должен отображаться модуль ИИ. | * Настроить файл sh.ini на **каждом** клиентском компьютере, где должен отображаться модуль ИИ. |
| |
===== Общие принципы работы с плагинами ===== | ===== Общие принципы работы с плагинами ===== |
| |
* Модуль ИИ выполнит все плагины лежащие в папке plugins. Если какой то из плагинов вам не нужен (например в данной БД не ведется работа с ЕГАИС), то вы просто удаляете файл с этим плагином. | * Модуль ИИ выполнит все плагины лежащие в папке plugins. Если какой то из плагинов вам не нужен (например в данной БД не ведется работа с ЕГАИС), то вы просто удаляете файл (папку) с этим плагином. |
* Обработка плагинов осуществляется в алфавитном порядке, таким образом, если необходимо поменять местами какие то метрики, достаточно просто переименовать файлы. | * Обработка плагинов осуществляется в алфавитном порядке, таким образом, если необходимо поменять местами какие то метрики, достаточно просто переименовать файлы. |
* Некоторые плагины имеют дополнительные параметры и настройки, изменить которые можно непосредственно в коде плагина. | * Некоторые плагины имеют дополнительные параметры и настройки, изменить которые можно непосредственно в коде плагина. |
===== Описание плагинов ===== | ===== Описание плагинов ===== |
| |
**0_welcome.py** Данный плагин здоровается с %username% при старте (username = имя пользователя в SH). Плагин работает только в том случае если при вызове был передан username. Т.е. вызов был из SH по ссылке вида [[http://127.0.0.1:5000/?q=@3|http://127.0.0.1:5000/?q=@3]] Если открыть в браузере по ссылке [[http://127.0.0.1:5000/|http://127.0.0.1:5000/]] то плагин НЕ отрабатывает. Если параметр **humor** равен 1, то после приветствия цитируется случайный афоризм. {{:external:pasted:20201101-143113.png}} | **0_welcome.py** Данный плагин здоровается с %username% при старте (username = имя пользователя в SH). Плагин работает только в том случае если при вызове был передан username. Т.е. вызов был из SH по ссылке вида [[http://127.0.0.1:5000/?q=@3|http://127.0.0.1:5000/?q=@3]] Если открыть в браузере по ссылке [[http://127.0.0.1:5000/|http://127.0.0.1:5000/]] то плагин НЕ отрабатывает. Если параметр **humor** равен 1, то после приветствия цитируется случайный афоризм. |
| {{:external:pasted:20201101-143113.png}} |
| |
| ---- |
| |
**1_advertisement.py** Данный плагин отображает страницу с информацией от дилера Если по адресу указанному в параметре 'url' находится какая то страница (код http ответа 200), то она будет отображена. Если указан не существующий или пустой url - плагин не работает. | **1_advertisement.py** Данный плагин отображает страницу с информацией от дилера Если по адресу указанному в параметре 'url' находится какая то страница (код http ответа 200), то она будет отображена. Если указан не существующий или пустой url - плагин не работает. |
Если "title = None", то раздел свернуть нельзя (он всегда будет раскрыт у пользователя) | Если "title = None", то раздел свернуть нельзя (он всегда будет раскрыт у пользователя) |
| |
Параметр **url** задает откуда брать информацию для вывода пользователю. Пример: url = '[[https://carbis.ru/404|https://carbis.ru/404]]' # Страница по адресу '[[https://carbis.ru/404|https://carbis.ru/404]]' не существует. Плагин не работает. url = '[[https://soft.carbis.ru/sh_ii/test_news.html|https://soft.carbis.ru/sh_ii/test_news.html]]' # Страница по адресу '[[https://soft.carbis.ru/sh_ii/test_news.html|https://soft.carbis.ru/sh_ii/test_news.html]]' существует. # Плагин отображает тестовую новость. {{:external:pasted:20201101-143146.png}} | Параметр **url** задает откуда брать информацию для вывода пользователю. Пример: url = '[[https://carbis.ru/404|https://carbis.ru/404]]' # Страница по адресу '[[https://carbis.ru/404|https://carbis.ru/404]]' не существует. Плагин не работает. url = '[[https://soft.carbis.ru/sh_ii/test_news.html|https://soft.carbis.ru/sh_ii/test_news.html]]' # Страница по адресу '[[https://soft.carbis.ru/sh_ii/test_news.html|https://soft.carbis.ru/sh_ii/test_news.html]]' существует. # Плагин отображает тестовую новость. |
| {{:external:pasted:20201101-143146.png}} |
| |
| ---- |
| |
| **10_GDocs_1_256** Плагин "Документы". Анализ текущего состояния документооборота. |
| |
| * Дата последних п/н |
| * Анализ компенсаторов за вчера, 3 дня, неделю и месяц |
| * Даты проведенных инвентаризаций по каждому подразделению (складу) |
| |
| Каждая метрика включает в себя "светофор": |
| |
| * Зеленый - все хорошо |
| * Желтый - следует обратить внимание, по данной метрике есть провалы |
| * Красный - необходимо предпринять определенные действия т.к. параметры имеют не допустимые значения. |
| |
| {{:external:pasted:20201115-142436.png}} |
| |
| ---- |
| |
**2_ODocs.py** Данный плагин анализирует наличие не проведенных Заявок за последний месяц. Если все заявки по вчерашний день включительно проведены - Зеленый. Если в БД SH есть не проведенные заявки за 3 последних дня - Желтый. Если заявки не проведены более 4х дней - Красный. **ВНИМАНИЕ!** В базовом варианте плагин игнорирует заявки созданные в ручную. Анализ ведется только по импортированным заявкам. Но вы можете изменить эту логику поменяв фильтры в запросе к SH. {{:external:pasted:20201101-143220.png}} | **2_ODocs.py** Данный плагин анализирует наличие не проведенных Заявок за последний месяц. Если все заявки по вчерашний день включительно проведены - Зеленый. Если в БД SH есть не проведенные заявки за 3 последних дня - Желтый. Если заявки не проведены более 4х дней - Красный. **ВНИМАНИЕ!** В базовом варианте плагин игнорирует заявки созданные в ручную. Анализ ведется только по импортированным заявкам. Но вы можете изменить эту логику поменяв фильтры в запросе к SH. {{:external:pasted:20201101-143220.png}} |
| |
**3_EDocs.py** Плагин проверяет наличие не принятых документов ЕГАИС. Если в БД ведется несколько ЮЛ то анализ ведется по документам каждого ЮЛ. Если на предприятии не работают с ЕГАИС - отключите данный плагин, удалив этот файл из папки plugins {{:external:pasted:20201101-143228.png}} | ---- |
| |
**4_GRemns.py** Данный плагин используется для анализа товарных остатков по значению Min и Max товарного запаса, указанным в карточке товара. Для расчета берется остаток по ВСЕМ складам. Т.е. если на складе А товар меньше минимума, а на складе Б он есть в большом количестве, то его не нужно закупать. Можно делать копии данного плагина, в коде запроса добавлять RID конкретного склада или предприятия и получать отдельные показатели по нужным складам/предприятиям. {{:external:pasted:20201101-143251.png}} | **3_EDocs.py** Плагин проверяет наличие не принятых документов ЕГАИС. Если в БД ведется несколько ЮЛ то анализ ведется по документам каждого ЮЛ. Если на предприятии не работают с ЕГАИС - отключите данный плагин, удалив этот файл из папки plugins |
| {{:external:pasted:20201101-143228.png}} |
| |
**5_GdsByGDocs.py** Данный плагин анализирует продажи за прошедший период и строит список товаров, которые необходимо докупить для бесперебойной работы заведения. Для заведений с небольшим меню (кофейни) рекомендуется брать для анализа 7-14 дней. Для заведений с большим меню (рестораны, бары) брать период равный 1 месяцу. Параметры для настройки плагина ggroup_rid = 2 # RID товарной группы содержащей в себе сырье (можно посмотреть в SH в свойствах ветки товара) days_range = 7 # Какой период (в днях) анализировать для построения прогноза будущих продаж red_threshold = 3 # "Красная" граница остатков в днях (товары которые надо срочно закупить) yellow_threshold = 7 # "Желтая" граница остатков в днях (товары которые нужно держать на контроле) {{:external:pasted:20201101-143303.png}} | ---- |
| |
**6_weather.py** Данный плагин выводит прогноз погоды. Выбрать нужный город и изменить внешний вид информера можно по адресу: [[https://yandex.ru/pogoda/213/informer|https://yandex.ru/pogoda/213/informer]] {{:external:pasted:20201101-143314.png}} | **4_RptDSale.py** Плагин строит графики по выручке, себестоимости и полученной прибыли за последние несколько дней (по умолчанию 7 дней). Эта же информация дублируется в табличном виде и дополняется значениями по наценке и фудкосту по дням. |
| {{:external:pasted:20201115-141820.png}}{{:external:pasted:20201115-141829.png}} |
| |
**7_Just4fun.py** Данный плагин выводит случайный анекдот. Можно использовать другие параметры для получения анекдота. Описание тут [[http://www.rzhunemogu.ru/FAQ.aspx|http://www.rzhunemogu.ru/FAQ.aspx]] {{:external:pasted:20201101-143322.png}} | ---- |
| |
| **5_GRemns.py** Данный плагин используется для анализа товарных остатков по значению Min и Max товарного запаса, указанным в карточке товара. Для расчета берется остаток по ВСЕМ складам. Т.е. если на складе А товар меньше минимума, а на складе Б он есть в большом количестве, то его не нужно закупать. Можно делать копии данного плагина, в коде запроса добавлять RID конкретного склада или предприятия и получать отдельные показатели по нужным складам/предприятиям. |
| {{:external:pasted:20201101-143251.png}} |
| |
| ---- |
| |
| **6_GdsByGDocs.py** Данный плагин анализирует продажи за прошедший период и строит список товаров, которые необходимо докупить для бесперебойной работы заведения. Для заведений с небольшим меню (кофейни) рекомендуется брать для анализа 7-14 дней. Для заведений с большим меню (рестораны, бары) брать период равный 1 месяцу. Параметры для настройки плагина ggroup_rid = 2 # RID товарной группы содержащей в себе сырье (можно посмотреть в SH в свойствах ветки товара) days_range = 7 # Какой период (в днях) анализировать для построения прогноза будущих продаж red_threshold = 3 # "Красная" граница остатков в днях (товары которые надо срочно закупить) yellow_threshold = 7 # "Желтая" граница остатков в днях (товары которые нужно держать на контроле) |
| {{:external:pasted:20201101-143303.png}} |
| |
| ---- |
| |
| **7_weather.py** Данный плагин выводит прогноз погоды. Выбрать нужный город и изменить внешний вид информера можно по адресу: [[https://yandex.ru/pogoda/213/informer|https://yandex.ru/pogoda/213/informer]] |
| {{:external:pasted:20201101-143314.png}} |
| |
| ---- |
| |
| **8_Just4fun.py** Данный плагин выводит случайный анекдот. Можно использовать другие параметры для получения анекдота. Описание тут [[http://www.rzhunemogu.ru/FAQ.aspx|http://www.rzhunemogu.ru/FAQ.aspx]] |
| {{:external:pasted:20201101-143322.png}} |
| |
===== FAQ (Вопросы и ответы) ===== | ===== FAQ (Вопросы и ответы) ===== |
| |
**Q:** Это правда бесплатно? А почему? **A:** Да, этот модуль поставляется абсолютно бесплатно и может быть установлен кем угодно на любом количестве объектов. Почему? Да просто потому что мы так решили… | **Q:** Это правда бесплатно? А почему? |
| **A:** Да, этот модуль поставляется абсолютно бесплатно и может быть установлен кем угодно на любом количестве объектов. Почему? Да просто потому что мы так решили… |
| |
**Q:** Могу ли я самостоятельно разрабатывать свои плагины и/или модифицировать те что включены в поставку? **A:** Да. Если вы решите поделиться своим вариантом плагина с нами - мы включим его в базовую поставку с указанием автора. | **Q:** Могу ли я самостоятельно разрабатывать свои плагины и/или модифицировать те что включены в поставку? |
| **A:** Да. Если вы решите поделиться своим вариантом плагина с нами - мы включим его в базовую поставку с указанием автора. |
| |
**Q:** А вы можете написать специальный плагин по моему запросу? **A:** Да. Если это будет решение интересное для всех пользователей, то мы напишем его бесплатно и включим в общую поставку. Если это какое то нишевое решение, востребованное в частном случае, то мы готовы рассмотреть варианты платной разработки на основе ТЗ. | **Q:** А вы можете написать специальный плагин по моему запросу? |
| **A:** Да. Если это будет решение интересное для всех пользователей, то мы напишем его бесплатно и включим в общую поставку. Если это какое то нишевое решение, востребованное в частном случае, то мы готовы рассмотреть варианты платной разработки на основе ТЗ. |
| |
**Q:** Я нашел баг! У меня есть гениальная идея! Куда писать? **A:** Сюда: info@carbis.ru | **Q:** Я нашел баг! У меня есть гениальная идея! Куда писать? |
| **A:** Сюда: info@carbis.ru |
| |
===== History ===== | ===== History ===== |
| |
| **v1.0.11.50 (06/10/2021)** |
| |
| * Исправлена ошибка при неудачном соединении с новостным сайтом Карбиса. |
| * Для запуска приложения теперь используется фреймворк waitress. |
| |
| **v1.0.8.45 (04/12/2020)** |
| |
| * В плагинах для работы с API Сторхауса добавлена проверка на правильность логина и пароля. |
| |
| **v1.0.7.44 (23/11/2020)** |
| |
| * Исправлена ошибка в плагине «Выручка/прибыль по дням» при отсутствии данных. |
| |
| **v1.0.6.43 (17/11/2020)** |
| |
| * Плагин «Анализ документооборота» вынесен как отдельный файл, теперь его порядок проще поменять. |
| * Исправлена бесконечная загрузка плагина при редких ошибках. |
| |
| **v1.0.4.41 (11/11/2020)** |
| |
| * Изменен движок обработки плагинов (убрана ошибка "Failed to execute script app". |
| * Добавлены новые плагины ("Анализ документооборота" и "Выручка/прибыль по дням"). |
| * Серверную часть можно запустить только службой. |
| * добавлено логирование работы службы ИИ и каждого плагина. |
| |
**v1.0.1.15 (02/11/2020)** | **v1.0.1.15 (02/11/2020)** |
| |
* Релиз проекта | * Релиз проекта |
| |
| |
| |