Загальна інформація
Починаючи з версії 3.0 деякі задачі в "Рахівниці" були виділені в окремі мікросервіси - невеликі програми з котрими користувач безпосередньо не взаємодіє, але котрі використовуються іншими програмами. Всі вони представляють REST API для комунікації і побудовані за схожими принципами.
Всі мікросервіси працюють як демони в Linux або служби у Windows. Всі вони конфігуруються одноіменним .ini файлом. При запуску у Linux конфігураційний файл шукається в таких місцях: - $XDG_CONFIG_HOME/abacus/ - $HOME/.config/abacus/ - /opt/abacus/etc/ - /etc/abacus/ - власний каталог програми
При запуску у Windows файл шукається в наступних місцях: - %PROGRAMDATA%\Abacus\ - %LOCALAPPDATA%\Abacus\ - власний каталог програми
Використовується перший знайдений файл, тому якщо ви редагуєте .ini файл що лежить поруч з бінарником і програма ігнорує ваші зміни, перевірте чи часом у вас немає ще одного-двох конфігів у інших місцях з переліку вище.
Кожна програма веде .log файл. Як і у випадку з файлами конфігурації, використовуєтсья перший з доступних для запису каталогів у такій послідовності: для Linux - /var/log/abacus/ - /opt/abacus/log/ - $HOME/.config/abacus/log/ для Windows - %PROGRAMDATA%\Abacus\Logs\ - .\Logs\ - %LOCALAPPDATA%\Abacus\Logs\
Доступ до REST API кожного сервісу конфігурується у елементі whitelist у файлах конфігурації. Додатково, кожен запит повинен містити заголовок X-API-KEY з валідним ключем.
Abasyn
abasyn — це сервіс синхронізації та реплікації баз даних Abacus.
Детально що таке реплікація та як нею користуватись описано тут.
Керування реплікацією
Для активації реплікації необхідно:
1. Додати записи про бази-приймачі в таблицю rpl_databases головної бази даних (поля dbname, dbuser, dbpass).
2. Виконати POST-запит на /api/repl/initialize. Це ініціалізує необхідні метадані та тригери в БД.
3. Перевірити статус можна через GET-запит на /api/repl/status або /api/repl/receivers.
Abhard
abhard — проксі-сервіс для роботи з торговим обладнанням (сканери, принтери, ваги, ПРРО).
Конфігурація (abhard.ini)
Конфігурація складається з основної секції [main] та описів пристроїв [device_...].
- Сканери: підтримуються serial (COM-порт), hid та devfile (/dev/hidraw).
- Принтери: escpos (через USB порт або пристрій) та dummy (запис у файл для тестування).
- Ваги: моделі VTA16, DigiDS.
- ПРРО: інтеграція через бібліотеку eusign (необхідно вказати шляхи до ключів та сертифікатів).
База користувачів та токени
abhard використовує систему токенів, що зберігаються у файлі tokens.json. При першому запуску файл відсутній. Щоб його створити, потрібно відправити запит на /api/admin/initialise. Програма ініціалізує базу користувачів та створює токен адміністратора котрий відпраляється у відповіді на запит. Його необхідно зберегти та використовувати в заголовку X-API-KEY для подальшого керування токенами та обладнанням. Його не треба використовувати для звичайної роботи. Для цього потрібно створити токен користувача що на даний момент може мати два типи: worker та probationer. Токен worker використовується для звичайної роботи працівника і має повний доступ до обладнання. Токен probationer використовується для користувачів що не повинні мати доступ до певного функціоналу. На даний момент з цим токеном не можна відкрити та закрити фіскальну зміну.
Abrest
abrest — REST-сервіс для доступу до даних основної системи. Наразі знаходиться в активній розробці. Мінімальний функціонал повинен забезпечити синхронізацію залишків та документів між базою даних Abacus та інтернет-магазинами.