[Назад] [Дальше] [Оглавление]

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

Рассмотрим этапы обработки статистики сервером от исходных данных до итоговых записей на лицевых счетах пользователей (смотрите таже диаграмму).

  1. Первым этапом является получение системной статистики (почта, uucp, время, дампы ip, файлы с BBS и т.п.) и преобразование ее с помощью программ-фильтров в принимаемый сервером формат. Обычно фильтры запускаются ежедневно из модуля daily. Результатом обработки системной статистики становятся файлы с расширением `.st' в домашних каталогах пользователей.

    Обычно после обработки исходная статистика архивируется, хотя это и не требуется для функционирования сервера. Пример автоматической архивации Вы можете увидеть в модуле daily-mail.

    Образно говоря, фильтр не знает что будет делать дальше сервер с сгенерированным им файлом, сервер не знает что за информация послужила основой для поданного ему `.st'-файла (было это количество проданных пирожных или время работы на BBS).

  2. Информация в `.st' файлах комбинируется с данными прайс-листов модулем convertstat и переносится в SQL таблицу statistic. При необходимости, учитываются курсы указанных в прайс-листах валют (смотрите описание работы с валютами), внесенные в SQL таблицу rates с помощью модуля setrate (или какого-либо front-end'а). В таблице statistic данные о статистике хранятся уже в виде стоимости услуг. В дальнейшем сервер оперирует только с ними.

    Ни один модуль сервера, кроме convertstat ``не знает'' о существовании файлов *.st или прайс-листов.

  3. Один раз в месяц сумма всех строк таблицы statistic за месяц списывается с лицевого счета пользователя с помощью модуля accadmin модулем monthly (нет нужды запускать его самостоятельно - запуск предусмотрен в модуле daily). Обычно одновременно с этим генератором отчетов создаются и отсылаются пользователям итоговые ``акты об оказанных услугах''.
  4. Генератором отчетов (модуль mkreport) с использованием данных статистики, лицевого счета, пользовательских конфигурационных файлов на основе заранее созданных или динамически создаваемых форм создаются отчеты. Отчеты могут быть записаны в файл или отосланы на административный адрес пользователя.

Теперь рассмотрим алгоритм работы сервера в течение месяца по контролю лицевых счетов пользователей.

  1. По мере поступления платежей от клиентов их вводят на лицевые счета пользователей с помощью модуля accadmin (или каких-либо front-end'ов). Теоретически можно вводить платежи и непосредственно в SQL таблицу accounts (при этом необходимо лишь корректно генерировать идентификатор ряда), однако это не рекомендуется.

    При внесении платежей их обычно вносят или уже без НДС, или сразу списывают НДС следующей операцией (в модуле accadmin для этого предусмотрен параметр `vat' ). Возможно вести операции с лицевым счетом и с поными суммами платежей (при этом надо лишь не забыть добавить НДС в цены прайс-листов и отредактировать соответствующим образом формы генератора отчетов), но автором сервера такой механизм работы не проверялся.

  2. Ежедневно при запуске модуля daily происходит проверка по указанным в конфигурационном файле формулам остатков на счетах пользователей с учетом расходов в текущем месяце и, при необходимости, рассылка генератором отчетов предупреждений и счетов на доплату по заданным формам. Кроме того, вместе с отсылкой предупреждений может быть запущен некоторый скрипт, позволяющий, например, автоматически закрыть доступ в систему задолжнику. Подчеркнем при этом, что никакие из этих действий не заложены жестко в структуру сервера статистики - их настройка и выполнение целиком под Вашим контролем.

На этом перечень действий, выполняемых ``ядром'' сервера завершается, однако в поставку включены еще некоторые полезные утилиты (смотрите их описания в главе ``Описания модулей сервера''):


[Назад] [Дальше] [Оглавление]