如何构建预算应用:分类、交易、导入与报表
预算应用会告诉你每个分类计划花了多少、实际花了多少,以及还剩多少。要构建它,你需要账户、分类、每个分类的月度预算、交易,以及几份清晰的报表。决定一切的两个选择是你的预算方法,以及交易如何进入应用:手动输入、从银行的 CSV 文件导入,还是通过银行连接自动获取。先从 CSV 导入开始;它只需很少的工作量和风险,就能带来大部分价值。
本指南讲的是软件层面,不构成理财建议。
先选择预算方法
你选的方法决定了界面和计算方式,因此在写提示词之前先确定它。
| 方法 | 运作方式 | 应用显示的内容 |
|---|---|---|
| 分类限额 | 为每个分类设定月度限额 | 每个分类已花费与限额的对比,带进度条 |
| 零基预算 | 给每一笔收入都分配用途,直到没有未分配的余额 | “待分配”余额;资金可在分类之间转移 |
| 50/30/20 式划分 | 将收入按必需品、想要的东西和储蓄的百分比划分 | 三个桶以及各自的执行情况 |
| 信封法 | 每个分类有固定金额;未花完的钱会结转 | 逐月结转的信封余额 |
分类限额最容易构建,也最容易理解。零基预算和信封法则需要结转逻辑:月末某分类剩余的钱怎么办?某分类超支时又怎么办?
一个预算应用需要什么
页面
- 本月——每个分类的预算、已花费和剩余金额;总收入和总支出。
- 交易——包含日期、收款方、金额、分类和账户的列表;支持筛选和搜索;可快速重新分类。
- 导入——上传 CSV,映射列,预览,确认。
- 预算设置——分类、分组(住房、饮食、交通)以及每月金额。
- 账户——活期账户、储蓄账户、信用卡、现金,并显示余额。
- 报表——按分类随时间变化的支出、收入与支出对比、月度同比。图表选择可参考如何构建仪表盘。
数据
- 账户——名称、类型、货币、期初余额。
- 分类——名称、分组、排序、是否归档。
- 预算——分类、月份、金额。
- 交易——账户、日期、收款方、金额、分类、备注、导入 ID、是否已核对。
- 规则——“收款方包含 TESCO → 食品杂货”,在导入时自动应用。
- 转账——两个相互关联的交易,连接你自己的两个账户,这样把钱转到储蓄账户就不会被计为支出。
权限
个人预算只有一个所有者。家庭预算则需要一个共享的家庭作为数据的所有者,每位伴侣分别登录。无论哪种情况,家庭之外的任何人都绝不能看到任何一行数据。测试时,用第二个互不相关的用户登录来验证。
正确处理金额
财务类应用常常会在一些细小却令人尴尬的地方出错。把这些规则写进你的提示词:
- 以最小货币单位的整数存储金额(分、便士),并附上货币代码。浮点数会产生类似 0.30000000000000004 的总额。
- 符号保持一致。 支出为负,收入为正;或者使用单独的方向字段,但两者不能同时使用。
- 转账不计为支出。 关联转账的双方,并将其排除在分类合计之外。
- 退款应减少原分类的支出,而不是计为收入。
- 月份按用户的时区计算,这样晚上 11 点发生在月末最后一天的交易,就不会被计入下个月。
- 第一版每个预算只使用一种货币。 多币种需要汇率,并且要决定使用哪个汇率。
如何录入交易
| 方式 | 构建工作量 | 说明 |
|---|---|---|
| 手动录入 | 低 | 适合现金,但对其他所有内容来说很繁琐 |
| CSV 导入 | 低到中 | 大多数银行都允许下载交易记录;但每家银行的列各不相同,因此应让用户映射列并保存映射 |
| 银行连接 | 高 | 使用 Plaid 等聚合服务或开放银行 API;需要开发者账户、审批、持续的费用以及严格的安全责任 |
使用 CSV 导入时,要防止重复:存储导入 ID 或日期、金额和描述的指纹,跳过已经见过的行。在导入时应用分类规则,让大多数行到达时就已分好类。
以后如果要添加银行连接,服务商的 API 密钥必须留在服务器上,而且绝不要向用户索要银行密码。参见如何保护 API 密钥安全。
示例首条提示
为两个人构建一个家庭预算网页应用。我们采用分类限额:分类分组(住房、饮食、交通、娱乐、储蓄),每个分类有月度预算金额。首页显示本月情况:每个分类的预算、已花费和剩余,并带进度条,还有总收入和总支出。我们有多个账户(活期、储蓄、信用卡)。交易包含日期、收款方、金额、账户、分类和备注。金额以整数分的形式存储,并附上货币代码。我们自己账户之间的转账是相互关联的成对记录,不计为支出;退款会减少其所在分类的支出。添加 CSV 导入:上传、每家银行映射一次列并记住映射、预览、跳过重复项,并应用收款方规则,例如“包含 TESCO → 食品杂货”。报表:按月的分类支出,以及过去 12 个月的收入与支出对比。我们各自用邮箱和密码登录,并共享一个家庭;其他人无法看到我们的数据。基于数据库,适配手机。
构建步骤
- 分类和带示例数据的本月视图。 用一小组数据手动核对计算。
- 交易列表和快速分类。 让修改分类只需一次点击。
- CSV 导入。 用你自己银行的真实导出文件试试。同一个文件导入两次,确认不会产生重复。
- 规则。 添加能覆盖你大部分支出的十个收款方。
- 转账和退款。 两者都要测试,并核对分类合计。
- 登录和家庭。 参见如何为应用添加登录。
- 报表。 等到有几个月的数据之后再做。
- 安全审查。 在用真实数据信任它之前,按照 AI 构建应用的安全检查清单逐项检查。
常见错误
- 用浮点数处理金额。 应使用整数分。
- 把转账计为支出。 你的储蓄转入会看起来像超支。
- 重复导入。 没有重复检查时,每次重新导入都会让支出翻倍。
- 从银行连接开始。 在确认应用有用之前,投入了大量工作和风险。
- 存储银行密码或银行卡号。 绝对不要。
- 没有导出功能。 人们想把数据导出到电子表格中;添加 CSV 导出。
- 分类过多。 二十个分类就足够了;三百个分类就成了电子表格。
何时现成的预算应用更好
成熟的预算应用提供覆盖众多金融机构的安全银行连接、移动端应用,以及多年积累的各种边缘情况处理。如果自动同步银行数据对你最重要,那么选择其中一款才是务实的做法。
当它们的模型不适合你的方法、你不希望自己的财务数据由另一家公司持有、每月偶尔导入几次 CSV 就已足够,或者你要为某个特定群体构建预算工具(例如俱乐部的司库、小型慈善机构、培训项目)时,就自己构建。如果你的预算目前存放在电子表格里,如何把电子表格变成应用一文讲解了迁移方法。如果是要追踪企业或团队的开支,而不是家庭预算,请参见如何构建费用追踪器。
使用 Mythex 构建
Mythex 可以根据上面的提示词构建这个预算应用:你在聊天中描述它,在实时预览中检查,然后发布。当应用需要时,它会添加一个专用的 Postgres 数据库。登录由你自行提供,任何银行数据服务商也是如此:你需要把其密钥保存为项目密钥,由代理在服务器端接入。Mythex 没有内置的银行连接功能。如需起点,预算仪表盘模板围绕 CSV 导入和差异报表构建。
常见问题
我可以自己构建预算应用吗?
可以。预算应用主要由分类、每月预算金额和交易构成,上面再加报表。AI 应用构建器可以根据描述把它构建出来;主要的决定是你采用的预算方法,以及交易如何进入应用。
预算应用如何连接银行账户?
通常通过 Plaid 之类的银行数据聚合服务,或在有开放银行 API 的地区通过开放银行接口。这些需要开发者账户、在某些情况下需要审批,并要求谨慎的安全措施。导入从银行下载的 CSV 文件要简单得多,是很好的第一版。
预算应用应该如何存储金额?
以最小货币单位的整数形式存储金额,例如分,并同时保存货币代码,而不要使用浮点数。这样在累加大量交易时就不会产生舍入误差。
把我的财务数据放在自己构建的应用里安全吗?
只要满足以下条件就可以:应用需要登录,每个人的数据彼此隔离,密钥存放在服务器上,并通过 HTTPS 运行。完全不要存储银行密码或完整的银行卡号。在添加他人的数据之前,用安全检查清单审查一遍应用。