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

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

功能

在主题的首个帖子中,将 hledger 日记账放入围栏的 hledger 代码块中,它将被替换为由服务器的 hledger 可执行文件按需生成的包含五个报告的仪表板:

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

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

  • :chart_increasing: 损益表 — 收入和支出。

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

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. 如果可执行文件不在默认 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)或聊天(XMPP)联系 raucao@kosmos.org 提供反馈、错误报告和翻译。
2 个赞