Skip to content

deb-sig/double-entry-generator

Repository files navigation

double-entry-generator

GitHub Go Version Documentation

基于规则的复式记账导入器,支持将各种账单格式智能转换为 BeancountLedger 格式。

📖 完整文档: 访问 在线文档站点 获取详细的使用指南和配置说明。

✨ 特性

  • 🏦 多银行支持 - 支持建设银行、工商银行、中信银行、汇丰银行等主流银行账单
  • 💰 支付工具 - 支持支付宝、微信等主流支付平台的账单导入
  • 📈 证券交易 - 支持海通证券、华西证券等券商的交易记录
  • 🪙 加密货币 - 支持火币等交易所的币币交易记录
  • 🛒 生活服务 - 支持美团、京东等生活服务平台的账单
  • ⚙️ 智能规则 - 基于规则的智能分类,支持自定义账户映射
  • 🔧 可扩展架构 - 易于添加新的账单格式和记账语言支持

🚀 快速开始

安装

使用 Go 安装(推荐)

go install github.com/deb-sig/double-entry-generator/v2@latest

使用 Homebrew 安装(macOS)

brew install deb-sig/tap/double-entry-generator

二进制安装

GitHub Release 页面下载对应架构的二进制文件。

Tip

通过 Go 安装后,可使用 go version -m $(which double-entry-generator) 查看版本。

基本用法

# 转换支付宝账单为 Beancount 格式
double-entry-generator translate -p alipay -t beancount alipay_records.csv

# 转换微信账单为 Ledger 格式
double-entry-generator translate -p wechat -t ledger wechat_records.xlsx

# 转换建设银行账单
double-entry-generator translate -p ccb -t beancount ccb_records.xls

更多使用说明请参考 快速开始文档

📋 支持的 Providers

🏦 银行

💰 支付工具

📈 证券交易

🪙 加密货币

🛒 生活服务

完整列表请查看 Providers 文档

⚙️ 配置指南

Double Entry Generator 使用 YAML 格式的配置文件来定义转换规则和账户映射。

基本配置结构

defaultMinusAccount: Assets:FIXME
defaultPlusAccount: Expenses:FIXME
defaultCurrency: CNY
title: 我的账本配置

# Provider 特定配置
alipay:
  rules:
    - category: 餐饮美食
      time: 11:00-14:00
      targetAccount: Expenses:Food:Lunch
    - peer: 滴滴
      targetAccount: Expenses:Transport:Taxi

配置文档

📖 示例

项目提供了丰富的示例配置和账单文件,位于 example/ 目录下。

支付宝示例

double-entry-generator translate \
  --config ./example/alipay/config.yaml \
  --output ./example/alipay/example-alipay-output.beancount \
  ./example/alipay/example-alipay-records.csv

微信示例

double-entry-generator translate \
  --config ./example/wechat/config.yaml \
  --provider wechat \
  --output ./example/wechat/example-wechat-output.beancount \
  ./example/wechat/example-wechat-records.csv

更多示例请查看 示例文档

🏗️ 架构

┌───────────┐  ┌──────────┐  ┌────┐  ┌──────────┐  ┌──────────┐
│ translate │->│ provider │->│ IR │->│ compiler │->│ analyser │
└───────────┘  └──────────┘  └────┘  └──────────┘  └──────────┘
                  alipay               beancount      alipay
                  wechat               ledger         wechat
                  huobi                               huobi
                  htsec                               htsec
                  icbc                                icbc
                  ccb                                 ccb
                  td                                  td
                  bmo                                 bmo
                  hsbchk                              hsbchk

架构支持扩展:

  • 添加新的账单格式:实现新的 provider
  • 添加新的记账语言:实现新的 compiler

📚 文档

完整的文档请访问:

🐛 常见问题

如何处理不支持的交易类型?

如果遇到 "Failed to get the tx type" 错误:

  1. GitHub Issues 上报问题
  2. 若该交易类型为支出,且版本 >= v2.10.0,可使用 --ignore-invalid-tx-types 参数忽略该错误

如何获取账单文件?

各 Provider 的账单下载方式请参考:

更多问题请查看 GitHub Issues

🤝 贡献

欢迎贡献代码和文档!请查看 贡献指南

如何贡献

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📄 许可证

本项目采用 Apache 2.0 许可证。

🙏 致谢

  • dilfish/atb - 支付宝账单转 Beancount 的早期版本

📞 联系方式

Sponsor this project

 

Packages

No packages published

Contributors 23