Плагин Hledger — отображение текстовых бухгалтерских журналов в темах

:information_source: Краткое описание Отображение журналов hledger в виде живой панели управления в первом сообщении темы.
:hammer_and_wrench: Репозиторий gitea.kosmos.org/raucao/discourse-hledger
:open_book: Руководство по установке README

Возможности

Поместите журнал hledger в блок кода hledger в первом сообщении темы, и он будет заменен панелью управления с пятью отчетами, которые генерируются по запросу с помощью исполняемого файла hledger на сервере:

  • :clipboard: Счета — полное дерево балансов, все родительские счета развернуты.

  • :balance_scale: Баланс — активы, обязательства и капитал, сгруппированные по разделам.

  • :chart_increasing: P&L (Прибыли и убытки) — доходы и расходы.

  • :busts_in_silhouette: Капитал — распределение внесенного капитала по каждой валюте/товару.

  • :receipt: Журнал — журнал транзакций с каждой записью.

  • Отчеты можно фильтровать по диапазону дат «С»/«По»; конечная дата включается в расчет.

  • Сегменты счетов, записанные как @username (например, equity:@alice), превращаются в ссылки-упоминания Discourse с обычной карточкой профиля; ссылки создаются только для существующих пользователей.

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

Пример блока

```hledger
2024-01-01 Начальные остатки
    assets:bank:checking       1000.00 EUR
    equity:alice               -600.00 EUR
    equity:bob                 -400.00 EUR
```

Скриншоты

Требования

  • Исполняемый файл hledger на сервере (проверено с hledger 1.32.3).
  • Discourse версии 2.7.0 или новее.

При стандартной установке через Docker установите плагин и пакет hledger через ваш app.yml и пересоберите контейнер:

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://gitea.kosmos.org/raucao/discourse-hledger.git discourse-hledger
    - exec:
        cd: $home
        cmd:
          - apt-get update
          - DEBIAN_FRONTEND=noninteractive apt-get install -y hledger

Настройка

  1. Включите плагин в Админка > Настройки > Плагины (hledger enabled).
  2. Добавьте журнал hledger в первое сообщение темы.
  3. При необходимости установите hledger path, если исполняемый файл не находится в стандартном PATH.

Параметры

Имя Описание
hledger enabled Включить плагин.
hledger path Путь к исполняемому файлу hledger (по умолчанию hledger).
hledger max journal bytes Максимальный размер принимаемого журнала в байтах (по умолчанию 262144).
hledger max journal lines Максимальное количество строк в журнале (по умолчанию 5000).
hledger timeout seconds Ограничение по времени (в секундах) для каждого вызова hledger (по умолчанию 10).
hledger max output bytes Ограничение на размер вывода hledger (по умолчанию 1048576).
hledger memory limit mb Ограничение памяти для процесса hledger; 0 отключает ограничение (по умолчанию 256).
hledger global rate limit per minute Глобальное ограничение на генерацию отчетов для всех пользователей; 0 отключает ограничение (по умолчанию 120).

Безопасность

Журналы считаются недоверенным вводом. Плагин запускает hledger как непривилегированный дочерний процесс с очищенной средой, отдельной рабочей директорией, жестким таймаутом, ограничениями на CPU/размер файлов/память и ограничением на вывод, а также отклоняет директивы include. Отчеты возвращаются только для тем, которые просматривает пользователь, а запросы ограничены по IP (30/мин) и глобально.

Совместимость и лицензия

  • Лицензия MIT
  • Отзывы, сообщения об ошибках и переводы приветствуются в этой теме или по электронной почте, в социальных сетях (ActivityPub) или в чате (XMPP) по адресу raucao@kosmos.org
2 лайка