记账方式 - Beancount + Fava
关于 beancount 本身的使用网上有很多文章,建议通读下官方的 Beancount Language Syntax ,其本身语法不算复杂,官方一张 Syntax Cheat Sheet 图基本可以罗列常用语法
Fava 是 beancount 的 ui 界面工具,提供了很多报表,甚至编辑功能
记账流程及自动化
我的 beancount 文件放在 github 私用仓库里进行版本化管理及存储,fava 通过 docker 运行,通过带有认证功能的 proxy 访问。自动部署流程如下:
- 本地编写 beancount 文件,提交后推送到 github
- github 调用 webhook,服务器拉取最新内容。
fava reload设置2019-01-01 custom "fava-option" "auto-reload" "true"
webhook 使用的是 adnanh/webhook - 如果 fava 容器需要更新(更新 beancount 及 fava 版本),push 一个 release tag
- 阿里云容器镜像服务构建出最新镜像,调用 webhook
- webhook 自动部署新镜像
编辑器使用 vscode,vscode 上已经有多个 beancount 的扩展,如果你仅使用 beancount 的格式化功能而不想安装python,可以使用我开发的 vscode-beancount-formatter扩展,扩展使用 ts 仿照官方 formatter 编写,不依赖本地 beancount。
记账
记账时间
尽量减少信用卡数量,减少支出出口,不通过支付宝或微信的余额支付,使用储蓄卡支付
- 每周一记录储蓄卡收支
- 账单日记录信用卡支出,调整信用卡还款日期到发薪日之后几天
- 发薪日记录贷款、还信用卡
信用卡账单
记过帐的大都知道很多消费隔一周就想不起是什么了,所以信用卡消费我是这么记录的
- 维护一个自动映射支出的表,比如
上海拉扎斯
就是饿了么
,对应到饮食外卖这些 - 邮件账单(我用招行)解析,将支出时间、订单描述、金额进行格式化存储,如果能映射到第一步的支出就一起存储
- 每天早上看一眼没有自动映射的订单,手工维护下
- 信用卡账单出来之后,账单大部分可以跟邮件解析的账单对应,通过解析信用卡账单文件,生成处 beancount 格式的文本