No description
| .vscode | ||
| configs | ||
| libs/event-emitter | ||
| src | ||
| test | ||
| views | ||
| .editorconfig | ||
| .eslintrc.js | ||
| .gitignore | ||
| .prettierrc | ||
| nest-cli.json | ||
| package-lock.json | ||
| package.json | ||
| README-NestJS.md | ||
| README.md | ||
| tsconfig.build.json | ||
| tsconfig.json | ||
Eltex Redmine Framework
Проект для автоматизации работы с Redmine
Проблема
Для реализации групп задач нужно регулярное обращение к Redmine API:
- Групповая загрузка данных по задачам
- Обработка изменений в задачах в режиме реального времени
Оба сценария могут приводить к перегрузке основного Redmine и временной недоступности его функций для всей компании.
Решить проблему можно с помощью кеширования данных, обёрткой над api к кешу.
Решения
- libs/event-emitter (redmine-issue-event-emitter) -- подписывается на обновления задач (issue) через email или rss, при получении новых писем выполняется обращение к основному redmine api, полученные данные становятся доступны внутри фреймворка по подписке с помощью RxJS, так же возможна рассылка данных через webhook (http post) и через websocket (socket.io v2).
- libs/redmine-issue-cache-writer -- сохраняет данные в couchdb, сравнивает прошлую запись с новой версией, рассчитывает diff журнала изменений