合并账单到钱迹
将包含本文件的目录记为 Skill 根目录。始终使用 conda py39 和 Skill 根目录中的 run.py;不要假设 run.py 位于用户的账单目录。
流程
- 确定用户的月份账单目录,让该目录只包含一份支付宝和一份微信账单。忽略
~$Office 临时文件。 - 定位可长期复用的钱迹模板。优先使用月份目录上一级的唯一钱迹文件;用户明确提供其他位置时传入
--qianji。 - 运行
scan,确认程序识别到本月两份账单和一份钱迹模板。 - 运行
prepare,生成 plan 和 decisions。 - 阅读 plan 中的钱迹分类白名单、
needs_review、existing_match、高频分类汇总和排除组。 - 按 分类决策契约 修改 decisions。不得自动确认疑似重复,不得创建钱迹中不存在的分类。
- 运行
export。只有验证报告为PASS且三个检查项全部为true时交付。
$env:PYTHONIOENCODING='utf-8'
conda run --no-capture-output -n py39 python '<skill-dir>\run.py' scan '<monthly-bill-dir>'
conda run --no-capture-output -n py39 python '<skill-dir>\run.py' prepare '<monthly-bill-dir>' --work-dir '<workspace>\runs\2026-07'
conda run --no-capture-output -n py39 python '<skill-dir>\run.py' export '<workspace>\runs\2026-07' --output '<workspace>\output\QianJi_合并_2026-07.csv'
审阅规则
- 部分退款按
原金额 - 退款合计保留一条;按原商品分类,不归入退款。 - 交易关闭、免押下单和全额退款净额 0 不导入,但必须保留在验证血缘中。
- 跨账期且无法匹配原单的退款保留为退款收入。
- 人际转账结合用户历史在关系、恋爱、生活费等已有分类中判断。
- 余额宝转出、基金买卖和信用账户还款属于转账,不伪装成消费。
- 商品词优先于平台源分类,例如骑行装备属于购物,骑行费属于交通。
- 只有核实为钱迹已存在的
existing_match才加入exclude_existing。 - 输出数量少于原始数量不代表漏单;以
coverage_check=true为准。
修改代码
代码需求只使用 .py 文件并在 py39 测试。修改后运行:
$env:PYTHONIOENCODING='utf-8'
conda run --no-capture-output -n py39 python -m py_compile src/qianji_bill_merger/core.py src/qianji_bill_merger/app.py run.py
conda run --no-capture-output -n py39 python -m unittest discover -s tests -v