forum.bitel.ru
http://forum.bitel.ru/

Подневная обработка логов cdr.
http://forum.bitel.ru/viewtopic.php?f=58&t=10508
Страница 1 из 1

Автор:  stark [ 13 май 2015, 17:07 ]
Заголовок сообщения:  Подневная обработка логов cdr.

В модуле Phone можно добавить один час на обработку. В Voice в целях оптимизации хранения данных о диапазонах потребленного трафика хотим сделать обработку логов только за день, т.е нельзя добавить меньше чем одного день на обработку. Как это сейчас в inet сделано. Кому-нибудь нужна возможность обработать только один час?

Автор:  Phricker [ 13 май 2015, 17:15 ]
Заголовок сообщения:  Re: Подневная обработка логов cdr.

У нас требуют сделать обработку и меньше часа. Я говорю что это невозможно и т.д. и т.п.
А вы хотите раз в день.
Есть тарифы аля авансовые. Чтобы сильно в минус не ушел.

Автор:  stark [ 13 май 2015, 17:33 ]
Заголовок сообщения:  Re: Подневная обработка логов cdr.

Для runtime обсчета можно что-то придумать..Даже меньше часа . Тут речь идет о другом немного, о переобработке задним числом, когда что-то пошло не так. Т.е разделяем ситуацию
1) Появились данные за новый час (минуту, или вообще появился новый звонок в конце лога). Тогда будет как бы runtime для логов. Тут кстати надо подумать как еще.
2) Что-то поломалось и нужно задним числом исправить. Или задним числом добавить абонента . Вот тут хотим не меньше дня обрабатывать. Иначе нам нужно хранить на каждый час много дополнительной информации в базе.

Автор:  Phricker [ 13 май 2015, 18:01 ]
Заголовок сообщения:  Re: Подневная обработка логов cdr.

Аааа... В таком случае да. Если задним числом то я обычно обрабатываю днями/месяцами.

Автор:  Cromeshnic [ 13 май 2015, 20:37 ]
Заголовок сообщения:  Re: Подневная обработка логов cdr.

Если уж переобрабатывать, то обычно не парит больше логов в загрузку добавить, чем нужно

Автор:  stark [ 19 май 2015, 17:51 ]
Заголовок сообщения:  Re: Подневная обработка логов cdr.

Итак пока схема обработки логов такая. Делается класс, назовем его Mediator. Он состоит из 2-х частей.

1) Метод getLogsForHour( Date hour, .. ) - получить логи за конкретный час. Используется при ручном добавлении обработки логов. Добавлять можно минимум день, но он все равно будет вызывать этот метод для каждого часа этого дня. Тут Mediator сам решает какие записи к какому часу относить. Причем он должен это делать однозначно.Определять может как угодно , многие АТС выгружают данные с именами файлов, в которых есть время в самом имени. Могут на основе время старта звонка относить к какому-то логу. Тут все отдается на откуп того, кто этот класс пишет. С нашей стороны будет реализация Mediator-а для старого формата логов Phone.

2) Метод getNewRecords(...) - выдает новые записи, с разбивкой по часам(так как в общем случае там могло скопиться за несколько часов) которые появись с момента предыдущего запуска метода . Как бы runtime. Периодичность запуска будет настраиваться. Тут Mediator будет сам решать опять же какие записи будут считаться новыми, и отнесение к конкретному часу должно быть согласовано с первым пунктом. Записи не должны дублироваться, т.е нельзя отдавать одну и ту же запись 2 раза. Вообще этот метод можно не делать, тогда не будет runtime обработки.

Тут остается вопрос , как быть с уже готовыми конвертерами для модуля phone. С 1-м пунктом тут нет проблем, но как вот поддержать старый режим когда просто конвертер раз в час запускался пл cron-у, создавал лог за новый час добавлял его на загрузку в DataLoader. Тут мы можем сделать дефолтную реализацию Mediator-а, которая будет искать логи старого формата и после обработки переименовывать . Т.е появился новый час, мы его распарсили, отдали записи из него и переименовали файл(добавили как-то суффикс например). При этом переобработка вручную из 1-го пункта будет учитывать все файлы и переименованные в том числе (или наоборот только переименованные).

Автор:  Cromeshnic [ 21 май 2015, 07:39 ]
Заголовок сообщения:  Re: Подневная обработка логов cdr.

А эти методы будут вызываться по планировщику или по запросу модулем Voice?
getNewRecords() сам должен вести учёт id последней отданной записи?
А что, если будет запрос getLogsForHour для часа новых записей, а getNewRecords для них ещё не вызывался? Должен ли я пометить у себя эти записи как "отданные"?
Будет ли метод сброса id последней записи для getNewRecords ?
Ну т.е. не очень пока понятен механизм работы getNewRecords.
Мне кажется, информация о том, какие звонки обработаны, а какие ещё нет ближе к самому модулю Voice.

Кстати, id для CDR сделали?

Автор:  stark [ 21 май 2015, 12:37 ]
Заголовок сообщения:  Re: Подневная обработка логов cdr.

Cromeshnic писал(а):
А эти методы будут вызываться по планировщику или по запросу модулем Voice?

По запросу приложения(accounting) для модуля Voice.
Cromeshnic писал(а):
getNewRecords() сам должен вести учёт id последней отданной записи?

Да, он может запоминать позицию в файле до которой он обработал лог, может переносить обработанные файлы в другие папки..может сохранять что-то в базу данных\, может в файлик.
Cromeshnic писал(а):
А что, если будет запрос getLogsForHour для часа новых записей, а getNewRecords для них ещё не вызывался? Должен ли я пометить у себя эти записи как "отданные"?

Вопрос интересный. По идее, да нужно пометить.
Cromeshnic писал(а):
Будет ли метод сброса id последней записи для getNewRecords ?
Ну т.е. не очень пока понятен механизм работы getNewRecords.

А зачем методе сброса id ? Вроде как Mediator за ним следит, а приложение про него ничего не знает. А если вообще нет id? Если например это просто в файл данные льются непрерывно в файл текстовый один и периодически он очищается ( у нас на wiki вроде md110 так работает) или разными файлики ama (si2000) падают по несколько звонков через каждые несколько минут.
Cromeshnic писал(а):
Мне кажется, информация о том, какие звонки обработаны, а какие ещё нет ближе к самому модулю Voice.

Да вот не уверен. Слишком тут много зависит от АТС - как она отдает данные.
Cromeshnic писал(а):
Кстати, id для CDR сделали?

Сделаем, это есть в TODO и не сложно.

Автор:  Cromeshnic [ 21 май 2015, 13:10 ]
Заголовок сообщения:  Re: Подневная обработка логов cdr.

stark писал(а):
Cromeshnic писал(а):
Мне кажется, информация о том, какие звонки обработаны, а какие ещё нет ближе к самому модулю Voice.

Да вот не уверен. Слишком тут много зависит от АТС - как она отдает данные.


В смысле, какие звонки Accounting считает, что обработаны, а какие - ещё нет. Речь как раз о пересчётах в текущем месяце или случае выше, когда логи за час берутся раньше, чем реалтайм-обработка их же.
Т.е. вопрос в том, как будет сочетаться обработка логов realtime с переобработкой в этом же месяце. Поэтому и возник вопрос сброса метки "отданных" звонков, например.

Автор:  stark [ 21 май 2015, 14:20 ]
Заголовок сообщения:  Re: Подневная обработка логов cdr.

Cromeshnic писал(а):
stark писал(а):
Cromeshnic писал(а):
Мне кажется, информация о том, какие звонки обработаны, а какие ещё нет ближе к самому модулю Voice.

Да вот не уверен. Слишком тут много зависит от АТС - как она отдает данные.


В смысле, какие звонки Accounting считает, что обработаны, а какие - ещё нет. Речь как раз о пересчётах в текущем месяце или случае выше, когда логи за час берутся раньше, чем реалтайм-обработка их же.
Т.е. вопрос в том, как будет сочетаться обработка логов realtime с переобработкой в этом же месяце. Поэтому и возник вопрос сброса метки "отданных" звонков, например.



Для Accounting все что пришло в getNewRecords - это новые звонки. Mediator сам должен согласовывать getLogsForHour и getNewRecords, Мы можем в Accounting поддержать id звонка( CDR_ID), если Mediator его будет передавать. Тогда из getNewRecords будут игнорироваться звонки с существующим CDR_ID. Если Mediator его не будет передавать, то за все отвечает он.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/