fix: Asset 去重按叙述区分,买入/买入退款不合并 同 bucket+同日+同金额但叙述不同(如”买入” vs “买入退款”) 是两个独立事件,不应去重。去重条件增加 narration 比对。
fix: Asset 去重按叙述区分,买入/买入退款不合并
同 bucket+同日+同金额但叙述不同(如”买入” vs “买入退款”) 是两个独立事件,不应去重。去重条件增加 narration 比对。
Beancount 预算分析工具。输入账本 + 预算配置,自动生成预算统计与多格式报告。
详细功能清单与用法见 QUICKSTART.md
三样东西:
budgets.yml
default_monthly
config.yml
budget:
一行命令:
beancount-budget-tool -m 2026-06 \ --budgets budgets.yml --config config.yml \ --ledger-dir ./transactions/ --scope cumulative
cargo build --release # 二进制在 target/release/beancount-budget-tool
default_monthly: # 月预算模板(可选) 储蓄: 700 生活费: 饮食: 2000 交通: 300 数码: 3000 "2026-06": # 6月只写与模板不同的部分 数码: 5000 # 覆盖模板 → 5000 # 生活费.饮食 没写 → 继承模板 2000
生活费.饮食
生活费.交通
YYYY-MM template
tracking_buckets
default_expense_bucket: 生活费 defaults: # 账户 → 桶(最长前缀匹配) "Expenses:Consume:饮食": 生活费.饮食 "Expenses:Consume:交通": 生活费.交通 "Expenses:Consume:电子": 数码 tracking_buckets: # 跟踪桶:只追踪不预算 - 基金.旅游 - 大额支出 asset_bucket_accounts: # 资产桶(可选) 储蓄: - "Assets:Bank:建设银行"
; 基本用法:budget metadata 2026-06-17 * "京东" "买耳机" budget: "数码" Expenses:Consume:电子 2000 CNY Assets:Bank:工行 -2000 CNY ; 多桶归属(逗号分隔) 2026-06-20 * "京东" "耳机+游戏" budget: "数码, 爱好" Expenses:Consume:电子 2000 CNY Assets:Bank:工行 -2000 CNY ; 金额拆分(budget "桶名900" 尾部数字自动识别) 2026-06-25 * "基金定投" budget: "电子产品900, 旅游900" Assets:Invest:基金 1800 CNY Assets:Bank:工行 -1800 CNY ; 不写 budget → 自动匹配 defaults 前缀 → 回退 default_expense_bucket 2026-06-16 * "工行" "地铁" Expenses:Consume:交通 6 CNY Assets:Bank:工行 -6 CNY
-m, --month <YYYY-MM>
--from/--to <YYYY-MM>
--year <YYYY>
--budgets <FILE>
--config, -c <FILE>
--mappings
--scope <month|cumulative>
--bucket <NAME>
--bucket-view <summary|monthly|detail>
--sort-by <name|planned|actual|remain>
--expand
--compare <YYYY-MM>
--filter <KEYWORD>
--out-dir <DIR>
--csv-pivot
--out-json
--strict
常用:
--year 2026 --expand # 展开看全年 --year 2026 --sort-by remain # 按结余排序 --bucket 基金.旅游 --bucket-view detail # 单桶明细 --year 2026 --compare 2025-12 # 同比 --year 2026 --out-dir ./reports --csv-pivot # 导出
src/ cli.rs CLI 参数 config.rs budgets.yml + config.yml 加载 ledger.rs Beancount 账本解析 budget.rs 预算引擎(映射、聚合、资产追踪) util.rs 基础类型与工具 main.rs 入口 + 集成测试 report/ mod.rs 重导出 shared.rs 共享工具 + 文件导出 text.rs 终端文本报告 md.rs Markdown 报告 csv.rs CSV 导出 json.rs JSON 导出
summary-{range}.md
.txt
buckets-{range}.csv
bucket-{桶名}-{range}.md
asset-locations-{桶名}-{range}.md
pivot-{range}.csv
summary-{range}.json
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
beancount-budget-tool
Beancount 预算分析工具。输入账本 + 预算配置,自动生成预算统计与多格式报告。
快速开始
三样东西:
budgets.ymldefault_monthly模板 + 按月覆盖config.ymlbudget:metadata 标注交易所属桶一行命令:
构建
核心概念
budgets.yml — 纯预算计划
生活费.饮食、生活费.交通YYYY-MM template键)config.yml的tracking_bucketsconfig.yml — 全局配置
Beancount 标注
CLI
-m, --month <YYYY-MM>--from/--to <YYYY-MM>--year <YYYY>--budgets <FILE>--config, -c <FILE>--mappings仍可用)--scope <month|cumulative>--bucket <NAME>--bucket-view <summary|monthly|detail>--sort-by <name|planned|actual|remain>--expand--compare <YYYY-MM>--filter <KEYWORD>--out-dir <DIR>--csv-pivot--out-json--strict常用:
项目结构
输出文件
summary-{range}.md/.txtbuckets-{range}.csvbucket-{桶名}-{range}.mdasset-locations-{桶名}-{range}.mdpivot-{range}.csv(--csv-pivot)summary-{range}.json(--out-json)