Hledger 插件 - 在主题中渲染纯文本记账日志

:information_source: 摘要 在主题的帖子中实时渲染 hledger 账本为仪表盘。
:hammer_and_wrench: 仓库 gitea.kosmos.org/raucao/discourse-hledger
:open_book: 安装指南 README

功能

在主题的首帖中,将 hledger 账本放入带有 hledger 标识的围栏代码块中,它将被替换为一个包含五个报告的仪表盘,这些报告由服务器的 hledger 可执行文件按需生成:

  • :clipboard: 账户 (Accounts) — 完整的余额树,所有父账户均已展开。

  • :balance_scale: 资产负债表 (Balance sheet) — 资产、负债和权益,折叠为各个部分。

  • :chart_increasing: 损益表 (P&L) — 收入和费用。

  • :busts_in_silhouette: 权益 (Equity) — 按商品划分的投入资本分布。

  • :receipt: 日记账 (Journal) — 包含每笔分录的交易日志。

  • 报告可以通过从/至日期范围进行筛选;结束日期包含在内。

  • 写作格式为 @username 的账户段(例如 equity:@alice)会变成 Discourse 提及链接,并带有通常的个人资料卡片;只有已存在的用户才会被链接。

  • 报告按需生成并按帖子修订版本缓存,因此编辑账本会刷新它们。

示例代码块

```hledger
2024-01-01 Opening balances
    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 安装时,请通过 app.yml 安装插件和 hledger 包并重新构建:

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. 在 Admin > Settings > Plugins(管理 > 设置 > 插件)中启用插件(hledger enabled)。
  2. 在主题的首帖中添加 hledger 账本。
  3. 如果可执行文件不在默认 PATH 上,可选地设置 hledger 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 个赞