Git Product home page Git Product logo

ovcharenko-di / reperr Goto Github PK

View Code? Open in Web Editor NEW
59.0 16.0 18.0 81 KB

Веб-приложение для автоматической регистрации ошибок информационных баз, работающих на платформе 1С:Предприятие 8.3.17+

License: MIT License

1C Enterprise 91.33% HTML 7.95% CSS 0.45% JavaScript 0.11% Dockerfile 0.15%
onescript 1c-enterprise 1c web

reperr's Introduction

reperr

quality gate coverage

Веб-приложение для автоматической обработки ошибок информационных баз, работающих на платформе 1С:Предприятие 8.3.17+

Содержание

Введение

Название reperr образовано от report и error, произносится как рэпер ✌️

Веб-приложение создано для автоматической обработки ошибок, которые возникают в информационных базах на платформе 1С:Предприятие версий 8.3.17+. Позволяет автоматически регистрировать ошибки во внешнем баг-трекере, с указанием имени и версии конфигурации, стека вызовов, скриншотом окна и прочей информацией, которая передается клиентским приложением.

Возможности

  • Сохранение запросов информации об ошибках, которые направляет клиентское приложение.
  • Распаковка поступающих отчетов об ошибках.
  • Автоматическая регистрация ошибок в баг-трекере (Jira, Redmine).
  • Отображение Ид задачи из баг-трекера прямо в окне 1С, если такая ошибка уже была зарегистрирована там ранее.
  • Запрет повторной регистрации одной и той же ошибки.
  • Отправка сообщений с информацией об ошибке в точку обмена RabbitMQ.
  • Отправка сообщений с информацией об ошибке в Sentry.

Установка и запуск

Запуск в docker-контейнере

  • клонировать текущий репозиторий
  • внести изменения в src/appsettings.json (подробнее)
  • внести изменения в docker-compose.yml
  • выполнить команду 'docker-compose up -d'
  • убедиться, что веб-интерфейс открывается в браузере
  • подключить информационные базы 1С (подробнее)

Посмотреть лог контейнера можно с помощью команды docker logs -f <ID>, где <ID> - идентификатор контейнера, который выводит команда docker container ps -a

Ручная установка и запуск

  • распаковать OneScript.Web в любой локальный каталог
  • клонировать текущий репозиторий
  • внести изменения в src/appsettings.json (подробнее)
  • в каталоге src/ выполнить команду opm install -l для установки локальных зависимостей
  • из корневого каталоге проекта запустить OneScript.WebHost.exe (см. каталог, в который был распакован OneScript.Web на первом шаге)
  • убедиться, что веб-интерфейс открывается в браузере
  • подключить информационные базы 1С (подробнее)

Настройка приложения

Все параметры приложения расположены в файле src/appsettings.json.

Подразделы DataStorage и Integrations содежат списки поддерживаемых хранилищ данных и баг-трекеров соответственно. Приложение считывает эти настройки в момент запуска и использует первый активированный способ ("enabled": true). Для того, чтобы изменения вступили в силу, достаточно просто перезапустить приложение / контейнер.

Подключение информационных баз 1С

URL, по которому доступно приложение, необходимо указать в информационных базах, которые требуется подключить к сервису.

Расположение настроек: Функции для технического специалиста -> Стандартные -> Управление настройками обработки ошибок -> Адрес сервиса регистрации ошибок.

Требования

  • OneScript.Web 0.7.0 (на других версиях работоспособность не проверялась)
  • 1С:Предприятие 8.3.17+ (в более младших версиях отсутствуют необходимые возможности платформы)

Особенности и ограничения

  • настройки регистрации ошибок хранятся внутри информационной базы, поэтому может потребоваться ручное отключение регистрации ошибок в копиях информационных баз.
  • на данный момент механизм регистрации ошибок не предоставляет практически никакой информации об информационной базе, в которой произошла ошибка.
  • ошибки регистрируются в баг-трекере от имени владельца API-ключа, а не от лица пользователя информационной базы.
  • веб-интерфейс пока почти полностью состоит из заглушек.
  • какие-либо ограничения доступа на уровне веб-приложения отсутствуют. Любой, кто сможет открыть веб-интерфейс, сможет просматривать всю информацию.
  • отправка присоединенных файлов в точку обмена RabbitMQ пока не поддерживается.

Планы по развитию

  • настройка приложения с нуля через веб-интерфейс
  • передача API-ключей для баг-трекеров через переменные окружения
  • поддержка YouTrack, СППР ред. 1 и 2 в качестве баг-трекера
  • гибкая настройка параметров регистрации ошибок
    • определение необходимости регистрации ошибки
    • кастомизация сообщения, которое выводится пользователю
  • перевод приложения на библиотеку entity
    • поддержка хранения данных во внешней БД
  • аутентификация пользователей веб-приложения

Обратная связь и доработка

Опишите ваш вопрос \ пожелание в виде Issue.

Разработка ведется по git-flow, PR крайне приветствуются.

Архитектура приложения позволяет относительно легко добавить свой баг-трекер и чуть сложнее - собственное хранилище данных (планируется перевод приложения на entity).

Зависимости

Спасибо авторам и контрибьюторам!

Авторы

reperr's People

Contributors

ovcharenko-di avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

reperr's Issues

[BUG] reperr не успевает ответить клиентскому приложению 1С при большом количестве записей в errorInfoRequests.json

возможно, выполняются какие-то лишние действия при работе с файлом.
в любом случае, переход на entity должен решить проблему

Способы обхода:

  • удалить errorInfoRequests.json, перезапустить приложение
  • почистить errorInfoRequests.json

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

  • для каждого запроса информации об ошибке вычислять "отпечаток" ошибки и сохранять его
  • сохранять URL или Ид задачи вместе с отпечатком каждой ошибки, отчет по которой был успешно отправлен в Redmine\Jira (не актуально для RabbitMQ и Sentry)
  • выводить пользователю информативное сообщение в случае, если ошибка уже зарегистрирована (например, добавить в него Ид задачи)
  • (опционально) отключать кнопку "Отправить отчет" в случае, если ошибка уже зарегистрирована

Работа с несколькими системами интеграции

Сейчас возможно единовременно выбрать только одну систему интеграции тогда как правильнее выбирать несколько систем.
Для этого надо при получении собщения регистрировать его в очереди, см #19.
И надо в зависимости от выбранных настрое генерить задачи обработки, по одной задаче на активные в момент получения ошибке системы интеграции.

Итого должен быть менеджер заданий с интерфейсом:

  • ЗапанироватьОбработку(Путь, СистемаИнтеграции, ДатаСледующейПопытки);
  • ВыполнитьОбработку()

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

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

Удаление ошибок через API

Цель: автоматизировать чистку "мусора" (выполненных задач).

Добавить метод АПИ для удаления информации об ошибке по внеш. номеру задачи.
Многие трекеры задач позволяют настраивать web-хуки на определенные события.

Определять необходимость регистрации ошибки

Реализовать фильтрацию ошибок, которые приходят в методе GetInfo.

  • добавить в приложение список правил-исключений (с поддержкой RegEx)
  • кнопка "Отправить отчет" можно будет только в том случае, если для этого GetInfo не нашлось ни одного правила, под который он попадает

Нужна очередь отправки сообщений

Сейчас пересылка идет на лету.
Это не правильно.
Надо получать сообщения и регистрировать их в очереди обработки.
Потом регламентным заданием отправлять по системам интеграции.
Так же это нужно для возможности ретрая в случае недоступности системы интеграции.
Например Sentry часто падает в рейт лимит и возникает таймаут, потому надо четко отслеживать когда система станет вновь доступна и досылать новые сообщения.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.