Интеграция ИС КСАЗД и ИС АКВа
Внешний интерфейс системы доступен по адресу http://ksazd-aqua.rao-esv.ru
Синхронизация данных по проектам производится ежесуточно в 07:30. Синхронизация данных по лотам производится каждые 10 минут.
Для установки модуля интеграции требуется наличие интерпретатора языка Ruby версии 2.1.0 или выше.
Установка производится в директорию /home/deployer/apps/ksazd2aqua
. Если будет использована другая директория, то нужно изменить пути в файлах config/ksazd2aqua.sh
, config/nginx.conf
.
Для установки приложения нужно перейти в директорию приложения, и запустить команды
$ git clone [email protected]:kodram/ksazd2aqua.git .
$ bundle
Для настройки параметров системы нужно скопировать файл config/configuration.example.yml
в config/configuration.yml
и указать в нем параметры подключения к базе данных и веб-сервисам. Если на сервере не используется proxy для доступа к веб-ресурсам, то нужно удалить параметр soap.proxy
в конфигурационном файле. Пользователь базы данных для приложения должен иметь грант select
на таблицы схемы ksazd
.
Создание таблиц требующихся для работы системы и заполнение данными справочников производится командой
$ bundle exec rake db:setup
Настройка cron-задач для загрузки проектов и передачи лотов производится командой
$ bundle exec whenever -w
Проверить результат выполнения можно запуском команды
crontab -l
Перед запуском веб-сервера необходимо создать символьные ссылки на файлы конфигурации nginx и скрипт запуска веб-сервера
$ ln -nfs config/nginx.conf /etc/nginx/sites-available/ksazd2aqua
$ ln -nfs config/ksazd2aqua.sh /etc/init.d/thin-ksazd2aqua
Запуск веб-сервера производится командой
$ bin/start
Для обновления системы следует перейти в директорию системы и запустить команды
$ git pull
$ bin/restart
Для мониторинга состояния системы можно пользоваться веб-интерфейсом. Более подробная информация о работе системы находится в log-файлах в директории logs
.
Текущие ошибки интеграции отображаются в таблице на странице http://ksazd-aqua.rao-esv.ru. Если текст ошибки начинается с префикса "КСАЗД:" это ошибка на стороне модуля интеграции. Если текст ошибки начинается с префикса "АКВА:" это ошибка на стороне веб-сервиса ИС АКВа.
Не удалось найти заказчика АКВА для id ### или Не удалось найти подразделение-куратор АКВА для id ###
В мэппинг-таблицах departments или monitor_services отсутствует строка с соответствующим идентификатором. Для устранения подобных ошибок нужно согласовать добавление соответствующих значений в справочники АКВа с департаментом закупок РусГидро и отправить согласование администраторам АКВа для добавления этих значений в их справочник, а затем внести соответствующие изменения в мэппинг-таблицы.
Другие ошибки
Могут быть связанны с не конистентностью данных в КСАЗД либо программной ошибкой. Для диагностики подобной ошибки нужно подставить значения GUID'ов для лота, в котором произошла ошибка в строки #5 и #6 файла rakelib/test.rake
. После чего запустить команды
$ bundle exec rake test:aqua_lot
$ bundle exec rake test:contractors_list
и производить отладку приложения.
Подробную информацию об ошибках на стороне веб-сервиса АКВа можно увидеть в логе загрузки лотов (логин: KSZAD, пароль: 654321)
Большая часть из них связанна с ограничениями на отсутствие данных в обязательных для заполнения полях, и может быть исправлена заполнением соответствующих полей в ИС КСАЗД.
Иногда могут быть ошибки связанные с отсутствием данных в справочниках АКВа. Для устраниения подобных ошибок следует связаться с администраторами ИС АКВа.
(soap-env:Server) Ошибка при обработке веб-сервиса
Ошибка при обработке xml-пакета. Для диагностики ошибки нужно подставить значения GUID'ов для лота, в котором произошла ошибка в строки #7 и #8 файла rakelib/aqua.rake
. После чего запустить команды
$ bundle exec rake aqua:new_lot
$ bundle exec rake aqua:vcr_to_xml\[lots\]
и отправить файл fixtures/vcr_cassettes/lots.xml
администраторам системы АКВа для разбора.
Перед запуском команд нужно удалить файл fixtures/vcr_cassettes/lots.yml
.