СОРМ3 Сигналтек Визирь (архив)

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (24)

просмотр истории страницы
Выгрузка подготовлена только для операторов ШПД.
{warning}Эта схема больше не поддерживается, пожалуйста используйте новую: [CarbonBilling:СОРМ3 Сигналтек Визирь]{warning}

h1. Что выгружается
{toc:maxLevel=3}

* Данные по абонентам
* Платежи
* Пулы IP-адресов
* Коммутаторы
* Типы удостоверений личности
* Точки соединения с операторами связи
* Маршрутизаторы
* Методы платежей
* Список операторов связи филлиалов
{info}Выгрузка подготовлена только для операторов ШПД.{info}

h1. Описание и настройка
h2. Сайт поставщика

h2. Описание
Для интеграции с СОРМ Сигналтек нужно:
* Развернуть в сети FTP
* Передать реквизиты доступа поставщику
* Настроить выгрузку на биллинге,
* Заполнить статичные справочники - некоторые данные заполняются вручную по мере необходимости , так как не хранятся в базе.
[Сигналтек АПК СОРМ Визирь-ИС|https://signaltec.ru/sorm/sorm3.html]

Выгрузка происходит одним скриптом по крону, по-умолчанию раз в сутки, но можно настроить с любой периодичностью, задав нужным отчетам необходимые префиксы.
Скрипт учитывает что после выгрузки из БД возможно данные необходимо как-то еще обработать, например в периодической выгрузке абонентов нужно отражать устаревшие записи.
h2. Как развернуть

h3. Пример как изменить период выгрузки
Предположим, по согласованию с куратором из органов Вам нужно сделать выгрузку раз в час:
* Сделайте sql-файл *hourly_abonents.sql*
* Сделайте csv-файл с заголовками выгрузки *hedings_abonents.csv* (он может быть общим для всех типов выгрузки)
* При необходимости как-то отредактировать SQL-выгрузку, создайте shell-скрипт *hourly_abonents.sh*
* Добавьте в CRON +host-системы+ запись:
{code}1 1 * * * root /app/asr_billing/cfg/sorm3/signaltec_upload.sh hourly &>>/app/asr_billing/var/log/sorm3_upload.log{code}
{note}Обратите внимание, что префикс имени файла *hourly* передаётся скрипту выгрузки параметром{note}
# Скачайте архив с файлами интеграции и распакуйте в нужной директории:
{code}
yum install -y wget
wget --no-check-certificate https://docs.carbonsoft.ru/download/attachments/157614082/sorm3-signaltec_20211028.tar.gz
mkdir /app/asr_billing/cfg/sorm3-signaltec
tar xzf sorm3-signaltec_20211028.tar.gz -C /app/asr_billing/cfg/sorm3-signaltec/
{code}
# Выполните скрипт настройки, он добавит системный атрибут типам документа (паспорт, загранпаспорт и тд), добавит его всем абонентам, настроит планировщик ОС и ротацию файла журнала
{code}/app/asr_billing/cfg/sorm3-signaltec/configure.sh all{code}
# Исправьте файл */app/asr_billing/cfg/sorm3-signaltec/config.ini* - укажите там параметры Вашего FTP. Секция FTP в конфигурационном файле должна выглядеть приблизительно так:
{code}
[ftp]
# Данные подключения к FTP
ftp_ip=10.90.1.185
ftp_login=carbon
ftp_pass=carbon
{code}

h2. Настройка
h2. Что нужно знать о выгрузках, скриптах и тд

h3. Подготовьте FTP-сервер
# Разверните в своей сети FTP-сервер
# Создайте на FTP пользователя с правами на чтение, запись, изменение и удаление файлов и папок
# Создайте в корневой директории папки:
#* abonents
#* payments
#* general
# Убедитесь что выше указанные права есть на папках ОС
h3. Примечания по архитектуре интеграции

h3. Настройте выгрузку из биллинга
# Скачайте архив [СОРМ3 Сигналтек^Signaltech-2020-02-13-3.tar.gz]
# Распакуйте в корень системы
# Отредактируйте файл */app/asr_billing/cfg/sorm3/signaltec_upload.sh*, укажите данные FTP-сервера:
{code}declare FTP_IP='127.0.0.1'
declare FTP_LOGIN='ftp_user'
declare FTP_PWD='ftp_password'{code}
#* FTP_IP - IP FTP-сервера
#* FTP_LOGIN - имя пользователя FTP-сервера
#* FTP_PWD - логи пользователя FTP-сервера
# Перезапустите CRON:
{code}/etc/init.d/crond restart{code}
# Заполните статичные данные по документации поставщика:
#* *static_telcos_short.csv* - список операторов связи. Указанный ID будет использоваться в дальнейшем в отчетах.
#* *static_gates_short.csv* - BRAS-сервера
#* *static_ip_data_points_long.csv* - точки соединения с другими операторами
#* *static_doc_types_short.csv* - список используемых документов для удостоверения личности
#* *static_pay_types.csv* - список платежных систем
# Отредактируйте динамический выгружаемые отчеты:
#* *periodic_payments_short.sql* - актуализируйте список платежных систем
# Выгрузите сделайте первоначальную выгрузку данных:
{code}/app/asr_billing/cfg/sorm3/signaltec_upload.sh static
/app/asr_billing/cfg/sorm3/signaltec_upload.sh periodic{code}
* По-умолчанию автоматический делаются выгрузки:
** раз в сутки: abonents
** раз в час: payment_short_daily
* Если хотите изменить частоту или набор выгрузок - поправьте */app/asr_billing/cfg/sorm3-signaltec/etc-host/cron.d/sorm3-signaltec-upload* и перезапустите cron
* Справочники нужно выгружать только при необходимости вручную, передав имена нужных выгрузок. Примерно так:
{code}/app/asr_billing/cfg/sorm3-signaltec/upload.sh gates_short ip_numbering_plan_short switches_short{code}

h3. Какие выгрузки формируются

- Данные об абонентах
-* abonents
- Справочные данные
-* ip_numbering_plan
-* payments
-* services
-* supplement_services
-* switches
-* telcos
-* doc_types
-* gates
-* ip_data_points_long
-* pay_types

h3. Какие не формируются и почему

* ip_data_points - в биллинге не хранятся данные по точкам подключения трафика.
* termination_causes - в биллинге не хранятся данные о причинах завершения соединений

Эти справочники Вы можете сформировать и загрузить на FTP вручную. Обязательно обсудите с поддержкой Сигналтек.

h3. Как сделать выгрузку вручную

Скриптом upload.sh, в качестве параметров через пробел перечислите нужные отчёты для выгрузки, например:
{code}/app/asr_billing/cfg/sorm3-signaltec/upload.sh ip_numbering_plan_short{code}

Можете запустить без параметров, скрипт напишет краткую справку и список отчётов которые можно выполнить:
{code:title=Команда}/app/asr_billing/cfg/sorm3-signaltec/upload.sh{code}
{code:title=Вывод}
2021-10-06 22:42:22 скрипт запущен

Укажите какие отчёты надо выгружать. Например:

upload.sh abonent abonent_ident abonent_address abonent_service

Справочники и данные об абонентах, которые можно выгрузить этим скриптом:

abonents
ip_numbering_plan_short
payments_short_complete
payments_short_daily
services
supplement_services
switches_short
telcos_short
doc_types_short
gates_short
ip_data_points_long
pay_types


Ещё скрипт можно запустить с дебагом, тогда файлы будут созданы, но без выгрузки на FTP. Например:

upload.sh abonent --debug

{code}

h3. Получение отчётов об выгрузках и ошибках с FTP

Визирь сохраняет отчёты о выгрузках на FTP:
* Файлы с расширением *txt* содержат сводный отчёт: сколько было сделано выгрузок за сутки, сколько удачных, сколько неудачных, какое количество данных в них содержалось
* Файлы с расширением *doc* содержат отчёт по конкретной выгрузке, *если в ней были ошибки*. Если выгрузка была полностью корректной - файла ods не будет. В отчёте будут выделены красным столбцы, в которых обнаружены ошибки. В последней колонке - пояснение, какая именно ошибка была обнаружена.

Для удобства работы с отчётами добавлен скрипт *error_reports.sh*, он позволяет получить список файлов на FTP и скачать необходимые файлы на сервер биллинга.
Если запустить его без аргументов, Вы получите справку:
{code}

Укажите, что нужно сделать:

list - получить список файлов с ошибками за сегодня
list all - файлы с ошибками за всё время
list dd.mm.yyyy - файлы с ошибками за выбранную дату ДД.ММ.ГГГГ (ДД или ДД.ММ тоже работают)
download - скачать самый последний файл в папке с отчётами об ошибках
download file - скачать выбранный файл


Например:

./error_reports.sh list
./error_reports.sh download abonents_2021_10_07_10_25.csv.invalid.ods

{code}

h12. Отладка
Скрипты выгрузки запускаются в режиме отладки и весь ход выполнения можно проанализировать по файлу */app/asr_billing/var/log/sorm3_upload.log*

h3. Данные из биллинга не выгружаются, при запуске upload.sh - ошибки

Пример вывода скрипта upload.sh
{code}# /app/asr_billing/cfg/sorm3-signaltec/upload.sh abonents --debug
2021-10-28 18:11:24 скрипт запущен
Statement failed, SQLCODE = -413
conversion error from string "29.02.1989"
After line 1 in file /cfg/sorm3-signaltec/reports/abonents.sql
2021-10-28 18:11:24 ......запускаем скрипт постобработки выгрузки abonents.sh
cat: /app/asr_billing/var/sorm3_data/abonents.csv_raw: Нет такого файла или каталога
2021-10-28 18:11:24 ......количество строк после постобработки: 0 (в сырой выгрузке было 0)
2021-10-28 18:11:24 Выгрузка abonents.csv_raw нет сформирована, возможно произошла ошибка при получении данных из биллинга
2021-10-28 18:11:24 скрипт завершен{code}

h4. В чём причина

Это может случиться, если какие-то данные заведены неверно, как в примере выше: в 1989 году нет 29 февраля, и СУБД не может конвертировать неверные данные в правильный формат datetime.
Другой причиной может быть формат, в котором данные замели, если он отличается от используемого в SQL-апросах. Например, если какой-то из стандартных [реквизитов|CarbonBilling:Реквизиты] поменяли. Чаще всего это паспортные данные или адреса.

h4. Как решить
# Исправьте ошибки - заведите данные или адаптируйте SQL-запросы под особенности Вашей выгрузки (например, каких-то абонентов выгружать не нужно, т.к. они служебные, или какие-то данные Вы храните в другом формате или реквизите, чаще всего это адреса и паспортные данные).
Отладить SQL запросы Вы можете по статье [CarbonBilling:Отладка отчетов]
# Повторите выгрузку вручную скриптом *upload.sh*

h3. Из биллинга выгружается пустой файл

Пример вывода скрипта upload.sh
{code}# upload.sh payments_short_daily
2021-10-28 17:49:55 скрипт запущен
2021-10-28 17:49:55 Файл /app/asr_billing/var/sorm3_data/payments_short_daily.csv_raw пуст
2021-10-28 17:49:55 скрипт завершен{code}

h4. В чём причина

Тут возможны несколько причин:
# Данных действительно нет.
#* Например, за сегодня сутки не было платежей.
#* Ещё пример: выгружаете справочник, который ещё не заполнили, допустим не успели завести [коммутаторы|CarbonBilling:Взаимодействие с коммутаторами] и выгружаете справочник *switches_short*.
# Данные в справочниках есть, но их недостаточно.
#* Например, завели абонентов без паспортных данных и услуг.
#* Ещё пример - завели коммутаторы, указали количество портов, но не указали адрес коммутатора
#* Ещё пример - добавили новую платёжную систему, но не провели повторную конфигурацию ./configure.sh prepare_payment_report

h4. Как решить
# Исправьте ошибки - заведите данные или адаптируйте SQL-запросы под особенности Вашей выгрузки (например, каких-то абонентов выгружать не нужно, т.к. они служебные, или какие-то данные Вы храните в другом формате или реквизите, чаще всего это адреса и паспортные данные).
Отладить SQL запросы Вы можете по статье [CarbonBilling:Отладка отчетов]
# Повторите выгрузку вручную скриптом *upload.sh*

h3. Выгрузки проходят, но с ошибками, на FTP в папке "errors" есть файлы .ods, что делать?

Пример вывода скрипта error_reports.sh
{code}# ./error_reports.sh list
cd ok, каталог=/errors
2021-10-28 00:16:40 abonents_2021_10_28_00_15_01.csv.invalid.ods{code}

h4. В чём причина

Причины могут быть разные: неверный формат данных, каких-то данных не хватает, обновилось ПО Сигналтек и изменились требования, и т.д.

h4. Как решить

# Скачайте отчёты на компьютер и откройте в Excel или LibreOffice Calc.
# В каждой строке красным отмечены поля, в которых обнаружены ошибки. В последней колонке написано, что эти ошибки значат.
# Обычно, они достаточно говорящие, например если абоненту или платежу не завели какие-то обязательные данные.
# Исправьте ошибки - заведите данные или адаптируйте SQL-запросы под особенности Вашей выгрузки (например, каких-то абонентов выгружать не нужно, т.к. они служебные, или какие-то данные Вы храните в другом формате или реквизите, чаще всего это адреса и паспортные данные).
Отладить SQL запросы Вы можете по статье [CarbonBilling:Отладка отчетов]
# Повторите выгрузку вручную скриптом *upload.sh*