Начиная с версии 4.6.182 скрипт maint_prices.py удаляет устаревшие переоценки и дополнительные цены.

Утилита maint

Для исключения бесконтрольного увеличения размеров логов и данных используется "подрезка данных". "Подрезка данных" подразумевает ограничение количества записей в базе данных и ограничение количества хранимых файлов журналов путем удаления устаревших данных и ротации (циклического переименования) лог-файлов. Выполнение данных регламентных процедур возложено на утилиту maint.

Утилита maint входит в состав пакета artix-maint-mysql

Параметры ротации и архивирования логов задаются в файле /linuxcash/cash/conf/maint.json. Настройки разбиты на следующие разделы: 

  • shiftly определяет правила ротации данных после закрытия смены;
  • weekly управляет удалением устаревших архивов и директорий;
  • manual необходим для удаления устаревшей информации из базы данных;
  • prices необходим для удаления устаревших переоценок из базы данных,
  • custom определяет правила ротации логов для интернет-магазина.

Выполнение регламентных процедур может быть осуществлено с двумя классами объектов objectname:

  • directory – директория;
  • file – файл.

Утилита maint позволяет выполнять с объектами directory следующие действия:

  • delete – удаление;
  • copy – копирование;
  • rename – переименование;
  • compress – сжатие (используется архиватор zip);
  • move – перемещение.

Для объектов file доступны только процедуры копирования (copy) и переименования (rename).

НаименованиеТип данныхВозможные значенияОписаниеПримечания
pathстроковый
Исходный каталог, в котором расположен объект directory
maskстроковый
Маска, по которой выполняется выбор имен объектов
nameстроковый
Абсолютный путь и префикс имени объекта file
filterстроковый
Суффикс имени объекта fileСписок объектов для воздействия строится по правилу: ‘name’*’filter’.
transformстроковый

Правило переименования объектов, которые перемещаются, переименовываются или сжимаются. При переименовании используются переменные:

  • cashcode – код кассы;
  • shift – номер смены;
  • srcname – исходное имя объекта (директории или файла).

Параметр не должен содержать расширение файла.


destinationстроковый
Целевая директория, в которую происходит перемещение, копирование или сжатие объектов
rangetype строковый
  • exceptfirst
  • exceptlast
  • first
  • last

Правило подбора объектов.

Возможны значения: 

  • exceptfirst – все объекты кроме первых;
  • exceptlast – все объекты кроме последних;
  • first – первые;
  • last – последние.

Порядок сортировки: по времени создания объекта.

Используется для выбора смен в связке с параметром rangecount.
rangecount целочисленныйцелое число большее нуляОграничение количества объектов, над которыми выполняются манипуляции
Пример настройки
{
  "objectname": "directory",
  "path": "/linuxcash/logs/cashlogs/*",
  "rangetype": "exceptlast",
  "rangecount": 8,
  "action": "delete"
}

Перенос и архивация данных после закрытия смены

  • Логи из директории /linuxcash/logs/current архивируются в /linuxcash/logs/archive/logs/, а также помещаются в /linuxcash/logs/cashlogs/.
  • Файловая база данных для сервиса softwarefn из директории /linuxcash/cash/data/softwarefn/ архивируется в /linuxcash/cash/data/archive/softwarefn/.

Удаление устаревших данных на кассе

Журналы событий за 8 последних смен размещаются в директории /linuxcash/logs/cashlogs/, данные для 30 последних смен архивируются и переносятся в директорию /linuxcash/cash/data/backup/. Данные базы данных для сервиса softwarefn остаются в директории /linuxcash/cash/data/archive/softwarefn/ в количестве 30 архивов. Остальные данные считаются устаревшими и удаляются. 

Правила удаления устаревших данных выполняются планировщиком 1 раз в 3 часа в соответствии с настройками раздела weekly.

Удаление устаревших данных из БД

Удаление устаревших смен

Удаление устаревших данных из БД Documents производится дискретно по сменам. Удаление каждой смены выполняется через заданный интервал времени. 

Задача выполняется планировщиком ежедневно в соответствии с правилами, заданными в разделе manual.

Количество смен, информация о которых считается актуальной, определяется параметром shiftCount. Данные более ранних смен считаются устаревшими и удаляются. Так как в базе данных может храниться информация с нескольких касс, то объем устаревших данных определяется для каждой кассы отдельно.

Удаление устаревших смен осуществляется с определенным временным интервалом, задаваемым параметром timeout. Определение интервала времени между удалением смен позволяет равномерно сбалансировать нагрузку на кассу.

Наименование
Тип данных
Возможные значения
Описание
Примечания
shiftCount целочисленный

целое число большее нуля

Количество актуальных смен


timeout целочисленныйцелое число большее нуля

Интервал времени между удалением смен

Указывается в секундах
Пример настройки
"manual":
 {
   "shiftCount": 20,
   "timeout": 240
 }

Для удаления устаревших смен используется скрипт /linuxcash/cash/bin/maint_db.py. Запуск процесса удаления переоценок выполняется планировщиком раз в сутки. Результат работы скрипта записывается в файл /linuxcash/logs/current/maint_db.log.

Удаление устаревших переоценок и дополнительных цен

При подрезке переоценок и дополнительных цен невозможна загрузка справочника с переоценками и дополнительными ценами. Загрузка справочников будет осуществлена только после завершения подрезки данных.

Данные о переоценках, в отличие от других справочников, накапливаются в базе данных. Уникальность записи в таблице переоценок определяется штрих-кодом товара и моментом времени, с которого начинает действовать цена. С течением времени для товара накапливается большое количество цен, многие из которых перестают быть актуальными.

Удаление устаревшей информации выполняется в два этапа. На первом этапе собирается информация о последних актуальных ценах по каждому штрих-коду и формируется задание для подсистемы обмена данными. На втором – подсистема обмена данными выполняет удаление информации.

Параметры удаления устаревших переоценок задаются в файле /linuxcash/cash/conf/maint.json в разделе "prices".

Количество записей в блоке на удаление определяется параметром pricesCount. Для снижения нагрузки на кассу во время выполнения регламентных процедур задано значение 500 записей.

Задержка между циклами подбора информации определяется параметром timeout. По умолчанию предусмотрена задержка 240 секунд.

Наименование
Тип данных
Возможные значения
Описание
Примечания
pricesCountцелочисленный

целое число большее нуля

Количество удаляемых записей


timeout целочисленныйцелое число большее нуля

Интервал времени между удалением записей

Указывается в секундах
Пример настройки
"prices":
    {
       "timeout": 240,
       "pricesCount": 500
    }

Для подбора устаревших переоценок и дополнительных цен используется скрипт /linuxcash/cash/bin/maint_prices.py. Запуск процесса удаления переоценок и дополнительных цен выполняется планировщиком 1 раз в неделю. Результат работы скрипта записывается в файл /linuxcash/logs/current/maint_prices.log.

Удаление переоценок осуществляется через очередь File-Queue, параметры fileQueueRoot = /linuxcash/cash/data/queues и queueChunkSize = 25000.

Перенос и архивация логов для интернет-магазина

Логи из директории /linuxcash/logs/current архивируются в /linuxcash/logs/archive/logs/ и переименовываются согласно правилам, заданным в разделе "custom".

Наименование
Тип данных
Описание
Примечания
dateformatстроковый

Формат даты и времени для наименования архива с логами интернет-магазина

По умолчанию "%Y-%m-%d %H:%M:%S"

Пример настройки
  "custom": [
    {
      "objectname": "directory",
      "path": "/linuxcash/logs/current/",
      "rangetype": "last",
      "rangecount": 1,
      "action": "compress",
      "destination": "/linuxcash/logs/archive/logs",
      "transform": "l-%(currentdatetime)s",
      "dateformat": "%Y-%m-%d %H:%M:%S"
    },
    {
      "objectname": "directory",
      "path": "/linuxcash/logs/current/*",
      "action": "delete"
    }
  ]
  • No labels