Плагин 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
    - 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/Nostr) или в чате (XMPP) на raucao@kosmos.org
7 лайков