Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

是否支持自定义分类? #58

Open
xinmans opened this issue Feb 9, 2025 · 12 comments
Open

是否支持自定义分类? #58

xinmans opened this issue Feb 9, 2025 · 12 comments

Comments

@xinmans
Copy link

xinmans commented Feb 9, 2025

1,按照微信和支付宝账单里的分类自动添加
2,自定义分类,匹配账单里的关键字进行自动分类

以上两种形态是否能够考虑支持?

@mayswind
Copy link
Owner

mayswind commented Feb 9, 2025

  1. 不支持自动创建分类,ezBookkeeping 的分类需要设置一二级类别,以及分类的颜色和图标,需要用户手动创建
  2. 不支持规则映射,但是支持在导入时批量替换

ezBookkeeping 设计时是希望帮助用户产生新交易后尽可能方便、快捷地录入每条数据,ezBookkeeping 的导入功能是帮助用户一次性将数据从其他系统迁移到 ezBookkeeping,而不是让用户每次使用导入功能替代添加功能。

@xinmans
Copy link
Author

xinmans commented Feb 9, 2025

  1. 不支持自动创建分类,ezBookkeeping 的分类需要设置一二级类别,以及分类的颜色和图标,需要用户手动创建
  2. 不支持规则映射,但是支持在导入时批量替换

ezBookkeeping 设计时是希望帮助用户产生新交易后尽可能方便、快捷地录入每条数据,ezBookkeeping 的导入功能是帮助用户一次性将数据从其他系统迁移到 ezBookkeeping,而不是让用户每次使用导入功能替代添加功能。

导入的过程,编辑工作量比较大,beancount中积累了过往数年4.5W条记录。而且已经做了分类,希望能够有快速映射分类的能力,方便一次性不需要手动编辑导入,如果有API接口能够程序实现,也可以

@mayswind
Copy link
Owner

mayswind commented Feb 9, 2025

  1. 不支持自动创建分类,ezBookkeeping 的分类需要设置一二级类别,以及分类的颜色和图标,需要用户手动创建
  2. 不支持规则映射,但是支持在导入时批量替换

ezBookkeeping 设计时是希望帮助用户产生新交易后尽可能方便、快捷地录入每条数据,ezBookkeeping 的导入功能是帮助用户一次性将数据从其他系统迁移到 ezBookkeeping,而不是让用户每次使用导入功能替代添加功能。

导入的过程,编辑工作量比较大,beancount中积累了过往数年4.5W条记录。而且已经做了分类,希望能够有快速映射分类的能力,方便一次性不需要手动编辑导入,如果有API接口能够程序实现,也可以

如果是一次性导入的话,只要在 ezBookkeeping 里提前把对应的账户和分类提前建好,如果新旧账户和分类名相同,完全不需要映射。

@xinmans
Copy link
Author

xinmans commented Feb 9, 2025

  1. 不支持自动创建分类,ezBookkeeping 的分类需要设置一二级类别,以及分类的颜色和图标,需要用户手动创建
  2. 不支持规则映射,但是支持在导入时批量替换

ezBookkeeping 设计时是希望帮助用户产生新交易后尽可能方便、快捷地录入每条数据,ezBookkeeping 的导入功能是帮助用户一次性将数据从其他系统迁移到 ezBookkeeping,而不是让用户每次使用导入功能替代添加功能。

导入的过程,编辑工作量比较大,beancount中积累了过往数年4.5W条记录。而且已经做了分类,希望能够有快速映射分类的能力,方便一次性不需要手动编辑导入,如果有API接口能够程序实现,也可以

如果是一次性导入的话,只要在 ezBookkeeping 里提前把对应的账户和分类提前建好,如果新旧账户和分类名相同,完全不需要映射。

  1. 是否支持自动创建?直接根据alipay和wechat给的分类直接创建(如果不存在)?
  2. 是否可以支持根据交易流水单里的关键字匹配分类?

以下,beancount支持直接匹配关键字自动关联分类,这个功能会极大的提高效率。

#!/usr/bin/env python3
# refer:https://blog.einverne.info/post/2021/02/beancount-import-bill.html

import sys

sys.path.append("./importers")
from CSVImporter import Col, Importer, Drcr

currency = "CNY"

drcr_dict = {"支出": Drcr.DEBIT, "收入": Drcr.CREDIT, "已支出": Drcr.DEBIT, "已收入": Drcr.CREDIT, "其他": Drcr.CREDIT}
refund_keyword = "退款"

iconfig_wechat = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品",
    Col.ACCOUNT: "支付方式",
    Col.AMOUNT: "金额(元)",
    Col.DRCR: "收/支",
    Col.STATUS: "当前状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易类型",
}

iconfig_alipay = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品说明",
    Col.ACCOUNT: "收/付款方式",
    Col.AMOUNT: "金额",
    Col.DRCR: "收/支",
    Col.STATUS: "交易状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易分类",
}

iconfig_cmb = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品说明",
    Col.ACCOUNT: "收/付款方式",
    Col.AMOUNT: "金额",
    Col.DRCR: "收/支",
    Col.STATUS: "交易状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易分类",
}

account_map = {
    "assets": {
        "DEFAULT": "Assets:Unknow",
        "工资": "Assets:Alipay:GongZi",
        "转账红包": "Assets:Alipay:Hongbao",
        "余额宝": "Assets:Alipay:YuEBao",
        "余额": "Assets:Alipay:YuE",
        "花呗": "Assets:Alipay:HuaBei",
        "零钱": "Assets:Wechat:MiniFund",
        "招商银行": "Assets:Company:CMB",   
        "充值": "Assets:Company:CMB",   
        "中信银行": "Assets:Company:CITIC",
        "农业银行": "Assets:Company:ABC",
        "光大银行": "Assets:Company:CEBB",
        "亲情卡": "Assets:Alipay:YuE",
    },
    "debit": {
        "DEFAULT": "Expenses:Unknown",
        #居家
        "手机|中国电信": "Expenses:Home:Phone", #手机话费
        "房贷": "Expenses:Home:Mortgage:Loan", #房贷
        "水费|电费|燃气费": "Expenses:Home:SDRQ", #水电燃气
        "快递|顺丰|速运|中通|快件|寄件费|菜鸟|中国邮政": "Expenses:Home:Delivery", #快递费


        #餐饮
        "叮咚|盒马|叮咚买菜": "Expenses:Food:Vegetables", #买菜原料
        "上海星巴克|luckin|coffee|星巴克|COSTA|咖啡厅|喜茶": "Expenses:Food:Starbucks", #咖啡
        "饿了么|美团|外卖": "Expenses:Food:Delivery", #外卖
        
        #医疗健康
        "医院|挂号|门诊": "Expenses:Health:Medical ", #门诊&药品

        #娱乐
        "电影": "Expenses:Entertainment:Movie ", #电影
        "旅游": "Expenses:Entertainment:Travel ", #旅游度假
        "酒店": "Expenses:Entertainment:Hotel ", #酒店住宿

        #交通
        "国航|南航|东航|中国国家航空|南方航空|东方航空|航空": "Expenses:Transport:Airline", #飞机
        "12306|火车票": "Expenses:Transport:Railway", #火车
        "公交": "Expenses:Transport:GongJiao", #公交车
        "高速通行费|高速|通行费": "Expenses:Transport:Gaosu", #高速过路费
        "地铁": "Expenses:Transport:Subway", #高速过路费
        
        "亲友代付|小宝零花钱": "Expenses:Shopping:Qingqinka", #亲友卡
        
        #人情
        "礼物": "Expenses:Relationship:Gift", #礼物
        "礼金": "Expenses:Relationship:Relative", #礼金
        "红包|转账": "Expenses:Relationship:RedEnvelope", #转账&红包
        "收钱码收款": "Expenses:Relationship:ShouQianMa", #收钱码收款

    },
    "credit": {
        "DEFAULT": "Income:Unknown",
        "余额宝": "Income:MoneyFund:Alipay:YuEBao",
        "转账": "Income:TransferIn",
    },
}

wechat_importer = Importer(
    iconfig_wechat,
    "",
    currency,
    "微信支付账单",
    16,
    drcr_dict,
    refund_keyword,
    account_map,
)

alipay_importer = Importer(
    iconfig_alipay,
    "",
    currency,
    "alipay_record",
    1,
    drcr_dict,
    refund_keyword,
    account_map,
)

CONFIG = [
    wechat_config,
    alipay_config,
]

@mayswind
Copy link
Owner

mayswind commented Feb 9, 2025

  1. 不支持自动创建分类,ezBookkeeping 的分类需要设置一二级类别,以及分类的颜色和图标,需要用户手动创建
  2. 不支持规则映射,但是支持在导入时批量替换

ezBookkeeping 设计时是希望帮助用户产生新交易后尽可能方便、快捷地录入每条数据,ezBookkeeping 的导入功能是帮助用户一次性将数据从其他系统迁移到 ezBookkeeping,而不是让用户每次使用导入功能替代添加功能。

导入的过程,编辑工作量比较大,beancount中积累了过往数年4.5W条记录。而且已经做了分类,希望能够有快速映射分类的能力,方便一次性不需要手动编辑导入,如果有API接口能够程序实现,也可以

如果是一次性导入的话,只要在 ezBookkeeping 里提前把对应的账户和分类提前建好,如果新旧账户和分类名相同,完全不需要映射。

  1. 是否支持自动创建?直接根据alipay和wechat给的分类直接创建(如果不存在)?
  2. 是否可以支持根据交易流水单里的关键字匹配分类?

以下,beancount支持直接匹配关键字自动关联分类,这个功能会极大的提高效率。

#!/usr/bin/env python3
# refer:https://blog.einverne.info/post/2021/02/beancount-import-bill.html

import sys

sys.path.append("./importers")
from CSVImporter import Col, Importer, Drcr

currency = "CNY"

drcr_dict = {"支出": Drcr.DEBIT, "收入": Drcr.CREDIT, "已支出": Drcr.DEBIT, "已收入": Drcr.CREDIT, "其他": Drcr.CREDIT}
refund_keyword = "退款"

iconfig_wechat = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品",
    Col.ACCOUNT: "支付方式",
    Col.AMOUNT: "金额(元)",
    Col.DRCR: "收/支",
    Col.STATUS: "当前状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易类型",
}

iconfig_alipay = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品说明",
    Col.ACCOUNT: "收/付款方式",
    Col.AMOUNT: "金额",
    Col.DRCR: "收/支",
    Col.STATUS: "交易状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易分类",
}

iconfig_cmb = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品说明",
    Col.ACCOUNT: "收/付款方式",
    Col.AMOUNT: "金额",
    Col.DRCR: "收/支",
    Col.STATUS: "交易状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易分类",
}

account_map = {
    "assets": {
        "DEFAULT": "Assets:Unknow",
        "工资": "Assets:Alipay:GongZi",
        "转账红包": "Assets:Alipay:Hongbao",
        "余额宝": "Assets:Alipay:YuEBao",
        "余额": "Assets:Alipay:YuE",
        "花呗": "Assets:Alipay:HuaBei",
        "零钱": "Assets:Wechat:MiniFund",
        "招商银行": "Assets:Company:CMB",   
        "充值": "Assets:Company:CMB",   
        "中信银行": "Assets:Company:CITIC",
        "农业银行": "Assets:Company:ABC",
        "光大银行": "Assets:Company:CEBB",
        "亲情卡": "Assets:Alipay:YuE",
    },
    "debit": {
        "DEFAULT": "Expenses:Unknown",
        #居家
        "手机|中国电信": "Expenses:Home:Phone", #手机话费
        "房贷": "Expenses:Home:Mortgage:Loan", #房贷
        "水费|电费|燃气费": "Expenses:Home:SDRQ", #水电燃气
        "快递|顺丰|速运|中通|快件|寄件费|菜鸟|中国邮政": "Expenses:Home:Delivery", #快递费


        #餐饮
        "叮咚|盒马|叮咚买菜": "Expenses:Food:Vegetables", #买菜原料
        "上海星巴克|luckin|coffee|星巴克|COSTA|咖啡厅|喜茶": "Expenses:Food:Starbucks", #咖啡
        "饿了么|美团|外卖": "Expenses:Food:Delivery", #外卖
        
        #医疗健康
        "医院|挂号|门诊": "Expenses:Health:Medical ", #门诊&药品

        #娱乐
        "电影": "Expenses:Entertainment:Movie ", #电影
        "旅游": "Expenses:Entertainment:Travel ", #旅游度假
        "酒店": "Expenses:Entertainment:Hotel ", #酒店住宿

        #交通
        "国航|南航|东航|中国国家航空|南方航空|东方航空|航空": "Expenses:Transport:Airline", #飞机
        "12306|火车票": "Expenses:Transport:Railway", #火车
        "公交": "Expenses:Transport:GongJiao", #公交车
        "高速通行费|高速|通行费": "Expenses:Transport:Gaosu", #高速过路费
        "地铁": "Expenses:Transport:Subway", #高速过路费
        
        "亲友代付|小宝零花钱": "Expenses:Shopping:Qingqinka", #亲友卡
        
        #人情
        "礼物": "Expenses:Relationship:Gift", #礼物
        "礼金": "Expenses:Relationship:Relative", #礼金
        "红包|转账": "Expenses:Relationship:RedEnvelope", #转账&红包
        "收钱码收款": "Expenses:Relationship:ShouQianMa", #收钱码收款

    },
    "credit": {
        "DEFAULT": "Income:Unknown",
        "余额宝": "Income:MoneyFund:Alipay:YuEBao",
        "转账": "Income:TransferIn",
    },
}

wechat_importer = Importer(
    iconfig_wechat,
    "",
    currency,
    "微信支付账单",
    16,
    drcr_dict,
    refund_keyword,
    account_map,
)

alipay_importer = Importer(
    iconfig_alipay,
    "",
    currency,
    "alipay_record",
    1,
    drcr_dict,
    refund_keyword,
    account_map,
)

CONFIG = [
    wechat_config,
    alipay_config,
]
  1. 不支持
  2. 不支持

ezBookkeeping 不是面向高级用户设计的,所以 ezBookkeeping 不像 beancount 那样支持可扩展的插件(自定义导入器)。但是 ezBookkeeping 预留了可以给高级用户使用的 API,如果是为了简化第一次导入时创建的复杂,可以通过命令行生成 token,然后通过编程使用 token 直接调用与 Web 界面相同的 API。

@mayswind
Copy link
Owner

mayswind commented Feb 9, 2025

  1. 不支持自动创建分类,ezBookkeeping 的分类需要设置一二级类别,以及分类的颜色和图标,需要用户手动创建
  2. 不支持规则映射,但是支持在导入时批量替换

ezBookkeeping 设计时是希望帮助用户产生新交易后尽可能方便、快捷地录入每条数据,ezBookkeeping 的导入功能是帮助用户一次性将数据从其他系统迁移到 ezBookkeeping,而不是让用户每次使用导入功能替代添加功能。

导入的过程,编辑工作量比较大,beancount中积累了过往数年4.5W条记录。而且已经做了分类,希望能够有快速映射分类的能力,方便一次性不需要手动编辑导入,如果有API接口能够程序实现,也可以

如果是一次性导入的话,只要在 ezBookkeeping 里提前把对应的账户和分类提前建好,如果新旧账户和分类名相同,完全不需要映射。

  1. 是否支持自动创建?直接根据alipay和wechat给的分类直接创建(如果不存在)?
  2. 是否可以支持根据交易流水单里的关键字匹配分类?

以下,beancount支持直接匹配关键字自动关联分类,这个功能会极大的提高效率。

#!/usr/bin/env python3
# refer:https://blog.einverne.info/post/2021/02/beancount-import-bill.html

import sys

sys.path.append("./importers")
from CSVImporter import Col, Importer, Drcr

currency = "CNY"

drcr_dict = {"支出": Drcr.DEBIT, "收入": Drcr.CREDIT, "已支出": Drcr.DEBIT, "已收入": Drcr.CREDIT, "其他": Drcr.CREDIT}
refund_keyword = "退款"

iconfig_wechat = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品",
    Col.ACCOUNT: "支付方式",
    Col.AMOUNT: "金额(元)",
    Col.DRCR: "收/支",
    Col.STATUS: "当前状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易类型",
}

iconfig_alipay = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品说明",
    Col.ACCOUNT: "收/付款方式",
    Col.AMOUNT: "金额",
    Col.DRCR: "收/支",
    Col.STATUS: "交易状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易分类",
}

iconfig_cmb = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品说明",
    Col.ACCOUNT: "收/付款方式",
    Col.AMOUNT: "金额",
    Col.DRCR: "收/支",
    Col.STATUS: "交易状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易分类",
}

account_map = {
    "assets": {
        "DEFAULT": "Assets:Unknow",
        "工资": "Assets:Alipay:GongZi",
        "转账红包": "Assets:Alipay:Hongbao",
        "余额宝": "Assets:Alipay:YuEBao",
        "余额": "Assets:Alipay:YuE",
        "花呗": "Assets:Alipay:HuaBei",
        "零钱": "Assets:Wechat:MiniFund",
        "招商银行": "Assets:Company:CMB",   
        "充值": "Assets:Company:CMB",   
        "中信银行": "Assets:Company:CITIC",
        "农业银行": "Assets:Company:ABC",
        "光大银行": "Assets:Company:CEBB",
        "亲情卡": "Assets:Alipay:YuE",
    },
    "debit": {
        "DEFAULT": "Expenses:Unknown",
        #居家
        "手机|中国电信": "Expenses:Home:Phone", #手机话费
        "房贷": "Expenses:Home:Mortgage:Loan", #房贷
        "水费|电费|燃气费": "Expenses:Home:SDRQ", #水电燃气
        "快递|顺丰|速运|中通|快件|寄件费|菜鸟|中国邮政": "Expenses:Home:Delivery", #快递费


        #餐饮
        "叮咚|盒马|叮咚买菜": "Expenses:Food:Vegetables", #买菜原料
        "上海星巴克|luckin|coffee|星巴克|COSTA|咖啡厅|喜茶": "Expenses:Food:Starbucks", #咖啡
        "饿了么|美团|外卖": "Expenses:Food:Delivery", #外卖
        
        #医疗健康
        "医院|挂号|门诊": "Expenses:Health:Medical ", #门诊&药品

        #娱乐
        "电影": "Expenses:Entertainment:Movie ", #电影
        "旅游": "Expenses:Entertainment:Travel ", #旅游度假
        "酒店": "Expenses:Entertainment:Hotel ", #酒店住宿

        #交通
        "国航|南航|东航|中国国家航空|南方航空|东方航空|航空": "Expenses:Transport:Airline", #飞机
        "12306|火车票": "Expenses:Transport:Railway", #火车
        "公交": "Expenses:Transport:GongJiao", #公交车
        "高速通行费|高速|通行费": "Expenses:Transport:Gaosu", #高速过路费
        "地铁": "Expenses:Transport:Subway", #高速过路费
        
        "亲友代付|小宝零花钱": "Expenses:Shopping:Qingqinka", #亲友卡
        
        #人情
        "礼物": "Expenses:Relationship:Gift", #礼物
        "礼金": "Expenses:Relationship:Relative", #礼金
        "红包|转账": "Expenses:Relationship:RedEnvelope", #转账&红包
        "收钱码收款": "Expenses:Relationship:ShouQianMa", #收钱码收款

    },
    "credit": {
        "DEFAULT": "Income:Unknown",
        "余额宝": "Income:MoneyFund:Alipay:YuEBao",
        "转账": "Income:TransferIn",
    },
}

wechat_importer = Importer(
    iconfig_wechat,
    "",
    currency,
    "微信支付账单",
    16,
    drcr_dict,
    refund_keyword,
    account_map,
)

alipay_importer = Importer(
    iconfig_alipay,
    "",
    currency,
    "alipay_record",
    1,
    drcr_dict,
    refund_keyword,
    account_map,
)

CONFIG = [
    wechat_config,
    alipay_config,
]
  1. 不支持
  2. 不支持

ezBookkeeping 不是面向高级用户设计的,所以 ezBookkeeping 不像 beancount 那样支持可扩展的插件(自定义导入器)。但是 ezBookkeeping 预留了可以给高级用户使用的 API,如果是为了简化第一次导入时创建的复杂,可以通过命令行生成 token,然后通过编程使用 token 直接调用与 Web 界面相同的 API。

如果你的常规使用场景是从其他系统导入到记账系统中(而不是每笔账由自己录入),ezBookkeeping 可能不适合您,目前看应该还是 beancount 最适合你的使用场景。

@xinmans
Copy link
Author

xinmans commented Feb 9, 2025

  1. 不支持自动创建分类,ezBookkeeping 的分类需要设置一二级类别,以及分类的颜色和图标,需要用户手动创建
  2. 不支持规则映射,但是支持在导入时批量替换

ezBookkeeping 设计时是希望帮助用户产生新交易后尽可能方便、快捷地录入每条数据,ezBookkeeping 的导入功能是帮助用户一次性将数据从其他系统迁移到 ezBookkeeping,而不是让用户每次使用导入功能替代添加功能。

导入的过程,编辑工作量比较大,beancount中积累了过往数年4.5W条记录。而且已经做了分类,希望能够有快速映射分类的能力,方便一次性不需要手动编辑导入,如果有API接口能够程序实现,也可以

如果是一次性导入的话,只要在 ezBookkeeping 里提前把对应的账户和分类提前建好,如果新旧账户和分类名相同,完全不需要映射。

  1. 是否支持自动创建?直接根据alipay和wechat给的分类直接创建(如果不存在)?
  2. 是否可以支持根据交易流水单里的关键字匹配分类?

以下,beancount支持直接匹配关键字自动关联分类,这个功能会极大的提高效率。

#!/usr/bin/env python3
# refer:https://blog.einverne.info/post/2021/02/beancount-import-bill.html

import sys

sys.path.append("./importers")
from CSVImporter import Col, Importer, Drcr

currency = "CNY"

drcr_dict = {"支出": Drcr.DEBIT, "收入": Drcr.CREDIT, "已支出": Drcr.DEBIT, "已收入": Drcr.CREDIT, "其他": Drcr.CREDIT}
refund_keyword = "退款"

iconfig_wechat = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品",
    Col.ACCOUNT: "支付方式",
    Col.AMOUNT: "金额(元)",
    Col.DRCR: "收/支",
    Col.STATUS: "当前状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易类型",
}

iconfig_alipay = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品说明",
    Col.ACCOUNT: "收/付款方式",
    Col.AMOUNT: "金额",
    Col.DRCR: "收/支",
    Col.STATUS: "交易状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易分类",
}

iconfig_cmb = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品说明",
    Col.ACCOUNT: "收/付款方式",
    Col.AMOUNT: "金额",
    Col.DRCR: "收/支",
    Col.STATUS: "交易状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易分类",
}

account_map = {
    "assets": {
        "DEFAULT": "Assets:Unknow",
        "工资": "Assets:Alipay:GongZi",
        "转账红包": "Assets:Alipay:Hongbao",
        "余额宝": "Assets:Alipay:YuEBao",
        "余额": "Assets:Alipay:YuE",
        "花呗": "Assets:Alipay:HuaBei",
        "零钱": "Assets:Wechat:MiniFund",
        "招商银行": "Assets:Company:CMB",   
        "充值": "Assets:Company:CMB",   
        "中信银行": "Assets:Company:CITIC",
        "农业银行": "Assets:Company:ABC",
        "光大银行": "Assets:Company:CEBB",
        "亲情卡": "Assets:Alipay:YuE",
    },
    "debit": {
        "DEFAULT": "Expenses:Unknown",
        #居家
        "手机|中国电信": "Expenses:Home:Phone", #手机话费
        "房贷": "Expenses:Home:Mortgage:Loan", #房贷
        "水费|电费|燃气费": "Expenses:Home:SDRQ", #水电燃气
        "快递|顺丰|速运|中通|快件|寄件费|菜鸟|中国邮政": "Expenses:Home:Delivery", #快递费


        #餐饮
        "叮咚|盒马|叮咚买菜": "Expenses:Food:Vegetables", #买菜原料
        "上海星巴克|luckin|coffee|星巴克|COSTA|咖啡厅|喜茶": "Expenses:Food:Starbucks", #咖啡
        "饿了么|美团|外卖": "Expenses:Food:Delivery", #外卖
        
        #医疗健康
        "医院|挂号|门诊": "Expenses:Health:Medical ", #门诊&药品

        #娱乐
        "电影": "Expenses:Entertainment:Movie ", #电影
        "旅游": "Expenses:Entertainment:Travel ", #旅游度假
        "酒店": "Expenses:Entertainment:Hotel ", #酒店住宿

        #交通
        "国航|南航|东航|中国国家航空|南方航空|东方航空|航空": "Expenses:Transport:Airline", #飞机
        "12306|火车票": "Expenses:Transport:Railway", #火车
        "公交": "Expenses:Transport:GongJiao", #公交车
        "高速通行费|高速|通行费": "Expenses:Transport:Gaosu", #高速过路费
        "地铁": "Expenses:Transport:Subway", #高速过路费
        
        "亲友代付|小宝零花钱": "Expenses:Shopping:Qingqinka", #亲友卡
        
        #人情
        "礼物": "Expenses:Relationship:Gift", #礼物
        "礼金": "Expenses:Relationship:Relative", #礼金
        "红包|转账": "Expenses:Relationship:RedEnvelope", #转账&红包
        "收钱码收款": "Expenses:Relationship:ShouQianMa", #收钱码收款

    },
    "credit": {
        "DEFAULT": "Income:Unknown",
        "余额宝": "Income:MoneyFund:Alipay:YuEBao",
        "转账": "Income:TransferIn",
    },
}

wechat_importer = Importer(
    iconfig_wechat,
    "",
    currency,
    "微信支付账单",
    16,
    drcr_dict,
    refund_keyword,
    account_map,
)

alipay_importer = Importer(
    iconfig_alipay,
    "",
    currency,
    "alipay_record",
    1,
    drcr_dict,
    refund_keyword,
    account_map,
)

CONFIG = [
    wechat_config,
    alipay_config,
]
  1. 不支持
  2. 不支持

ezBookkeeping 不是面向高级用户设计的,所以 ezBookkeeping 不像 beancount 那样支持可扩展的插件(自定义导入器)。但是 ezBookkeeping 预留了可以给高级用户使用的 API,如果是为了简化第一次导入时创建的复杂,可以通过命令行生成 token,然后通过编程使用 token 直接调用与 Web 界面相同的 API。

没看到API文档,能否给个链接,我研究下

@xinmans
Copy link
Author

xinmans commented Feb 9, 2025

  1. 不支持自动创建分类,ezBookkeeping 的分类需要设置一二级类别,以及分类的颜色和图标,需要用户手动创建
  2. 不支持规则映射,但是支持在导入时批量替换

ezBookkeeping 设计时是希望帮助用户产生新交易后尽可能方便、快捷地录入每条数据,ezBookkeeping 的导入功能是帮助用户一次性将数据从其他系统迁移到 ezBookkeeping,而不是让用户每次使用导入功能替代添加功能。

导入的过程,编辑工作量比较大,beancount中积累了过往数年4.5W条记录。而且已经做了分类,希望能够有快速映射分类的能力,方便一次性不需要手动编辑导入,如果有API接口能够程序实现,也可以

如果是一次性导入的话,只要在 ezBookkeeping 里提前把对应的账户和分类提前建好,如果新旧账户和分类名相同,完全不需要映射。

  1. 是否支持自动创建?直接根据alipay和wechat给的分类直接创建(如果不存在)?
  2. 是否可以支持根据交易流水单里的关键字匹配分类?

以下,beancount支持直接匹配关键字自动关联分类,这个功能会极大的提高效率。

#!/usr/bin/env python3
# refer:https://blog.einverne.info/post/2021/02/beancount-import-bill.html

import sys

sys.path.append("./importers")
from CSVImporter import Col, Importer, Drcr

currency = "CNY"

drcr_dict = {"支出": Drcr.DEBIT, "收入": Drcr.CREDIT, "已支出": Drcr.DEBIT, "已收入": Drcr.CREDIT, "其他": Drcr.CREDIT}
refund_keyword = "退款"

iconfig_wechat = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品",
    Col.ACCOUNT: "支付方式",
    Col.AMOUNT: "金额(元)",
    Col.DRCR: "收/支",
    Col.STATUS: "当前状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易类型",
}

iconfig_alipay = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品说明",
    Col.ACCOUNT: "收/付款方式",
    Col.AMOUNT: "金额",
    Col.DRCR: "收/支",
    Col.STATUS: "交易状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易分类",
}

iconfig_cmb = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品说明",
    Col.ACCOUNT: "收/付款方式",
    Col.AMOUNT: "金额",
    Col.DRCR: "收/支",
    Col.STATUS: "交易状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易分类",
}

account_map = {
    "assets": {
        "DEFAULT": "Assets:Unknow",
        "工资": "Assets:Alipay:GongZi",
        "转账红包": "Assets:Alipay:Hongbao",
        "余额宝": "Assets:Alipay:YuEBao",
        "余额": "Assets:Alipay:YuE",
        "花呗": "Assets:Alipay:HuaBei",
        "零钱": "Assets:Wechat:MiniFund",
        "招商银行": "Assets:Company:CMB",   
        "充值": "Assets:Company:CMB",   
        "中信银行": "Assets:Company:CITIC",
        "农业银行": "Assets:Company:ABC",
        "光大银行": "Assets:Company:CEBB",
        "亲情卡": "Assets:Alipay:YuE",
    },
    "debit": {
        "DEFAULT": "Expenses:Unknown",
        #居家
        "手机|中国电信": "Expenses:Home:Phone", #手机话费
        "房贷": "Expenses:Home:Mortgage:Loan", #房贷
        "水费|电费|燃气费": "Expenses:Home:SDRQ", #水电燃气
        "快递|顺丰|速运|中通|快件|寄件费|菜鸟|中国邮政": "Expenses:Home:Delivery", #快递费


        #餐饮
        "叮咚|盒马|叮咚买菜": "Expenses:Food:Vegetables", #买菜原料
        "上海星巴克|luckin|coffee|星巴克|COSTA|咖啡厅|喜茶": "Expenses:Food:Starbucks", #咖啡
        "饿了么|美团|外卖": "Expenses:Food:Delivery", #外卖
        
        #医疗健康
        "医院|挂号|门诊": "Expenses:Health:Medical ", #门诊&药品

        #娱乐
        "电影": "Expenses:Entertainment:Movie ", #电影
        "旅游": "Expenses:Entertainment:Travel ", #旅游度假
        "酒店": "Expenses:Entertainment:Hotel ", #酒店住宿

        #交通
        "国航|南航|东航|中国国家航空|南方航空|东方航空|航空": "Expenses:Transport:Airline", #飞机
        "12306|火车票": "Expenses:Transport:Railway", #火车
        "公交": "Expenses:Transport:GongJiao", #公交车
        "高速通行费|高速|通行费": "Expenses:Transport:Gaosu", #高速过路费
        "地铁": "Expenses:Transport:Subway", #高速过路费
        
        "亲友代付|小宝零花钱": "Expenses:Shopping:Qingqinka", #亲友卡
        
        #人情
        "礼物": "Expenses:Relationship:Gift", #礼物
        "礼金": "Expenses:Relationship:Relative", #礼金
        "红包|转账": "Expenses:Relationship:RedEnvelope", #转账&红包
        "收钱码收款": "Expenses:Relationship:ShouQianMa", #收钱码收款

    },
    "credit": {
        "DEFAULT": "Income:Unknown",
        "余额宝": "Income:MoneyFund:Alipay:YuEBao",
        "转账": "Income:TransferIn",
    },
}

wechat_importer = Importer(
    iconfig_wechat,
    "",
    currency,
    "微信支付账单",
    16,
    drcr_dict,
    refund_keyword,
    account_map,
)

alipay_importer = Importer(
    iconfig_alipay,
    "",
    currency,
    "alipay_record",
    1,
    drcr_dict,
    refund_keyword,
    account_map,
)

CONFIG = [
    wechat_config,
    alipay_config,
]
  1. 不支持
  2. 不支持

ezBookkeeping 不是面向高级用户设计的,所以 ezBookkeeping 不像 beancount 那样支持可扩展的插件(自定义导入器)。但是 ezBookkeeping 预留了可以给高级用户使用的 API,如果是为了简化第一次导入时创建的复杂,可以通过命令行生成 token,然后通过编程使用 token 直接调用与 Web 界面相同的 API。

如果你的常规使用场景是从其他系统导入到记账系统中(而不是每笔账由自己录入),ezBookkeeping 可能不适合您,目前看应该还是 beancount 最适合你的使用场景。

ezBookkeeping的UI及数据库设计的蛮好的,beancount这块做的不太行,迭代也很慢。如果能够结合,是一大优势。

@mayswind
Copy link
Owner

mayswind commented Feb 9, 2025

  1. 不支持自动创建分类,ezBookkeeping 的分类需要设置一二级类别,以及分类的颜色和图标,需要用户手动创建
  2. 不支持规则映射,但是支持在导入时批量替换

ezBookkeeping 设计时是希望帮助用户产生新交易后尽可能方便、快捷地录入每条数据,ezBookkeeping 的导入功能是帮助用户一次性将数据从其他系统迁移到 ezBookkeeping,而不是让用户每次使用导入功能替代添加功能。

导入的过程,编辑工作量比较大,beancount中积累了过往数年4.5W条记录。而且已经做了分类,希望能够有快速映射分类的能力,方便一次性不需要手动编辑导入,如果有API接口能够程序实现,也可以

如果是一次性导入的话,只要在 ezBookkeeping 里提前把对应的账户和分类提前建好,如果新旧账户和分类名相同,完全不需要映射。

  1. 是否支持自动创建?直接根据alipay和wechat给的分类直接创建(如果不存在)?
  2. 是否可以支持根据交易流水单里的关键字匹配分类?

以下,beancount支持直接匹配关键字自动关联分类,这个功能会极大的提高效率。

#!/usr/bin/env python3
# refer:https://blog.einverne.info/post/2021/02/beancount-import-bill.html

import sys

sys.path.append("./importers")
from CSVImporter import Col, Importer, Drcr

currency = "CNY"

drcr_dict = {"支出": Drcr.DEBIT, "收入": Drcr.CREDIT, "已支出": Drcr.DEBIT, "已收入": Drcr.CREDIT, "其他": Drcr.CREDIT}
refund_keyword = "退款"

iconfig_wechat = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品",
    Col.ACCOUNT: "支付方式",
    Col.AMOUNT: "金额(元)",
    Col.DRCR: "收/支",
    Col.STATUS: "当前状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易类型",
}

iconfig_alipay = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品说明",
    Col.ACCOUNT: "收/付款方式",
    Col.AMOUNT: "金额",
    Col.DRCR: "收/支",
    Col.STATUS: "交易状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易分类",
}

iconfig_cmb = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品说明",
    Col.ACCOUNT: "收/付款方式",
    Col.AMOUNT: "金额",
    Col.DRCR: "收/支",
    Col.STATUS: "交易状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易分类",
}

account_map = {
    "assets": {
        "DEFAULT": "Assets:Unknow",
        "工资": "Assets:Alipay:GongZi",
        "转账红包": "Assets:Alipay:Hongbao",
        "余额宝": "Assets:Alipay:YuEBao",
        "余额": "Assets:Alipay:YuE",
        "花呗": "Assets:Alipay:HuaBei",
        "零钱": "Assets:Wechat:MiniFund",
        "招商银行": "Assets:Company:CMB",   
        "充值": "Assets:Company:CMB",   
        "中信银行": "Assets:Company:CITIC",
        "农业银行": "Assets:Company:ABC",
        "光大银行": "Assets:Company:CEBB",
        "亲情卡": "Assets:Alipay:YuE",
    },
    "debit": {
        "DEFAULT": "Expenses:Unknown",
        #居家
        "手机|中国电信": "Expenses:Home:Phone", #手机话费
        "房贷": "Expenses:Home:Mortgage:Loan", #房贷
        "水费|电费|燃气费": "Expenses:Home:SDRQ", #水电燃气
        "快递|顺丰|速运|中通|快件|寄件费|菜鸟|中国邮政": "Expenses:Home:Delivery", #快递费


        #餐饮
        "叮咚|盒马|叮咚买菜": "Expenses:Food:Vegetables", #买菜原料
        "上海星巴克|luckin|coffee|星巴克|COSTA|咖啡厅|喜茶": "Expenses:Food:Starbucks", #咖啡
        "饿了么|美团|外卖": "Expenses:Food:Delivery", #外卖
        
        #医疗健康
        "医院|挂号|门诊": "Expenses:Health:Medical ", #门诊&药品

        #娱乐
        "电影": "Expenses:Entertainment:Movie ", #电影
        "旅游": "Expenses:Entertainment:Travel ", #旅游度假
        "酒店": "Expenses:Entertainment:Hotel ", #酒店住宿

        #交通
        "国航|南航|东航|中国国家航空|南方航空|东方航空|航空": "Expenses:Transport:Airline", #飞机
        "12306|火车票": "Expenses:Transport:Railway", #火车
        "公交": "Expenses:Transport:GongJiao", #公交车
        "高速通行费|高速|通行费": "Expenses:Transport:Gaosu", #高速过路费
        "地铁": "Expenses:Transport:Subway", #高速过路费
        
        "亲友代付|小宝零花钱": "Expenses:Shopping:Qingqinka", #亲友卡
        
        #人情
        "礼物": "Expenses:Relationship:Gift", #礼物
        "礼金": "Expenses:Relationship:Relative", #礼金
        "红包|转账": "Expenses:Relationship:RedEnvelope", #转账&红包
        "收钱码收款": "Expenses:Relationship:ShouQianMa", #收钱码收款

    },
    "credit": {
        "DEFAULT": "Income:Unknown",
        "余额宝": "Income:MoneyFund:Alipay:YuEBao",
        "转账": "Income:TransferIn",
    },
}

wechat_importer = Importer(
    iconfig_wechat,
    "",
    currency,
    "微信支付账单",
    16,
    drcr_dict,
    refund_keyword,
    account_map,
)

alipay_importer = Importer(
    iconfig_alipay,
    "",
    currency,
    "alipay_record",
    1,
    drcr_dict,
    refund_keyword,
    account_map,
)

CONFIG = [
    wechat_config,
    alipay_config,
]
  1. 不支持
  2. 不支持

ezBookkeeping 不是面向高级用户设计的,所以 ezBookkeeping 不像 beancount 那样支持可扩展的插件(自定义导入器)。但是 ezBookkeeping 预留了可以给高级用户使用的 API,如果是为了简化第一次导入时创建的复杂,可以通过命令行生成 token,然后通过编程使用 token 直接调用与 Web 界面相同的 API。

没看到API文档,能否给个链接,我研究下

目前没有API文档,可以参考 https://github.com/mayswind/ezbookkeeping/blob/main/src/lib/services.ts 这个类里 Web 调用后端的接口和类型

@mayswind
Copy link
Owner

mayswind commented Feb 9, 2025

  1. 不支持自动创建分类,ezBookkeeping 的分类需要设置一二级类别,以及分类的颜色和图标,需要用户手动创建
  2. 不支持规则映射,但是支持在导入时批量替换

ezBookkeeping 设计时是希望帮助用户产生新交易后尽可能方便、快捷地录入每条数据,ezBookkeeping 的导入功能是帮助用户一次性将数据从其他系统迁移到 ezBookkeeping,而不是让用户每次使用导入功能替代添加功能。

导入的过程,编辑工作量比较大,beancount中积累了过往数年4.5W条记录。而且已经做了分类,希望能够有快速映射分类的能力,方便一次性不需要手动编辑导入,如果有API接口能够程序实现,也可以

如果是一次性导入的话,只要在 ezBookkeeping 里提前把对应的账户和分类提前建好,如果新旧账户和分类名相同,完全不需要映射。

  1. 是否支持自动创建?直接根据alipay和wechat给的分类直接创建(如果不存在)?
  2. 是否可以支持根据交易流水单里的关键字匹配分类?

以下,beancount支持直接匹配关键字自动关联分类,这个功能会极大的提高效率。

#!/usr/bin/env python3
# refer:https://blog.einverne.info/post/2021/02/beancount-import-bill.html

import sys

sys.path.append("./importers")
from CSVImporter import Col, Importer, Drcr

currency = "CNY"

drcr_dict = {"支出": Drcr.DEBIT, "收入": Drcr.CREDIT, "已支出": Drcr.DEBIT, "已收入": Drcr.CREDIT, "其他": Drcr.CREDIT}
refund_keyword = "退款"

iconfig_wechat = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品",
    Col.ACCOUNT: "支付方式",
    Col.AMOUNT: "金额(元)",
    Col.DRCR: "收/支",
    Col.STATUS: "当前状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易类型",
}

iconfig_alipay = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品说明",
    Col.ACCOUNT: "收/付款方式",
    Col.AMOUNT: "金额",
    Col.DRCR: "收/支",
    Col.STATUS: "交易状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易分类",
}

iconfig_cmb = {
    Col.DATE: "交易时间",
    Col.PAYEE: "交易对方",
    Col.NARRATION: "商品说明",
    Col.ACCOUNT: "收/付款方式",
    Col.AMOUNT: "金额",
    Col.DRCR: "收/支",
    Col.STATUS: "交易状态",
    Col.TXN_TIME: "交易时间",
    Col.TXN_DATE: "交易时间",
    Col.TYPE: "交易分类",
}

account_map = {
    "assets": {
        "DEFAULT": "Assets:Unknow",
        "工资": "Assets:Alipay:GongZi",
        "转账红包": "Assets:Alipay:Hongbao",
        "余额宝": "Assets:Alipay:YuEBao",
        "余额": "Assets:Alipay:YuE",
        "花呗": "Assets:Alipay:HuaBei",
        "零钱": "Assets:Wechat:MiniFund",
        "招商银行": "Assets:Company:CMB",   
        "充值": "Assets:Company:CMB",   
        "中信银行": "Assets:Company:CITIC",
        "农业银行": "Assets:Company:ABC",
        "光大银行": "Assets:Company:CEBB",
        "亲情卡": "Assets:Alipay:YuE",
    },
    "debit": {
        "DEFAULT": "Expenses:Unknown",
        #居家
        "手机|中国电信": "Expenses:Home:Phone", #手机话费
        "房贷": "Expenses:Home:Mortgage:Loan", #房贷
        "水费|电费|燃气费": "Expenses:Home:SDRQ", #水电燃气
        "快递|顺丰|速运|中通|快件|寄件费|菜鸟|中国邮政": "Expenses:Home:Delivery", #快递费


        #餐饮
        "叮咚|盒马|叮咚买菜": "Expenses:Food:Vegetables", #买菜原料
        "上海星巴克|luckin|coffee|星巴克|COSTA|咖啡厅|喜茶": "Expenses:Food:Starbucks", #咖啡
        "饿了么|美团|外卖": "Expenses:Food:Delivery", #外卖
        
        #医疗健康
        "医院|挂号|门诊": "Expenses:Health:Medical ", #门诊&药品

        #娱乐
        "电影": "Expenses:Entertainment:Movie ", #电影
        "旅游": "Expenses:Entertainment:Travel ", #旅游度假
        "酒店": "Expenses:Entertainment:Hotel ", #酒店住宿

        #交通
        "国航|南航|东航|中国国家航空|南方航空|东方航空|航空": "Expenses:Transport:Airline", #飞机
        "12306|火车票": "Expenses:Transport:Railway", #火车
        "公交": "Expenses:Transport:GongJiao", #公交车
        "高速通行费|高速|通行费": "Expenses:Transport:Gaosu", #高速过路费
        "地铁": "Expenses:Transport:Subway", #高速过路费
        
        "亲友代付|小宝零花钱": "Expenses:Shopping:Qingqinka", #亲友卡
        
        #人情
        "礼物": "Expenses:Relationship:Gift", #礼物
        "礼金": "Expenses:Relationship:Relative", #礼金
        "红包|转账": "Expenses:Relationship:RedEnvelope", #转账&红包
        "收钱码收款": "Expenses:Relationship:ShouQianMa", #收钱码收款

    },
    "credit": {
        "DEFAULT": "Income:Unknown",
        "余额宝": "Income:MoneyFund:Alipay:YuEBao",
        "转账": "Income:TransferIn",
    },
}

wechat_importer = Importer(
    iconfig_wechat,
    "",
    currency,
    "微信支付账单",
    16,
    drcr_dict,
    refund_keyword,
    account_map,
)

alipay_importer = Importer(
    iconfig_alipay,
    "",
    currency,
    "alipay_record",
    1,
    drcr_dict,
    refund_keyword,
    account_map,
)

CONFIG = [
    wechat_config,
    alipay_config,
]
  1. 不支持
  2. 不支持

ezBookkeeping 不是面向高级用户设计的,所以 ezBookkeeping 不像 beancount 那样支持可扩展的插件(自定义导入器)。但是 ezBookkeeping 预留了可以给高级用户使用的 API,如果是为了简化第一次导入时创建的复杂,可以通过命令行生成 token,然后通过编程使用 token 直接调用与 Web 界面相同的 API。

如果你的常规使用场景是从其他系统导入到记账系统中(而不是每笔账由自己录入),ezBookkeeping 可能不适合您,目前看应该还是 beancount 最适合你的使用场景。

ezBookkeeping的UI及数据库设计的蛮好的,beancount这块做的不太行,迭代也很慢。如果能够结合,是一大优势。

ezBookkeeping 的目标并不是一个全能的记账软件,因为很难做一个让所有人都满意的软件(并且意味着大量的工作),所以在功能设计上会做一些取舍,ezBookkeeping 的目标用户是那些喜欢随时记录的用户,对于日常没有随时记账的用户来说 ezBookkeeping 可能用起来会非常痛苦。

@xinmans
Copy link
Author

xinmans commented Feb 9, 2025

如果要修改账单导入的部分,改成支持没有分类创建分类的模式强制导入,应该修改哪里的代码?

@mayswind
Copy link
Owner

mayswind commented Feb 9, 2025

如果要修改账单导入的部分,改成支持没有分类创建分类的模式强制导入,应该修改哪里的代码?

ezBookkeeping 有两种导入方式,一种通过网页,会先将文件提交到服务端,解析为统一的格式,供用户在前端进行修改和批量替换。另一种是通过命令行,如果有缺失的账户、分类或标签会直接报错。我不建议你这样做,因为并不简单,但如果真要这么做,你可以修改通过命令行的代码进行修改(在 https://github.com/mayswind/ezbookkeeping/blob/main/pkg/cli/user_data.go 文件 ImportTransaction 函数中,函数中解析出了缺失的账户名、分类名以及标签名。
相比起修改上述的代码,我更建议从其他系统导入的用户使用 API 添加账户、分类和标签信息。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants